克劳德桌面天气MCP工具
一种MCP(模型上下文协议)工具,使用专门为Claude Desktop设计的OpenWeatherMap API提供实时天气数据、预报和历史天气信息。
教程
有关设置和使用此工具的详细指南,请查看我们全面的Medium教程: 教程:使用克劳德桌面和天气MCP工具访问全球实时天气数据
特性
- 任何位置的实时天气状况
- 天气预报(最多5天)
- 历史天气数据(过去5天)
- 空气质量信息
- 天气警报和警告
- 位置搜索功能
设置
- 确保您安装了Python 3.10或更高版本
- 安装依赖项:
pip install -r requirements.txt- 从获取API密钥 OpenWeatherMap (免费版可用)
- 注:新的API密钥可能需要长达24小时才能激活
- 为API键设置环境变量(推荐方法):
- 创建一个 .env 项目目录中的文件 - 将API密钥添加到文件中:
OPENWEATHER_API_KEY=your_openweathermap_api_key- 添加 .env 到你的 .gitignore 文件以防止提交敏感数据
- 更新
main.py要使用环境变量:
# Add these imports at the top
import os
from dotenv import load_dotenv
# Load environment variables
load_dotenv()
# Replace the API_KEY line with
API_KEY = os.getenv("OPENWEATHER_API_KEY")与Claude Desktop集成
- 通过在MCP配置中添加以下内容,在Claude Desktop中配置MCP设置:
{
"mcpServers": {
"weather-mcp": {
"command": "py",
"args": ["-3.13", "C:\\Path\\To\\Your\\Weather-MCP-ClaudeDesktop\\main.py"]
}
}
}- 将路径替换为main.py文件的完整路径
- 使用以下命令运行服务器:
py -3.13 main.py- 使用Claude Desktop时保持服务器运行
可用工具
1.get_current_weather
获取某个位置的实时天气状况:
{
"location": {
"name": "New York",
"country": "US",
"lat": 40.7128,
"lon": -74.006
},
"temperature": {
"current": 25.6,
"feels_like": 26.2,
"min": 23.4,
"max": 27.8
},
"weather_condition": {
"main": "Clear",
"description": "clear sky",
"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"
}2.获取天气预报
获取某个地点的天气预报:
{
"location": {
"name": "London",
"country": "GB",
"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": "Rain",
"description": "light rain",
"icon": "10d"
},
"wind": {
"speed": 4.2,
"deg": 180
},
"clouds": 75,
"humidity": 82,
"pressure": 1010,
"visibility": 8000,
"pop": 0.4
}
// ... more forecast items
],
"days": 5
}3.获得空气质量
获取某个位置的空气质量数据:
{
"location": {
"name": "Beijing",
"country": "CN",
"lat": 39.9042,
"lon": 116.4074
},
"air_quality_index": 3,
"air_quality_level": "Moderate",
"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"
}4.获取历史天气
获取特定日期的历史天气数据:
{
"location": {
"name": "Paris",
"country": "FR",
"lat": 48.8566,
"lon": 2.3522
},
"date": "2025-03-14",
"temperature": {
"temp": 20.3,
"feels_like": 19.8
},
"weather_condition": {
"main": "Clouds",
"description": "scattered clouds",
"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"
}5.搜索位置
按名称搜索位置:
{
"results": [
{
"name": "Tokyo",
"state": "",
"country": "JP",
"lat": 35.6762,
"lon": 139.6503
},
{
"name": "Tokyo",
"state": "Tokyo",
"country": "JP",
"lat": 35.6895,
"lon": 139.6917
}
// ... more results
]
}6.获取警报
获取某个位置的天气警报:
{
"location": {
"name": "Miami",
"country": "US",
"lat": 25.7617,
"lon": -80.1918
},
"alerts": [
{
"sender": "NWS Miami",
"event": "Heat Advisory",
"start": "2025-03-16T12:00:00",
"end": "2025-03-16T20:00:00",
"description": "Heat index values between 105 and 110 expected",
"tags": ["Extreme temperature value"]
}
// ... more alerts if any
],
"alert_count": 1
}示例查询
您可以向Claude Desktop提出以下问题:
- “纽约现在的天气怎么样?”
- “给我看看伦敦的5天天气预报”
- “今天北京的空气质量怎么样?”
- “3月14日巴黎的天气怎么样?”
- “搜索名为‘东京’的地点”
- “迈阿密有天气警报吗?”
- “比较芝加哥、迈阿密和西雅图的当前天气”
- “给我看看北京、洛杉矶和德里的空气质量比较”
错误处理
所有工具都包含正确的错误处理,如果出现错误,将返回错误消息:
{
"error": "Failed to fetch current weather for InvalidLocation: Location not found"
}故障排除
如果MCP服务器在Claude Desktop中不工作:
- 确保服务器正在运行-启动脚本时应该会看到输出
- 验证设置中的路径是否正确且绝对
- 确保Python 3.10+在您的系统PATH中
- 检查是否安装了所有依赖项
- 尝试重新启动Claude Desktop
- 检查日志中是否有任何错误消息
API常见问题
- API密钥激活:新的OpenWeatherMap API密钥可能需要长达24小时才能激活
- 无效的API密钥错误:如果您收到401错误,请验证您的API密钥是否正确且处于活动状态
- 速率限制:免费套餐每分钟最多可拨打60个电话,在频繁使用时可能会超过此上限
速率限制
此工具使用有速率限制的OpenWeatherMap API。免费套餐每分钟最多可拨打60个电话,这应该足以供个人使用。请注意,API可能会抑制非常频繁的请求。
许可证
MIT许可证
