天气数据服务

一个基于Model Context Protocol (MCP)的天气数据服务,提供美国各州的天气警报和具体坐标的天气预报。

  • by flannerychristopher
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 flannerychristopher/weather-mcp

使用说明

气象MCP服务器

实现模型上下文协议(MCP)服务器的实践项目,该服务器通过美国国家气象局API提供天气数据。该项目遵循 人类MCP文件 并为构建其他MCP服务器提供了有益的参考。

概述

此MCP服务器提供两个主要的天气信息工具:

  • 天气警报:获取美国任何州的活跃天气警报
  • 天气预报:获取特定坐标的详细天气预报

该服务器使用美国国家气象局(NWS)API,为美国各地提供免费、可靠的天气数据。

特性

  • ✅ 州天气警报:按州代码检索当前天气警报
  • ✅ 位置预测:使用纬度/经度坐标获取详细预报
  • ✅ 错误处理:针对API故障和无效位置的稳健错误处理
  • ✅ TypeScript:具有正确类型定义的完整TypeScript实现
  • ✅ Zod验证:使用Zod模式进行输入验证

安装

  1. 克隆存储库:
git clone <repository-url>
cd weather-mcp
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build

用法

作为MCP服务器

服务器在stdio上运行,可以与MCP兼容的客户端集成:

node /path/to/weather-mcp/build/index.js

可用工具

get_alerts

获取特定州的天气警报。

参数:

  • state (string):两个字母的状态码(例如,“CA”、“NY”、“TX”)

例子:

{
  "name": "get_alerts",
  "arguments": {
    "state": "CA"
  }
}

get_forecast

获取特定坐标的天气预报。

参数:

  • latitude (数字):纬度(-90到90)
  • longitude (数字):经度(-180到180)

例子:

{
  "name": "get_forecast",
  "arguments": {
    "latitude": 37.7749,
    "longitude": -122.4194
  }
}

发展

脚本

  • npm run build:将TypeScript编译为JavaScript
  • npm test:运行测试(当前未实现)

依赖项

  • @modelcontextprotocol/sdk:核心MCP SDK
  • zod:架构验证库
  • typescript:TypeScript编译器
  • @types/node:Node.js类型定义

局限性

  • 仅支持美国地区(NWS API限制)
  • API调用需要互联网连接
  • NWS API限制的费率(尽管限制很慷慨)

参考文献