For Server Developers
环境设置
安装
uv:运行curl -LsSf https://astral.sh/uv/install.sh | sh,重启终端。初始化项目:
uv init weather,进入目录,设置虚拟环境:uv venv并激活source .venv/bin/activate。安装依赖:
uv add "mcp[cli]" httpx,创建服务器文件:touch weather.py。
服务器构建
导入必要的包,初始化
FastMCP("weather"),设置 NWS API 常量。实现辅助函数如
make_nws_request和format_alert,处理 API 请求和数据格式化。定义工具:
get_alerts根据州代码获取警报,get_forecast根据经纬度获取5期预测。运行服务器:添加
if __name__ == "__main__": mcp.run(transport='stdio'),用uv run weather.py启动。
测试与配置
Mac 用户:安装 Claude for Desktop (下载链接),在
~/Library/Application Support/Claude/claude_desktop_config.json配置服务器,测试命令如“萨克拉门托的天气如何?”。Linux 用户:Claude for Desktop 不可用,请参考 客户端构建指南。
意外细节:配置需使用绝对路径,Linux 用户需额外构建客户端,增加了跨平台复杂性。
详细报告
引言
Model Context Protocol (MCP) 是一个框架,允许构建服务器以提供工具和资源,供 AI 模型如 Claude 使用。本指南详细介绍了如何构建一个天气服务器,专注于提供 get-alerts 和 get-forecast 工具,通过 National Weather Service (NWS) API 获取天气警报和预测数据。指南适合有 Python 和 LLM(如 Claude)基础的用户,需满足 Python 3.10 或更高版本,以及 Python MCP SDK 1.2.0 或更高版本的要求。
前提条件与系统需求
熟悉 Python 和 LLM(如 Claude):用户需具备基础编程知识,了解 LLM 的工作原理。
系统需求:
Python 3.10 或更高版本
Python MCP SDK 1.2.0 或更高版本
以下是详细的设置和实现步骤:
环境设置
为了确保环境正确配置,我们需要安装 uv 工具(用于项目管理和虚拟环境),并初始化项目。以下是具体步骤:
安装 uv
`curl -LsSf https://astral.sh/uv/install.sh
创建并设置项目
uv init weather,cd weather,uv venv,激活虚拟环境 source .venv/bin/activate
安装依赖
uv add "mcp[cli]" httpx
创建服务器文件
touch weather.py
uv 是一个现代化工具,简化了 Python 项目的初始化和依赖管理。虚拟环境确保项目依赖隔离,避免冲突。
服务器构建
服务器使用 FastMCP 类构建,需实现辅助函数和工具。以下是详细代码和说明:
导入与设置
首先,导入必要的包并初始化服务器:
FastMCP是 MCP SDK 提供的高效服务器类,weather是服务器名称。NWS_API_BASE和USER_AGENT用于后续 API 请求。
辅助函数
实现两个辅助函数,处理 API 请求和数据格式化:
make_nws_request异步请求 NWS API,设置超时为30秒,处理异常返回 None。format_alert将警报数据格式化为易读的字符串,包括事件、区域、严重程度等。
工具实现
定义两个工具,分别处理天气警报和预测:
get_alerts:根据州代码获取活跃天气警报。
接受州代码(如 CA, NY),请求 NWS API 获取活跃警报,格式化后返回。
get_forecast:根据经纬度获取天气预测,显示未来5期。
接受经纬度,获取预测网格点,显示温度、风速和详细预测。
运行服务器
在 weather.py 文件末尾添加:
运行服务器命令:
这将启动服务器,使用标准输入输出传输协议。
测试与 Claude for Desktop 配置
为了测试服务器,我们需要与 Claude for Desktop 集成。以下是具体步骤:
安装:
从 下载链接 安装最新版本,确保更新到最新。
配置(Mac 用户):
找到配置文件
~/Library/Application Support/Claude/claude_desktop_config.json,如果不存在则创建。在
mcpServers下添加服务器配置,例如:替换路径为实际项目目录,使用
which uv获取uv的完整路径。
测试:
启动 Claude for Desktop,寻找锤子图标查看可用工具。
测试命令如“萨克拉门托的天气如何?”或“德州当前天气警报是什么?”(仅限美国地点)。
Linux 用户注意事项:
Claude for Desktop 在 Linux 上不可用,请参考 客户端构建指南 构建 MCP 客户端。
故障排除
如果服务器未被 Claude for Desktop 识别,检查以下内容:
确保配置文件路径正确,
mcpServers配置无误。运行
uv run weather.py检查服务器输出。保存配置文件后重启 Claude for Desktop。
附加资源
本指南提供了从环境设置到测试的详细步骤,确保用户能够成功构建和使用 MCP 天气服务器,特别注意了跨平台差异和配置细节。
关键引用
最后更新于