返回市场
天气-MCP-克劳德桌面

天气-MCP-克劳德桌面

作者:SaintDoresh9 星标更新:2025-03-16

项目介绍

Weather MCP 工具用于 Claude Desktop

这是一个使用 OpenWeatherMap API 提供实时天气数据、天气预报和历史天气信息的 MCP(模型上下文协议)工具,特别设计用于 Claude Desktop。

教程

要详细了解如何设置和使用此工具,请参阅我们的详细 Medium 教程: 教程:使用 Claude Desktop 和 Weather MCP 工具访问全球实时天气数据

功能

  • 任何地点的实时天气状况
  • 天气预报(最多5天)
  • 历史天气数据(最近5天)
  • 空气质量信息
  • 天气警报和警告
  • 地点搜索功能

设置

  1. 确保已安装 Python 3.10 或更高版本

  2. 安装依赖项:

pip install -r requirements.txt
  1. OpenWeatherMap 获取 API 密钥(提供免费层级)

    • 注意:新 API 密钥可能需要长达24小时才能激活
  2. 通过环境变量设置 API 密钥(推荐方法):

    • 在项目目录中创建一个 .env 文件
    • 将您的 API 密钥添加到文件中:
    OPENWEATHER_API_KEY=your_openweathermap_api_key
    
    • .env 添加到 .gitignore 文件中以防止提交敏感数据
  3. 更新 main.py 使用环境变量:

    # 在顶部添加这些导入
    import os
    from dotenv import load_dotenv
    
    # 加载环境变量
    load_dotenv()
    
    # 替换 API_KEY 行为
    API_KEY = os.getenv("OPENWEATHER_API_KEY")
    

与 Claude Desktop 的集成

  1. 在 Claude Desktop 中配置您的 MCP 设置,通过在 MCP 配置中添加以下内容:
{
  "mcpServers": {
    "weather-mcp": {
      "command": "py",
      "args": ["-3.13", "C:\\Path\\To\\Your\\Weather-MCP-ClaudeDesktop\\main.py"]
    }
  }
}
  1. 将路径替换为您 main.py 文件的完整路径
  2. 使用以下命令运行服务器:
py -3.13 main.py
  1. 在使用 Claude Desktop 时保持服务器运行

可用工具

1. get_current_weather

获取某地的实时天气状况:

{
    "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"
}

2. get_weather_forecast

获取某地的天气预报:

{
    "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
}

3. get_air_quality

获取某地的空气质量数据:

{
    "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"
}

4. get_historical_weather

获取特定日期的历史天气数据:

{
    "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"
}

5. search_location

按名称搜索地点:

{
    "results": [
        {
            "name": "东京",
            "state": "",
            "country": "日本",
            "lat": 35.6762,
            "lon": 139.6503
        },
        {
            "name": "东京",
            "state": "东京都",
            "country": "日本",
            "lat": 35.6895,
            "lon": 139.6917
        }
        // ... 更多结果
    ]
}

6. get_weather_alerts

获取某地的天气警报:

{
    "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 提问如下问题:

  • "纽约现在的天气怎么样?"
  • "给我看看伦敦的5天预报"
  • "今天北京的空气质量如何?"
  • "3月14日巴黎的天气怎么样?"
  • "搜索名为'东京'的地点"
  • "迈阿密是否有天气警报?"
  • "比较芝加哥、迈阿密和西雅图的当前天气"
  • "显示北京、洛杉矶和德里的空气质量对比"

错误处理

所有工具都包含适当的错误处理,并会在出现问题时返回错误消息:

{
    "error": "无法获取无效位置的当前天气:未找到该位置"
}

故障排除

如果 MCP 服务器在 Claude Desktop 中不起作用:

  1. 确保服务器正在运行 - 您应该在启动脚本时看到输出
  2. 核实设置中的路径正确且为绝对路径
  3. 确保系统 PATH 中有 Python 3.10+
  4. 检查所有依赖项是否已安装
  5. 尝试重新启动 Claude Desktop
  6. 查看日志以查找任何错误消息

常见 API 问题

  • API 密钥激活:新的 OpenWeatherMap API 密钥可能需要长达24小时才能激活
  • 无效 API 密钥错误:如果您收到 401 错误,请验证您的 API 密钥是否正确且处于活动状态
  • 速率限制:免费层级允许每分钟最多60次调用,在高使用量期间可能会超过此限制

速率限制

此工具使用 OpenWeatherMap API,该 API 具有速率限制。免费层级允许每分钟最多60次调用,这应足以满足个人使用。请注意,非常频繁的请求可能会被 API 限流。

许可证

MIT 许可证