这是一个使用 OpenWeatherMap API 提供实时天气数据、天气预报和历史天气信息的 MCP(模型上下文协议)工具,特别设计用于 Claude Desktop。
要详细了解如何设置和使用此工具,请参阅我们的详细 Medium 教程: 教程:使用 Claude Desktop 和 Weather MCP 工具访问全球实时天气数据
确保已安装 Python 3.10 或更高版本
安装依赖项:
pip install -r requirements.txt
从 OpenWeatherMap 获取 API 密钥(提供免费层级)
通过环境变量设置 API 密钥(推荐方法):
.env 文件OPENWEATHER_API_KEY=your_openweathermap_api_key
.env 添加到 .gitignore 文件中以防止提交敏感数据更新 main.py 使用环境变量:
# 在顶部添加这些导入
import os
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
# 替换 API_KEY 行为
API_KEY = os.getenv("OPENWEATHER_API_KEY")
{
"mcpServers": {
"weather-mcp": {
"command": "py",
"args": ["-3.13", "C:\\Path\\To\\Your\\Weather-MCP-ClaudeDesktop\\main.py"]
}
}
}
main.py 文件的完整路径py -3.13 main.py
获取某地的实时天气状况:
{
"location": {
"name": "纽约",
"country": "美国",
"lat": 40.7128,
"lon": -74.006
},
"temperature": {
"current": 25.6,
"feels_like": 26.2,
"min": 23.4,
"max": 27.8
},
"weather_condition": {
"main": "晴朗",
"description": "晴空万里",
"icon": "01d"
},
"wind": {
"speed": 3.6,
"deg": 220
},
"clouds": 5,
"humidity": 65,
"pressure": 1015,
"visibility": 10000,
"sunrise": "2025-03-16T06:12:34",
"sunset": "2025-03-16T18:04:23",
"timestamp": "2025-03-16T14:30:00"
}
获取某地的天气预报:
{
"location": {
"name": "伦敦",
"country": "英国",
"lat": 51.5074,
"lon": -0.1278
},
"forecast": [
{
"datetime": "2025-03-16T15:00:00",
"temperature": {
"temp": 18.2,
"feels_like": 17.8,
"min": 17.5,
"max": 19.1
},
"weather_condition": {
"main": "雨",
"description": "小雨",
"icon": "10d"
},
"wind": {
"speed": 4.2,
"deg": 180
},
"clouds": 75,
"humidity": 82,
"pressure": 1010,
"visibility": 8000,
"pop": 0.4
}
// ... 更多预报项
],
"days": 5
}
获取某地的空气质量数据:
{
"location": {
"name": "北京",
"country": "中国",
"lat": 39.9042,
"lon": 116.4074
},
"air_quality_index": 3,
"air_quality_level": "中等",
"components": {
"co": 250.34,
"no": 0.5,
"no2": 15.2,
"o3": 140.8,
"so2": 5.1,
"pm2_5": 8.2,
"pm10": 12.3,
"nh3": 0.7
},
"timestamp": "2025-03-16T14:30:00"
}
获取特定日期的历史天气数据:
{
"location": {
"name": "巴黎",
"country": "法国",
"lat": 48.8566,
"lon": 2.3522
},
"date": "2025-03-14",
"temperature": {
"temp": 20.3,
"feels_like": 19.8
},
"weather_condition": {
"main": "云",
"description": "散云",
"icon": "03d"
},
"wind": {
"speed": 2.8,
"deg": 150
},
"clouds": 45,
"humidity": 60,
"pressure": 1012,
"visibility": 10000,
"sunrise": "2025-03-14T06:30:45",
"sunset": "2025-03-14T18:15:22",
"timestamp": "2025-03-14T12:00:00"
}
按名称搜索地点:
{
"results": [
{
"name": "东京",
"state": "",
"country": "日本",
"lat": 35.6762,
"lon": 139.6503
},
{
"name": "东京",
"state": "东京都",
"country": "日本",
"lat": 35.6895,
"lon": 139.6917
}
// ... 更多结果
]
}
获取某地的天气警报:
{
"location": {
"name": "迈阿密",
"country": "美国",
"lat": 25.7617,
"lon": -80.1918
},
"alerts": [
{
"sender": "迈阿密 NWS",
"event": "高温警告",
"start": "2025-03-16T12:00:00",
"end": "2025-03-16T20:00:00",
"description": "预计气温指数在105至110之间",
"tags": ["极端温度值"]
}
// ... 如果有更多警报
],
"alert_count": 1
}
您可以向 Claude Desktop 提问如下问题:
所有工具都包含适当的错误处理,并会在出现问题时返回错误消息:
{
"error": "无法获取无效位置的当前天气:未找到该位置"
}
如果 MCP 服务器在 Claude Desktop 中不起作用:
此工具使用 OpenWeatherMap API,该 API 具有速率限制。免费层级允许每分钟最多60次调用,这应足以满足个人使用。请注意,非常频繁的请求可能会被 API 限流。
MIT 许可证