天气预测服务

一个基于Model Context Protocol (MCP)的服务器,提供美国国家气象局API的天气预测和警报服务。

  • by cherryjain-msft
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 cherryjain-msft/mcp-server

使用说明

气象MCP服务器

模型上下文协议(MCP)服务器,使用美国国家气象局API提供天气预报和警报。

特性

此MCP服务器公开了两个主要工具:

  • 获取警报:获取美国任何州的活跃天气警报
  • 获取预测:获取任何位置(纬度/经度)的详细天气预报

先决条件

  • Python 3.10或更高版本
  • uv包管理器(推荐)或pip
  • MCP兼容客户端(例如,桌面版的Claude)

安装

1.安装uv(推荐)

Windows(PowerShell):

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

macOS/Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

2.建立项目

导航到天气目录并安装依赖项:

cd weather
uv venv
.venv\Scripts\Activate.ps1  # Windows
# source .venv/bin/activate  # macOS/Linux
uv sync

或者,使用pip:

cd weather
pip install -r requirements.txt

运行服务器

独立测试

要直接测试服务器,请执行以下操作:

# Using uv (recommended)
uv run weather.py

# Or using Python directly
python weather.py

服务器将启动并通过STDIO监听MCP请求。

与Claude for Desktop集成

  1. 安装桌面版Claude 从 claude.ai/下载

  2. 为桌面配置Claude 通过编辑配置文件:

    窗户: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json

  3. 添加天气服务器配置:

    {
      "mcpServers": {
        "weather": {
          "command": "uv",
          "args": [
            "--directory",
            "C:\\ABSOLUTE\\PATH\\TO\\YOUR\\weather",
            "run",
            "weather.py"
          ]
        }
      }
    }
    

    重要提示: 替换 C:\\ABSOLUTE\\PATH\\TO\\YOUR\\weather 带有天气目录的实际绝对路径。

    如果你没有uv,你可以直接使用Python:

    {
      "mcpServers": {
        "weather": {
          "command": "python",
          "args": [
            "C:\\ABSOLUTE\\PATH\\TO\\YOUR\\weather\\weather.py"
          ]
        }
      }
    }
    
  4. 重新启动桌面版的Claude

  5. 测试集成 通过向克劳德提出以下问题:

    • “萨克拉门托的天气预报是什么?”(需要纬度/经度)
    • “德克萨斯州的活跃天气警报是什么?”
    • “获取加利福尼亚州的天气警报”

使用示例

一旦配置了Claude for Desktop,您就可以使用自然语言与天气工具进行交互:

天气警报

  • “佛罗里达州有天气警报吗?”
  • “显示德克萨斯州的活动天气警报”
  • “加利福尼亚州有哪些天气预警?”

天气预报

  • “纬度38.7749,经度-122.4194的预报是什么?”(旧金山)
  • “获取坐标40.7128,-74.0060的天气预报”(纽约)

api参考

get_alerts(状态:str)

获取美国某个州的活跃天气警报。

参数:

  • state:两个字母的美国州代码(例如,“CA”、“NY”、“TX”)

退货: 带有警报详细信息的格式化字符串,包括事件类型、区域、严重性、描述和说明。

get_forecast(纬度:float,经度:float)

获取特定位置的天气预报。

参数:

  • latitude:纬度坐标(浮动)
  • longitude:经度坐标(浮动)

退货: 带有预测期的格式化字符串,包括温度、风和详细的预测信息。

故障排除

常见问题

  1. 服务器未在Claude for Desktop中显示:

    • 验证配置文件中的绝对路径
    • 确保uv在您的PATH中或使用uv.exe的完整路径
    • 配置更改后重新启动Claude for Desktop
    • 检查配置JSON是否有效
  2. “无法获取”错误:

    • 确保您有互联网连接
    • 美国国家气象局API仅适用于美国地区
    • 检查坐标是否有效(纬度:-90到90,经度:-180到180)
  3. 导入错误:

    • 验证是否安装了所有依赖项: uv sync 或 pip install httpx mcp[cli]
    • 确保你使用的是Python 3.10或更高版本

日志记录

服务器使用stderr进行日志记录,以避免干扰MCP协议。如果需要调试:

  1. 添加写入stderr或文件的日志语句
  2. 从不使用 print() 主服务器代码中的语句,因为它们会破坏STDIO传输

发展

服务器是使用以下方式构建的:

  • FastMCP:简化的MCP服务器框架
  • httpx:API请求的异步HTTP客户端
  • 美国国家气象局API:免费天气数据源

要修改或扩展服务器,请执行以下操作:

  1. 编辑 weather.py
  2. 使用添加新工具 @mcp.tool() 装饰器
  3. 遵循MCP错误处理和响应格式的最佳实践

许可证

这个项目是开源的,可以在MIT许可证下使用。