天气数据服务

一个简单的模型上下文协议(MCP)服务器,提供从美国国家气象局(NWS)API获取实时天气警报和预报的工具。

  • by abg011
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 abg011/WeatherMCP

使用说明

WeatherMCP

一个简单的 模型上下文协议 (MCP)服务器,该服务器公开用于从美国国家气象局(NWS)API获取实时天气警报和预报的工具。

特性

  • 各州天气警报:使用其两个字母的代码获取美国任何州的活跃NWS警报(例如。 CA, NY).
  • 按坐标进行点预测:返回纬度/经度对的人类可读短期预测。
  • 不需要API密钥:利用公众 api.weather.gov 端点。

需求

  • python: 3.10+
  • 依赖项 (也列在 pyproject.toml):
    • httpx
    • mcp[cli]

您可以使用首选工具安装依赖项(例如。 uv, pip).

# using uv
yuv sync

# or using pip
pip install -r requirements.txt  # or equivalent

运行MCP服务器

MCP服务器实现位于 weather.py 并且是用 FastMCP.

要直接运行它(stdio传输):

python weather.py

在支持MCP配置的工具中(例如Claude Desktop、Cursor或其他MCP客户端),将服务器命令指向与以下内容等效的内容:

python /path/to/weather.py

或者,如果您正在使用 uv:

uv run python weather.py

外露工具

服务器目前公开了两个工具:

get_alerts(state: str) -> str

描述:返回美国某个州的NWS天气警报。

  • 参数:
    • state (str):两个字母的美国州代码(例如。 CA, NY).
  • 输出:总结每个警报(事件、区域、严重性、描述和推荐说明)的格式化字符串,或指示没有活动警报/无法获取数据的消息。

get_forcast(latitude: float, longitude: float) -> str

注:工具名称是故意的 get_forcast (拼写准确)以匹配服务器实现。

描述:返回特定位置的短期预测。

  • 参数:
    • latitude (float):位置的纬度。
    • longitude (float):位置的经度。
  • 输出:一个格式化的字符串,总结了接下来的几个预测期(名称、温度、风和详细的预测文本),或者一条表示无法获取数据的消息。

发展

  • 主MCP服务器入口点: weather.py
  • 简单测试脚本: main.py (打印问候语;MCP服务器本身不使用)。

您可以通过添加新内容来修改或扩展服务器 @mcp.tool() 功能在 weather.py.

备注

  • 该项目旨在作为实验和学习的最小示例MCP服务器。
  • 它目前只使用公共NWS端点,不需要身份验证或机密。