天气数据服务

一个基于TypeScript的MCP服务器,通过Open-Meteo API提供全球天气数据查询服务。

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

使用说明

气象MCP服务器

一个简单的模型上下文协议(MCP)服务器,使用TypeScript构建,使用Open-Meteo API提供天气信息。

特性

  • 🌤️ 获得天气:获取全球任何城市的当前天气数据
  • 👋 问候:用于测试的简单问候工具
  • 🌍 使用免费的Open-Meteo API(不需要API密钥)
  • 🚀 使用MCP TypeScript SDK构建
  • 📡 HTTP传输支持

先决条件

  • Node.js 18+
  • npm或纱线

安装

  1. 安装依赖项:
npm install

用法

发展模式

使用自动重新加载运行服务器:

npm run dev

生产模式

  1. 构建TypeScript代码:
npm run build
  1. 启动服务器:
npm start

服务器将于启动 http://localhost:3000/mcp 默认情况下。您可以通过设置来更改端口 PORT 环境变量:

PORT=8080 npm run dev

连接到服务器

使用MCP检查器

测试服务器的最简单方法:

npx @modelcontextprotocol/inspector

然后连接到: http://localhost:3000/mcp

使用克劳德代码

claude mcp add --transport http weather-server http://localhost:3000/mcp

使用VS代码

code --add-mcp "{\"name\":\"weather-server\",\"type\":\"http\",\"url\":\"http://localhost:3000/mcp\"}"

使用光标

点击 这个深度链接

可用工具

1.了解天气

获取任何城市的最新天气信息。

输入:

{
  "city": "Sydney"
}

输出:

{
  "city": "Sydney, Australia",
  "temperature": 22.5,
  "weatherCode": 0,
  "windSpeed": 15.2,
  "humidity": 65,
  "description": "Clear sky"
}

示例查询:

  • “东京的天气怎么样?”
  • “给我伦敦现在的温度”
  • “纽约的天气怎么样?”

2.问候

用于测试服务器的简单问候工具。

输入:

{
  "name": "Alice"
}

输出:

{
  "greeting": "Hello, Alice! Welcome to the Weather MCP Server!"
}

api信息

此服务器使用免费 开放气象API 其提供:

  • 当前天气状况
  • 不需要API密钥
  • 全球覆盖
  • 可靠的地理编码

项目结构

weather-mcp-server/
├── src/
│   └── index.ts          # Main server implementation
├── dist/                 # Compiled JavaScript (generated)
├── package.json          # Dependencies and scripts
├── tsconfig.json         # TypeScript configuration
└── README.md            # This file

发展

服务器是使用以下方式构建的:

  • @模型上下文协议/sdk:MCP TypeScript SDK
  • 快速:HTTP服务器
  • 黄道:架构验证
  • TypeScript:类型安全

健康检查

服务器包括一个健康检查端点:

curl http://localhost:3000/health

答复:

{
  "status": "ok",
  "server": "weather-mcp-server",
  "version": "1.0.0"
}

故障排除

端口已在使用中

如果端口3000已在使用中,请指定其他端口:

PORT=8080 npm run dev

未找到城市

确保你使用了正确的城市名称。API使用地理编码来查找城市,因此请尝试:

  • 完整的城市名称:“纽约”而不是“NYC”
  • 如果含糊不清,请包括国家:“英国伦敦”或“安大略省伦敦”

许可证

麻省理工学院