天气数据API服务

一个基于Model Context Protocol(MCP)的天气数据API服务,通过RESTful API提供实时天气信息,支持与AI助手集成。

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

使用说明

气象MCP服务器

模型上下文协议(MCP)服务器,通过RESTful API提供天气信息。该服务器与OpenWeatherMap API集成以获取实时天气数据,并可与Claude等人工智能助手一起使用。

🌟 特性

  • MCP协议支持:实现模型上下文协议,实现无缝的人工智能集成
  • 天气数据:来自OpenWeatherMap API的实时天气信息
  • RESTful API:HTTP端点便于集成
  • CORS支持:已启用跨源资源共享
  • 错误处理:强大的错误处理和验证
  • TypeScript:用TypeScript编写,以提高类型安全性

🚀 快速开始

先决条件

  • Node.js>=18.0.0
  • OpenWeatherMap API密钥

安装

  1. 克隆存储库

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

    npm install
    
  3. 设置环境变量

    export OPENWEATHER_API_KEY="your-openweather-api-key"
    
  4. 启动服务器

    npm start
    

📖 用法

发展模式

在开发模式下运行服务器并自动重启:

npm run dev

生产模式

在生产环境中运行服务器:

npm start

🔧 API终点

GET/api/weather/:城市

获取特定城市的天气信息。

参数:

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

请求示例:

curl http://localhost:3000/api/weather/London

示例响应:

{
  "city": "London",
  "temperature": 15.2,
  "description": "scattered clouds",
  "humidity": 72,
  "windSpeed": 3.6
}

POST/api/mcp

用于AI集成的MCP协议端点。

请求示例:

{
  "method": "tools/call",
  "params": {
    "name": "get-weather",
    "arguments": {
      "city": "New York"
    }
  }
}

🛠️ 配置

环境变量

变量 描述 必填
OPENWEATHER_API_KEY 您的OpenWeatherMap API密钥 是
PORT 服务器端口(默认值:3000) 否

获取OpenWeatherMap API密钥

  1. 访问 OpenWeatherMap
  2. 注册一个免费帐户
  3. 导航到API密钥部分
  4. 复制API密钥并将其设置为环境变量

📁 项目结构

weather-mcp-server/
├── src/
│   └── index.js          # Main server file
├── package.json          # Dependencies and scripts
├── README.md            # This file
└── .gitignore           # Git ignore rules

🔌 MCP集成

该服务器实现了模型上下文协议,使其与支持MCP的AI助手兼容。服务器提供 get-weather AI助手可以调用该工具来检索天气信息。

可用工具

  • 获取天气信息:检索指定城市的当前天气信息

🧪 测试

目前,没有配置自动测试。您可以使用curl或任何HTTP客户端手动测试API。

示例测试:

# Test weather endpoint
curl http://localhost:3000/api/weather/Tokyo

# Test MCP endpoint
curl -X POST http://localhost:3000/api/mcp \
  -H "Content-Type: application/json" \
  -d '{"method":"tools/call","params":{"name":"get-weather","arguments":{"city":"Paris"}}}'

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

📄 许可证

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

🙏 致谢

📞 支持

如果您遇到任何问题或有疑问,请:

  1. 检查 问题 页
  2. 使用有关您问题的详细信息创建新问题
  3. 包括你的Node.js版本、操作系统和任何错误消息

编码愉快! 🌤️