README
🚀 天气 MCP 服务器
这是一个借助国家气象局(NWS)API 来提供天气信息的模型上下文协议(MCP)服务器。它能够让你轻松获取美国特定州的天气警报,以及根据经纬度获取特定位置的天气预报。
🚀 快速开始
本服务器使用国家气象局(NWS)API 提供天气信息。你可以独立运行服务器,也可以将其集成到 Cline 中使用。
✨ 主要特性
- 获取某个美国州的天气警报
- 根据经纬度获取特定位置的天气预报
📦 安装指南
环境要求
- Python 3.10+
- FastMCP
- httpx
安装步骤
- 克隆此仓库
- 设置虚拟环境:
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 时使用的用户代理字符串 |
| LOG_LEVEL | 日志记录的级别(例如 "INFO"、"DEBUG") |
| LOG_FORMAT | 日志消息的格式字符串 |
| REQUEST_TIMEOUT | API 请求的超时时间(以秒为单位) |
你可以根据需要在 config.py 文件中修改这些设置。
使用方法
独立运行服务器
要独立运行服务器:
- 如果尚未激活,激活虚拟环境:
source .venv/bin/activate # 在 Windows 中使用 `.venv\Scripts\activate` - 运行服务器:
python weather.py
与 Cline 集成
天气 MCP 服务器已添加到 Cline 配置中。要在 Cline 内部使用它:
- 确保 Cline 已正确安装并运行。
- 天气 MCP 服务器将作为工具“weather”可用。
- 您可以在 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 文档以获取最新使用说明。
错误处理与日志记录
服务器包含改进的错误处理和日志记录功能。如果在请求期间发生错误,服务器将记录该错误并返回适当的错误消息。日志将以配置的日志级别和格式打印到控制台。
测试
单元测试
要运行单元测试:
python -m unittest test_weather.py
这些测试涵盖了 get_alerts 和 get_forecast 工具的基本功能。
手动测试
要手动测试服务器,您可以使用 MCP 客户端调用提供的工具。以下是一些示例命令:
# 获取加利福尼亚州的警报
result = await mcp.call_tool("get_alerts", state="CA")
print(result)
# 获取旧金山的预报
result = await mcp.call_tool("get_forecast", latitude=37.7749, longitude=-122.4194)
print(result)
🤝 贡献
我们欢迎社区对这个项目的贡献!如果您有任何问题、建议或功能请求,请随时提出问题。
📄 许可证
本项目受 [LICENSE] 许可证的约束。请参考仓库中的许可证文件以获取详细信息。
微信扫一扫