天气数据服务

一个基于Model Context Protocol (MCP)的服务器,提供全球城市的实时天气信息,包括温度、湿度、紫外线指数等,并给出紫外线安全建议。

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

使用说明

气象MCP服务器

一种模型上下文协议(MCP)服务器,为全球任何城市提供实时天气信息。使用TypeScript构建,并由Open-Meteo API提供支持。

🌟 特性

  • 实时天气数据:获取任何城市的当前天气状况
  • 双温度单元:温度以摄氏度和华氏度显示
  • 综合天气信息:包括温度、湿度和紫外线指数
  • 紫外线安全建议:根据紫外线水平提供防晒建议
  • 地理编码支持:自动将城市名称解析为坐标
  • 错误处理:强大的错误处理,带有有意义的错误消息
  • 类型安全:使用TypeScript构建,增强可靠性

🛠️ 技术栈

  • 语言:TypeScript
  • 运行时:Node.js
  • 框架:模型上下文协议SDK
  • 架构验证:佐德
  • 天气API:Open-Meteo API
  • 地理编码:Open-Meteo地理编码API

📦 安装

  1. 克隆存储库:

    git clone <repository-url>
    cd mcp-weather-server-main
    
  2. 安装依赖项:

    npm install
    
  3. 构建项目:

    npm run build
    

🚀 用法

发展模式

# Watch mode with auto-rebuild
npm run watch

# Development with inspector
npm run dev

# Debug mode
npm run debug

生产模式

# Start the server
npm start

MCP检查员

# Launch the MCP inspector for testing
npm run inspector

🔧 可用工具

get-weather

检索指定城市的综合天气信息。

参数:

  • city (string):要获取天气信息的城市名称

示例用法:

{
  "city": "London"
}

示例响应:

Weather for London (lat: 51.5074, lon: -0.1278):
Temperature: 22°C (71.6°F)
Relative Humidity: 65%
UV Index: 4
UV level is moderate (3-5). Sun protection is recommended: Slip on protective clothing, Slop on SPF 50+ sunscreen, Slap on a hat, Seek shade, Slide on sunglasses.

📊 提供的天气数据

  • 温度:当前温度(摄氏度和华氏度)
  • 湿度:相对湿度百分比
  • 紫外线指数:当前紫外线指数及安全建议
  • 位置:精确坐标和城市名称

🌞 紫外线指数安全等级

服务器提供详细的紫外线安全建议:

  • 低(1-2):长时间户外不需要防晒
  • 中等(3-5):建议使用五个SunSmart步骤进行防晒
  • 高(6-7):防晒至关重要-遵循所有SunSmart步骤
  • 非常高(8-10):尽量减少阳光照射,严格遵守保护措施
  • 极端(11+):避免在紫外线高峰期进行户外活动

🏗️ 项目结构

src/
├── index.ts              # Main server entry point
├── tools/
│   ├── index.ts          # Tools export barrel
│   ├── weatherTool.ts    # Weather tool implementation
│   └── tmsAuthTool.ts    # TMS authentication tool
└── utils/                # Utility functions (if any)

🔍 API依赖项

此服务器依赖于以下外部API:

  • 开放气象API: https://api.open-meteo.com/v1/forecast
  • Open-Meteo地理编码API: https://geocoding-api.open-meteo.com/v1/search

这两个API都是免费的,不需要身份验证密钥。

🧪 测试

可以使用MCP检查器测试服务器:

npm run inspector

这将启动一个web界面,您可以在其中使用不同的城市名称测试天气工具。

🛡️ 错误处理

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

  • 城市名称无效
  • 网络连接问题
  • API速率限制
  • 响应格式错误
  • 服务器超时

📝 脚本

脚本 描述
build 编译TypeScript并设置可执行权限
watch 开发观看模式
inspector 启动MCP检查员进行测试
dev 带手表和检查员的开发模式
debug 从Node.js调试器开始
debug:watch 带手表的调试模式
logs 查看MCP日志(macOS/Linux)
clean 删除构建目录
start 启动生产服务器

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支: git checkout -b feature/new-feature
  3. 进行更改并添加测试
  4. 提交您的更改: git commit -am 'Add new feature'
  5. 推到分支: git push origin feature/new-feature
  6. 提交拉取请求

📄 许可证

此项目根据ISC许可证获得许可-请参阅 许可证 文件以获取详细信息。

🙏 致谢

📞 支持

如果您遇到任何问题或有疑问,请在GitHub存储库上打开问题。


备注:此服务器提供的天气数据仅供参考。对于依赖天气的关键决策,请咨询官方气象服务。