返回市场
MCP服务器天气

MCP服务器天气

作者:msremigio2 星标更新:2025-08-17

项目介绍

MCP Weather Server

一个基于Model Context Protocol (MCP)的服务器,提供美国各地的实时天气警报和预报。使用FastMCP构建,并由国家气象服务(NWS)API驱动。

作者

马特乌斯·雷米吉奥
联系:matheus.remido@gmail.com

🌟 特性

  • 天气警报:获取美国任意州的当前天气警报
  • 天气预报:检索特定坐标下的详细5天天气预报
  • 实时数据:由官方国家气象服务API提供支持
  • MCP集成:无缝集成到兼容MCP的客户端和AI助手
  • 异步支持:使用async/await构建以实现最佳性能
  • 错误处理:具有优雅回退机制的强大错误处理

🚀 快速开始

预备条件

  • Python 3.13或更高版本
  • uv 包管理器(推荐)
  • 兼容MCP的客户端(如Cursor IDE)

安装

  1. 克隆仓库

    git clone https://github.com/msremigio/mcp-server-weather.git
    cd mcp_weather
    
  2. 使用uv安装依赖

    uv sync
    
  3. 激活虚拟环境

    uv shell
    

运行服务器

uv run weather.py

服务器将启动并通过stdio传输监听MCP协议消息。

🔧 配置

MCP客户端配置

在您的MCP客户端配置中添加以下内容(例如,mcp.json):

{
  "mcpServers": {
    "mcp_weather": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/your/mcp_weather/project",
        "run",
        "weather.py"
      ]
    }
  }
}

注意:更新--directory路径以匹配您的实际项目位置。

📚 API参考

可用工具

1. 获取天气警报 (get_alerts)

检索特定美国州的当前天气警报。

参数:

  • state (str): 两个字母的州缩写(例如,“CA”,“NY”,“TX”)

返回:

  • 包含指定州所有活跃警报的格式化字符串

示例响应:

事件:严重雷暴警告
区域:北加州
严重程度:严重
描述:可能产生大冰雹和破坏性风力的强烈雷暴
指令:移动到建筑物底层的内部房间

---

事件:洪水预警
区域:南加州
严重程度:中等
描述:强降雨可能导致突发洪水
指令:监测天气状况并准备采取行动

2. 获取天气预报 (get_forecast)

检索特定坐标的5天天气预报。

参数:

  • latitude (str): 纬度坐标(十进制度数)
  • longitude (str): 经度坐标(十进制度数)

返回:

  • 包含接下来5个预报时段的格式化字符串

示例响应:

今晚:
- 温度:45°F
- 风速:5mph 西北风
- 预报:晴朗天空伴有轻风

---

明天:
- 温度:72°F
- 风速:10mph 南西风
- 预报:白天温暖晴朗,下午云量增加

🏗️ 项目结构

mcp_weather/
├── weather.py          # 主MCP服务器实现
├── main.py             # 简单入口点(占位符)
├── pyproject.toml      # 项目配置和依赖项
├── mcp.json           # MCP客户端配置模板
├── README.md          # 此文件
├── uv.lock            # 依赖锁定文件
├── .python-version    # Python版本规范
└── .venv/             # 虚拟环境目录

🔌 依赖项

  • httpx: 现代异步HTTP客户端用于API请求
  • mcp: Model Context Protocol实现
  • FastMCP: 用于构建MCP服务器的FastMCP框架

🌐 数据源

本项目使用National Weather Service (NWS) API,它提供了:

  • 实时天气警报和警告
  • 详细的天气预报
  • 地理点数据
  • 免费且可靠的天气信息

🛠️ 开发

添加新工具

要添加新的与天气相关的工具:

  1. weather.py中创建一个新的异步函数
  2. 使用@mcp.tool()装饰该函数
  3. 添加适当的类型提示和文档字符串
  4. 使用现有的辅助函数实现工具逻辑

测试

# 在开发模式下运行服务器
uv run weather.py

# 使用MCP客户端工具进行测试
# 服务器将响应MCP协议消息

📝 错误处理

服务器包括全面的错误处理:

  • HTTP请求失败
  • API响应验证
  • 网络超时(30秒限制)
  • 缺失数据的优雅回退

🤝 贡献

  1. 分叉仓库
  2. 创建功能分支
  3. 进行更改
  4. 如适用,添加测试
  5. 提交拉取请求

📄 许可证

MIT许可证。

🙏 致谢

📞 支持

对于问题、疑问或贡献:

  • 在GitHub上打开一个问题
  • 查看MCP文档
  • 查看国家气象服务API文档

注意:此服务器需要活动的互联网连接来从NWS API获取天气数据。