使用说明
气象MCP服务器
这是一个模型上下文协议(MCP)服务器,使用美国国家气象局(NWS)API提供天气信息。
特性
- 获取美国某个州的天气警报
- 获取特定位置的天气预报(使用纬度和经度)
需求
- Python 3.10+
- FastMCP
- httpx
安装
- 克隆此存储库
- 设置虚拟环境:
python -m venv .venv source .venv/bin/activate # On Windows, use `.venv\Scripts\activate` - 使用uv安装所需的软件包:
uv add "mcp[cli]" httpx
配置
服务器使用配置文件 config.py 具有以下设置:
NWS_API_BASE:美国国家气象局API的基本URLUSER_AGENT:向NWS API发出请求时使用的User-Agent字符串LOG_LEVEL:日志记录级别(例如,“INFO”、“DEBUG”)LOG_FORMAT:日志消息的格式字符串REQUEST_TIMEOUT:API请求的超时时间(秒)
您可以在中修改这些设置 config.py 文件以自定义服务器行为。
用法
独立运行服务器
要独立运行服务器,请执行以下操作:
- 激活虚拟环境(如果尚未激活):
source .venv/bin/activate # On Windows, use `.venv\Scripts\activate` - 运行服务器:
python weather.py
与Cline一起使用
天气MCP服务器已添加到Cline配置中。要在Cline中使用它:
-
确保Cline已正确设置并运行。
-
天气MCP服务器将作为一个名为“天气”的工具提供。
-
您可以在Cline中使用以下工具:
一
get_alerts(state: str):获取美国某个州的天气警报(使用两个字母的州代码,例如“CA”表示加利福尼亚州) bget_forecast(latitude: float, longitude: float):获取特定位置的天气预报
Cline中的示例用法:
# Get alerts for California
result = await mcp.call_tool("weather.get_alerts", state="CA")
print(result)
# Get forecast for San Francisco (approximate coordinates)
result = await mcp.call_tool("weather.get_forecast", latitude=37.7749, longitude=-122.4194)
print(result)
注意:调用MCP工具的确切语法可能因您的Cline设置而异。有关最新的使用说明,请参阅Cline文档。
错误处理和日志
该服务器包括改进的API请求错误处理和日志记录。如果在请求过程中发生错误,服务器将记录错误并返回相应的错误消息。日志将以配置的日志级别和格式打印到控制台。
测试
单元测试
要运行单元测试,请执行以下操作:
python -m unittest test_weather.py
这些测试涵盖了 get_alerts 和 get_forecast 工具。
手动测试
要手动测试服务器,您可以使用MCP客户端调用提供的工具。以下是一些示例命令:
# Get alerts for California
result = await mcp.call_tool("get_alerts", state="CA")
print(result)
# Get forecast for San Francisco (approximate coordinates)
result = await mcp.call_tool("get_forecast", latitude=37.7749, longitude=-122.4194)
print(result)
贡献
欢迎投稿!请随时提交拉取请求。
许可证
该项目是开源的,可在 MIT许可证.