天气数据MCP服务器

一个基于TypeScript的MCP服务器,通过Open-Meteo API提供城市天气预报数据。

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

使用说明

🌤️ 气象MCP服务器

气象MCP服务器 是基于TypeScript的模型上下文协议(MCP)服务器的实现。它提供了一个简化的界面,可以使用Open Meteo的公共API检索任何城市的每日天气预报。

该项目清楚地说明了MCP服务器如何公开与外部API集成的自定义工具,为MCP客户端提供结构化数据。


✨ 主要特点

特性 描述
MCP集成 用途 @modelcontextprotocol/sdk 用于无缝MCP处理
Zod验证 工具参数的运行时验证。
标准运输 通过标准输入/输出流进行通信。
外部API 使用Open Meteo API获取实时天气数据。

📋 需求

  • Node.js≥18(ESM和顶级 await 支持)
  • npm、yarn或pnpm用于依赖管理

🚀 快速开始

安装

git clone https://github.com/yourusername/weather-mcp-server.git
cd weather-mcp-server

# Install dependencies
npm install # or yarn install / pnpm install

运行服务器

npm run start # or use your preferred method (e.g., ts-node main.ts)

服务器在标准输入/输出上监听MCP消息。

示例工具调用

请求:

{
  "tool": "fetch-weather",
  "params": { "city": "Madrid" }
}

答复:

{
  "content": [
    {
      "type": "text",
      "text": "{\n  \"daily\": {\n    \"temperature_2m_max\": [26.4],\n    \"temperature_2m_min\": [15.1]\n  }\n}"
    }
  ]
}

🗂️ 项目结构

weather-mcp-server/
├── main.ts              # Entry point for the MCP server
├── package.json
├── pnpm-lock.yaml
└── node_modules/

⚙️ 运作原理

MCP服务器通过以下过程运行:

  1. 初始化:MCP服务器用名称和版本实例化。
  2. 工具定义:工具由唯一标识符、描述、Zod验证的参数模式和异步处理程序定义。
  3. API集成:当被调用时, fetch-weather 调用Open Meteo API以获取城市的地理和天气数据。
  4. 沟通:利用 StdioServerTransport 用于服务器和MCP客户端之间的通信。

🚧 TODO/未来想法

  • 集成其他API以扩展功能(例如时区、空气质量)。
  • 扩展传输功能(例如WebSockets、HTTP)。
  • 实施全面的测试套件。

📄 许可证

MIT许可证。看 许可证 了解更多信息。