天气--增强型MCP天气服务器
一个功能丰富的MCP(模型上下文协议)服务器,使用NWS(国家气象局)公共API提供全面的天气数据。包括输入验证、错误处理、地理编码和独特的天气比较功能。
快速开始
- 安装uv(macOS/Linux):
curl -LsSf https://astral.sh/uv/install.sh | sh
# restart your terminal- 创建项目、venv并安装deps:
uv init weather
cd weather
uv venv
source .venv/bin/activate
uv add "mcp[cli]" httpx- 运行服务器:
uv run main.py
# or
uv run weather.py可用工具
服务器提供以下MCP工具:
1. get_alerts(state: str)
获取美国某个州的活跃天气警报。
- 输入:两个字母的美国州代码(例如,“CA”、“NY”、“TX”)
- 特性:验证状态代码,提供详细的警报信息
2. get_forecast(latitude: float, longitude: float)
使用坐标获取某个位置的详细天气预报。
- 输入:纬度(-90至90)和经度(-180至180)
- 特性:10期预报(5天),包括湿度和降水概率
3. get_forecast_by_city(city_name: str)
按城市名称获取天气预报(无需坐标!)。
- 输入:城市名称(例如,“旧金山”、“纽约”、“芝加哥”)
- 特性:自动地理编码,适用于城市名称
4. get_current_conditions(latitude: float, longitude: float)
获取实时当前天气状况。
- 输入:纬度和经度
- 特性:温度、湿度、风、压力、能见度等
5. compare_weather(location1: str, location2: str)
并排比较两个地点的天气状况。
- 输入:两个地点(城市名称或“lat,lon”格式)
- 特性:并排比较,温差分析,支持城市名称和坐标
特性
- ✅ 输入验证:验证状态代码和坐标范围
- ✅ 更好的错误处理:具体、有用的错误消息
- ✅ 地理编码支持:使用Open-Meteo地理编码API按城市名称搜索
- ✅ 当前状况:实时天气观测
- ✅ 增强预测:更详细的信息,包括湿度和降水量
- ✅ 天气比较:比较两个位置的独特功能
- ✅ 位置检测:自动检测并显示城市/州名称
文件
weather.py--使用所有工具实现主MCP服务器main.py--导入和运行服务器的入口点
备注
- Python 3.11+ 必需(参见
pyproject.toml) - NWS覆盖范围:NWS API仅涵盖美国领土。国际地点将不起作用。
- 运输:服务器默认使用stdio传输
- MCP客户端:使用克劳德桌面,
mcpCLI或其他MCP客户端进行连接 - 地理编码:城市名称搜索使用Open-Meteo的免费地理编码API(无需API密钥)
示例用法
连接到MCP客户端后,您可以使用以下工具:
# Get alerts for California
get_alerts("CA")
# Get forecast by city name
get_forecast_by_city("San Francisco")
# Get current conditions
get_current_conditions(37.7749, -122.4194)
# Compare weather between two cities
compare_weather("New York", "Los Angeles")许可证
Apache许可证2.0——请参阅 LICENSE.替换中的占位符年份/名称 LICENSE 如果需要的话。
______________________________________________________________________
