我们将构建什么
我们将构建一个对外提供两个工具的服务端:get_alerts
和 get_forecast
。之后我们将该服务端连接到MCP主机(本例中为桌面版Claude):

服务器可以连接到任何客户端。我们在这里选择Claude for Desktop是为了简化操作,但我们还提供了构建您自己的客户端的指南以及此处列出的其他客户端。
核心 MCP 概念
MCP 服务器可提供三种主要能力类型: 本教程将主要关注工具。让我们开始构建我们的天气服务器!你可以在这里找到我们将要构建的完整代码。请确保随后重启终端,以保证能够识别接下来让我们深入搭建你的服务器。FastMCP类利用Python类型提示和文档字符串自动生成工具定义,使得创建和维护MCP工具变得简单。您的服务器已准备就绪!运行 首先,请确保您已安装Claude for Desktop。您可在此处安装最新版本。 若您已安装Claude for Desktop,请确保它已更新至最新版本。我们需要为你想要使用的任何MCP服务器配置Claude桌面版。为此,请在文本编辑器中打开你的Claude桌面应用配置文件:然后,您需要在 这意味着Claude for Desktop:
预备知识
本快速入门指南假设您熟悉以下内容:- Python
- 如Claude这类的大语言模型
MCP 服务器中的日志记录
在实现MCP服务器时,请注意处理日志的方式:对于基于STDIO的服务器: 永远不要写入标准输出(stdout)。这包括:print()
Python 中的输出语句console.log()
在 JavaScript 中fmt.Println()
在 Go 语言中- 其他语言的类似标准输出功能
最佳实践
- 使用记录日志的库将日志写入stderr或文件。
快速示例
系统需求
- 已安装 Python 3.10 或更高版本。
- 你必须使用 Python MCP SDK 1.2.0 或更高版本。
设置您的环境
首先,让我们安装uv
并设置我们的 Python 项目和环境:uv
命令。现在,让我们创建并设置我们的项目:构建您的服务器
导入包并设置实例
将这些添加到你的weather.py
文件顶部:辅助函数
接下来,我们需要为查询和格式化国家气象服务API的数据添加辅助函数:实现工具执行
工具执行处理器负责实际执行每个工具的逻辑。让我们添加它:运行服务器
最后,让我们初始化并运行服务器:uv run weather.py
来启动 MCP 服务器,该服务器将监听来自 MCP 主机的消息。现在让我们从一个现有的MCP主机,即Claude for Desktop,来测试你的服务器。使用桌面版Claude测试您的服务器
Claude for Desktop 目前尚未在 Linux 上提供。Linux 用户可以继续学习构建客户端教程,以构建一个 MCP 客户端来连接到我们刚刚构建的服务端。
~/Library/Application Support/Claude/claude_desktop_config.json
。如果文件不存在,请确保创建该文件。例如,如果您安装了 VS Code:mcpServers
键中添加您的服务器。只有在至少配置正确一个服务器的情况下,MCP UI元素才会出现在Claude桌面版中。在此案例中,我们将按如下方式添加单一天气服务器:您可能需要在
command
字段中填写uv
可执行文件的完整路径。在macOS/Linux上可以通过运行which uv
,或在Windows上运行where uv
来获取此路径。确保传入服务器的绝对路径。您可以通过在macOS/Linux上运行
pwd
或在Windows命令提示符中运行cd
来获取此路径。在Windows上,请记住在JSON路径中使用双反斜杠(\\
)或正斜杠(/
)。- 有一个名为“weather”的MCP服务器
- 通过运行
uv --directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/weather run weather.py
来启动它
测试命令
让我们确认桌面版Claude是否识别了我们weather服务器中公开的这两个工具。您可以通过查找"搜索与工具"

- 萨克拉门托的天气怎么样?
- 德克萨斯州有哪些活跃的天气警报?


由于这是美国国家气象局,查询功能仅适用于美国地点。
幕后发生了什么
当你提出一个问题时:- 客户端将您的问题发送到克劳德
- Claude分析可用的工具并决定使用哪一个
- 客户端通过MCP服务器执行选定的工具
- 结果被发送回Claude
- Claude 构思了一个自然语言回应
- 响应已显示给您!
故障排除
Claude桌面集成问题
Claude桌面集成问题
从 Claude 桌面版获取日志Claude.app 中与MCP相关的日志记录会写入到日志文件中,位置在 克劳德中没有显示服务器
~/Library/Logs/Claude
:mcp.log
将包含关于MCP连接和连接失败的一般日志记录信息。- 名为
mcp-server-SERVERNAME.log
的文件将包含来自指定服务器的错误(stderr)日志记录。
- 检查您的
claude_desktop_config.json
文件语法 - 确保你的项目路径是绝对路径而不是相对路径
- 完全重新启动Claude桌面应用程序
- 检查Claude的日志以查找错误
- 验证服务器构建和运行无报错
- 尝试重新启动Claude桌面版
天气API问题
天气API问题
错误:未能获取网格点数据通常意味着以下情况之一:
- 坐标位于美国境外
- NWS API 存在问题
- 你被限制了访问频率
- 确保您使用的是美国坐标
- 请求之间增加少量延迟
- 查看NWS API状态页面
如需更高级的故障排除,请查看我们的指南 Debugging MCP