我们要构建什么
目前许多 LLM(包括 Claude)都没有获取天气预报和严重天气警报的能力。让我们使用 MCP 来解决这个问题! 我们将构建一个暴露两个工具的服务器:get-alerts
和 get-forecast
。然后我们将把服务器连接到一个 MCP 宿主环境(在本例中是 Claude for Desktop):


为什么选择 Claude for Desktop 而不是 Claude.ai?
为什么选择 Claude for Desktop 而不是 Claude.ai?
因为服务器是本地运行的,MCP 目前只支持桌面宿主环境。远程宿主环境正在积极开发中。
MCP 核心概念
MCP 服务器可以提供三种主要类型的功能:- 资源(Resources):可以被客户端读取的类文件数据(如 API 响应或文件内容)
- 工具(Tools):可以被 LLM 调用的函数(需要用户批准)
- 提示(Prompts):帮助用户完成特定任务的预写模板
让我们开始构建我们的天气服务器!你可以在这里找到我们将要构建的完整代码。安装完成后,请确保重启终端以确保 现在让我们深入构建服务器。FastMCP 类使用 Python 类型提示和文档字符串自动生成工具定义,使创建和维护 MCP 工具变得容易。你的服务器已经完成!运行 首先,确保你已安装 Claude for Desktop。你可以在这里安装最新版本。如果你已经安装了 Claude for Desktop,请确保它已更新到最新版本。我们需要为你想要使用的 MCP 服务器配置 Claude for Desktop。为此,请在文本编辑器中打开你的 Claude for Desktop 应用程序配置文件,路径为 然后你需要在 这告诉 Claude for Desktop:
前置知识
本快速入门假设你熟悉:- Python
- LLM(如 Claude)
系统要求
- 安装 Python 3.10 或更高版本
- 必须使用 Python MCP SDK 1.2.0 或更高版本
设置环境
首先,让我们安装uv
并设置 Python 项目和环境:uv
命令可以被正常使用。现在,让我们创建并设置我们的项目:构建服务器
导入包和设置实例
将以下内容添加到weather.py
的顶部:辅助函数
接下来,让我们添加用于查询和格式化国家气象服务 API 数据的辅助函数:实现工具执行
工具执行处理器负责实际执行每个工具的逻辑。让我们添加它:运行服务器
最后,让我们初始化并运行服务器:uv run weather.py
来确认一切正常工作。现在让我们从一个现有的 MCP 宿主环境 Claude for Desktop 测试你的服务器。使用 Claude for Desktop 测试服务器
Claude for Desktop 目前尚未在 Linux 上提供。Linux 用户可以继续学习构建客户端教程,以构建一个连接到我们刚刚构建的服务器的 MCP 客户端。
~/Library/Application Support/Claude/claude_desktop_config.json
。如果该文件不存在,请创建它。例如,如果你安装了 VS Code:mcpServers
键中添加你的服务器。只有在至少正确配置了一个服务器的情况下,MCP UI 元素才会在 Claude for Desktop 中显示。在这种情况下,我们将添加我们的单个天气服务器,如下所示:Python
你可能需要在
command
字段中填写 uv
可执行文件的完整路径。你可以通过在 MacOS/Linux 上运行 which uv
或在 Windows 上运行 where uv
来获取。确保你传入服务器的绝对路径。
- 有一个名为 “weather” 的 MCP 服务器
- 通过运行
uv --directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/weather run weather
来启动它
使用命令测试
让我们确保 Claude for Desktop 能够识别我们在weather
服务器中暴露的两个工具。你可以通过查找锤子 

- Sacramento 的天气如何?
- Texas 有哪些活跃的天气警报?


由于这是美国国家气象服务,查询只适用于美国地区。
幕后发生了什么
当你提出问题时:- 客户端将你的问题发送给 Claude
- Claude 分析可用的工具并决定使用哪个工具
- 客户端通过 MCP 服务器执行所选工具
- 结果返回给 Claude
- Claude 形成自然语言响应
- 响应显示给你!
故障排除
Claude桌面版集成问题
Claude桌面版集成问题
获取Claude桌面版日志Claude.app与MCP相关的日志记录在服务器未在Claude中显示
~/Library/Logs/Claude
目录下:mcp.log
包含有关MCP连接和连接失败的一般日志。- 名为
mcp-server-SERVERNAME.log
的文件包含指定服务器的错误(stderr)日志。
- 检查你的
claude_desktop_config.json
文件语法 - 确保项目路径是绝对路径而不是相对路径
- 完全重启Claude桌面版
- 检查Claude的日志是否有错误
- 验证你的服务器构建和运行是否无错误
- 尝试重启Claude桌面版
天气API问题
天气API问题
错误:无法获取网格点数据这通常意味着:
- 坐标在美国境外
- NWS API出现问题
- 你被限制请求频率
- 验证你使用的是美国坐标
- 在请求之间添加小延迟
- 检查NWS API状态页面
要获取更高级的故障排除方法,请查看我们的MCP调试指南