天气数据服务

一个基于Model Context Protocol (MCP)的服务器,通过National Weather Service (NWS) API提供实时天气数据和警报服务,适用于需要天气信息的应用集成。

  • by bryankemp
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 bryankemp/weather_mcp

使用说明

气象MCP服务器

一种模型上下文协议(MCP)服务器,使用美国国家气象局(NWS)API提供天气数据工具。

概述

此MCP服务器提供了两种访问天气信息的主要工具:

  • 获取警报:获取美国某个州的活动天气警报
  • 获取预测:检索特定纬度/经度的详细天气预报

该服务器使用FastMCP构建,并通过stdio传输进行通信,使其与Claude Desktop等MCP客户端兼容。

特性

  • 🌤️ 国家气象局的实时天气预报
  • ⚠️ 按州分列的活跃天气警报
  • 🔄 异步API调用高效的数据检索
  • 🛡️ 强大的错误处理和用户友好的响应
  • 📦 与MCP兼容客户端轻松集成

需求

  • Python 3.11或更高版本
  • 紫外线 包管理器(推荐)

安装

使用紫外线(推荐)

# Clone the repository
git clone <repository-url>
cd weather

# Install dependencies
uv sync

# Activate virtual environment
source .venv/bin/activate

使用pip

# Clone the repository
git clone <repository-url>
cd weather

# Create virtual environment
python -m venv .venv
source .venv/bin/activate

# Install dependencies
pip install -e .

用法

运行服务器

uv run weather.py

与MCP客户端集成

要将此服务器与Claude Desktop等MCP客户端一起使用,请将其添加到您的MCP配置中:

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

可用工具

获取警报

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

参数:

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

例子:

get_alerts(state="CA")

获取预测

检索特定位置的天气预报。

参数:

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

例子:

get_forecast(latitude=37.7749, longitude=-122.4194)

API集成

此服务器使用美国国家气象局API(API.weither.gov):

  • /alerts/active/area/{state} -各州天气警报
  • /points/{lat},{lon} -预测网格端点
  • 来自点响应的预测URL-详细预测

所有API请求都包含NWS API要求的正确User-Agent和Accept头。

发展

项目结构

weather/
├── weather.py          # Main MCP server implementation
├── main.py             # Entry point (placeholder)
├── config.json         # Configuration file
├── pyproject.toml      # Project metadata and dependencies
├── uv.lock            # Locked dependencies
└── README.md          # This file

添加新工具

  1. 在中定义异步函数 weather.py
  2. 用 @mcp.tool()
  3. 使用 make_nws_request() 用于NWS API调用
  4. 返回格式化字符串,而不是原始JSON
  5. 优雅地处理错误

测试

通过以下方式测试服务器:

  1. 运行它并通过stdin提供输入
  2. 与MCP客户端集成
  3. 使用MCP CLI工具

错误处理

  • 网络错误返回用户友好的错误消息
  • 没有原始异常暴露给客户端
  • 所有响应都是带有清晰标签的格式化字符串

贡献

欢迎投稿!请随时提交拉取请求。

许可证

BSD-3条款许可证-详见许可证文件

作者

布莱恩·肯普(bryan@kempville.com)

致谢