天气数据服务

一个基于Model Context Protocol (MCP)的服务器,通过Express HTTP端点提供美国国家气象局(NWS) API的天气数据,支持天气警报和天气预报功能。

  • by punkmohamed
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 punkmohamed/mcp-server

使用说明

MCP气象服务器

具有Express HTTP端点的模型上下文协议(MCP)服务器,使用美国国家气象局(NWS)API提供天气数据。

特性

  • HTTP API:天气数据的RESTful端点
  • MCP服务器:用于AI集成的模型上下文协议服务器
  • MCP资源:直接获取天气数据作为资源
  • 天气警报:获取美国任何州的活跃天气警报
  • 天气预报:获取美国任何地点的详细天气预报

安装

  1. 安装依赖项:
npm install

用法

运行服务器

npm start

服务器同时运行以下两项:

  • 快速HTTP服务器 在端口3000(或port环境变量)上
  • MCP服务器 用于AI客户端连接的stdio

HTTP API终结点

健康检查

GET /health

返回服务器状态。

获取天气警报

GET /alerts/:state

获取美国特定州的天气警报。

例子:

curl http://localhost:3000/alerts/CA

获取天气预报

GET /forecast?latitude=40.7128&longitude=-74.0060

获取坐标的天气预报。

例子:

curl "http://localhost:3000/forecast?latitude=40.7128&longitude=-74.0060"

MCP工具

获取警报

获取美国特定州的天气警报。

参数:

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

获取预报

使用坐标获取特定位置的天气预报。

参数:

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

MCP资源

气象数据

直接将天气数据作为资源访问。

URI格式:

  • 警报: weather-data?type=alerts&state=CA
  • 预测: weather-data?type=forecast&latitude=40.7128&longitude=-74.0060

例子:

// Get alerts for California
const alertsResource = await client.readResource("weather-data?type=alerts&state=CA");

// Get forecast for New York City
const forecastResource = await client.readResource("weather-data?type=forecast&latitude=40.7128&longitude=-74.0060");

api信息

此服务器使用美国国家气象局(NWS)API,该API:

  • 仅支持美国境内的地点
  • 提供免费天气数据
  • 使用GeoJSON格式进行响应

错误处理

该服务器包括全面的错误处理功能,用于:

  • 网络故障
  • 坐标无效
  • 不支持的位置
  • API费率限制

依赖项

  • @modelcontextprotocol/sdk:用于服务器实现的MCP SDK
  • zod:工具参数的模式验证
  • express:HTTP服务器框架

许可证

麻省理工学院