这是一个借助模型上下文协议(MCP)搭建的服务器,通过国家气象局(NWS)API 提供天气信息,能满足获取美国某州天气警报以及特定位置天气预报等需求。
克隆此仓库到本地。
python -m venv .venv
source .venv/bin/activate # 在 Windows 上,使用 `.venv\Scripts\activate`
使用 uv 安装所需的包:
uv add "mcp[cli]" httpx
服务器使用配置文件 config.py,包含以下设置:
| 属性 | 详情 |
|---|---|
NWS_API_BASE |
国家气象局 API 的基础 URL |
USER_AGENT |
访问 NWS API 时使用的 User-Agent 字符串 |
LOG_LEVEL |
日志级别(例如,“INFO”,“DEBUG”) |
LOG_FORMAT |
日志消息的格式字符串 |
REQUEST_TIMEOUT |
API 请求的超时时间(秒) |
您可以在 config.py 文件中修改这些设置以自定义服务器行为。
要独立运行服务器,需按以下步骤操作:
source .venv/bin/activate # 在 Windows 上,使用 `.venv\Scripts\activate`
python weather.py
天气 MCP 服务器已添加到 Cline 配置中。要在 Cline 中使用它:
get_alerts(state: str):获取美国某州的天气警报(使用两个字母的状态代码,例如“CA”表示加利福尼亚)get_forecast(latitude: float, longitude: float):根据纬度和经度获取特定位置的天气预报在 Cline 中使用的示例:
# 获取加利福尼亚州的警报
result = await mcp.call_tool("weather.get_alerts", state="CA")
print(result)
# 获取旧金山的预报(近似坐标)
result = await mcp.call_tool("weather.get_forecast", latitude=37.7749, longitude=-122.4194)
print(result)
⚠️ 重要提示
在 Cline 中调用 MCP 工具的具体语法可能会因您的 Cline 设置而有所不同。请参考 Cline 文档获取最新使用说明。
服务器改进了 API 请求的错误处理和日志记录功能。如果请求过程中发生错误,服务器会记录错误并返回适当的错误消息。日志将按配置的日志级别和格式输出到控制台。
要运行单元测试:
python -m unittest test_weather.py
这些测试涵盖了 get_alerts 和 get_forecast 工具的基本功能。
手动测试服务器时,您可以使用 MCP 客户端调用提供的工具。以下是一些示例命令:
# 获取加利福尼亚州的警报
result = await mcp.call_tool("weather.get_alerts", state="CA")
print(result)
# 获取旧金山的预报(近似坐标)
result = await mcp.call_tool("weather.get_forecast", latitude=37.7749, longitude=-122.4194)
print(result)