使用说明
MCP 服务器 – Weather MCP Server
这个项目实现了一个使用模型上下文协议(Model Context Protocol)构建的MCP服务器。它遵循了(此处根据上下文可能需要补充具体遵循的原则或标准,但原文未给出,所以翻译时保留原样) “构建MCP服务器”教程 并为您的应用程序提供定制工具。
目录
这会做什么
此服务器提供了MCP工具,MCP客户端(如Claude for Desktop客户端)可以调用这些工具来执行特定操作。
在你所遵循的教程中,示例实现了两种工具: get_alerts(state) 并且 get_forecast(latitude, longitude)。
在你的版本中,你可能根据你的使用场景对工具进行了修改或添加。
先决条件
- Python 3.10 或更高版本(或您使用的任意版本)
- 如所述,需使用MCP SDK版本≥1.2.0(适用于Python)。
- (如适用)
uv用于运行服务器的工具(或等效工具)。 - 网络连接(如果工具需要查询外部API)。
- 要与Claude for Desktop进行集成:请确保已正确安装并配置客户端。
安装
-
克隆此存储库:
git clone <repo-url> cd <repo-name> -
创建并激活一个虚拟环境:
source .venv/bin/activate # (on macOS/Linux) # or on Windows: .venv\Scripts\activate -
安装依赖项:
pip install mcp[cli] httpx
使用方法
启动MCP服务器:
uv run <server_file>.py
或者如果你不使用UV,那么只需:
python <server_file>.py
服务器将开始监听MCP主机消息(通过stdio或HTTP,具体取决于您的传输方式)。
如果你正在将Claude与桌面版集成,请按以下方式更新你的claude_desktop_config.json文件:
{
"mcpServers": {
"<server-name>": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/<server-dir>",
"run",
"<server_file>.py"
]
}
}
}
然后重新启动桌面版的Claude以应用此配置。
工具/终端点
以下是服务器提供的工具:
获取警报(state: str) -> str
获取美国某州(2个字母代码,例如“CA”、“NY”)的天气警报。 如果存在警报,则返回格式化的警报字符串;如果不存在,则返回一条信息性消息。
获取天气预报(纬度: 浮点数, 经度: 浮点数) -> 字符串
获取给定纬度和经度(仅限美国,基于外部API)的天气预报。 返回一个可读的字符串,总结接下来几个预报时段的情况。
(如果您添加了额外工具,请修改此部分。)
建筑及其工作原理
当客户端发送请求时:
-
客户端将您的问题发送给大型语言模型(LLM)主机。
-
主机根据MCP工具元数据选择要调用的工具(或工具集)。
-
MCP服务器通过JSON-RPC(或HTTP)接收工具调用并执行它。
-
结果返回给主机,主机随后利用大型语言模型(LLM)为用户生成自然语言的回复。 (此流程基于教程中的“幕后发生了什么”部分。)
日志记录与最佳实践
-
对于使用stdio传输的服务器(在Python中:避免使用print()语句),不要将输出写入stdout,因为这可能会破坏JSON-RPC消息。请改用将日志写入stderr或文件的日志库。
-
工具名称应遵循MCP指定的命名规范。
-
验证输入并优雅地处理错误(例如,当外部API失败或返回意外数据时)。
故障排除
-
如果服务器未在客户端(例如,桌面版的Claude)中显示:
-
检查你的JSON配置语法。
-
确保您的服务器脚本路径是绝对路径。
-
确保您完全退出并重新启动客户端应用程序。
-
-
如果工具调用静默失败:
- 检查客户端日志(例如,在 macOS 上位于 ~/Library/Logs/Claude/ 目录下的 mcp*.log 文件)。
- 验证您的服务器是否能够无启动错误地运行。
- 确认您的网络/API访问是否正常(例如,如果使用的是外部天气API)。
-
如果你在美国以外的地方工作,且示例API仅支持美国地区:请考虑切换到全球API或相应调整逻辑。