天气数据API服务

一个基于Model Context Protocol (MCP)的演示服务器,集成国家气象服务API,通过MCP工具提供天气数据。

  • by peterDijk
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 peterdijk/demo-mcp-server-weatherapi

使用说明

演示MCP服务器-天气API

实现 模型上下文协议(MCP) 与美国国家气象局API集成,通过MCP工具提供天气数据。

概述

该项目展示了如何构建一个MCP服务器,该服务器包装外部API(在本例中,位于API.weither.gov的NWS API),以向MCP客户端提供结构化天气数据。该服务器公开了MCP兼容客户端可以用来检索天气预报和警报的工具。

特性

  • MCP服务器实现:全面实施模型上下文协议服务器
  • 天气工具:
    • get-forecast:使用纬度和经度检索特定位置的天气预报
    • get-alerts:获取美国特定州的活跃天气警报
  • 多种运输方式:
    • 具有流式响应的流式HTTP(最新、首选传输)
    • 服务器发送事件(SSE)传输(默认情况下已注释掉)

先决条件

  • Node.js v18+(建议使用v22)
  • npm

安装

克隆存储库并安装依赖项:

git clone <repository-url>
cd demo-mcp-server-weatherapi
npm install

运行服务器

使用npm

# Start the MCP server
npm start

# Start with MCP Inspector for development
npm run dev

服务器将在以下时间可用http://localhost:3002/mcp. 当SSE被启用时,要连接的地址是http://localhost:3002/sse

使用Docker

使用Docker Compose构建和运行:

docker-compose up --build

服务器将在以下时间可用http://localhost:3000/mcp. 当SSE被启用时,要连接的地址是http://localhost:3000/sse

API使用

服务器实现了模型上下文协议,并公开了以下工具:

获取天气预报

检索地理位置的天气预报。

{
  "method": "tool",
  "params": {
    "name": "get-forecast",
    "parameters": {
      "latitude": 37.7749,
      "longitude": -122.4194
    }
  }
}

获取天气警报

检索美国某个州的活动天气警报。

{
  "method": "tool",
  "params": {
    "name": "get-alerts",
    "parameters": {
      "state": "CA"
    }
  }
}

MCP检查员

在开发过程中,您可以使用MCP检查器来可视化您的MCP服务器并与之交互。运行:

npm run dev

MCP检查器将在您的浏览器中可用,允许您测试各种工具。

项目结构

  • src/index.ts -应用程序入口点
  • src/mcp-server.ts -带工具定义的MCP服务器实现
  • src/weather-api.ts -天气API与NWS API的集成
  • src/stream-http-server.ts -支持流媒体的HTTP服务器
  • src/sse-server.ts -服务器发送事件(SSE)传输实现

Docker支持

该项目包括Docker支持,便于部署:

  • Dockerfile -容器定义
  • docker-compose.yml -服务配置

许可证

国际协调委员会

作者

彼得·范·迪克