天气数据服务

一个通过Open-Meteo API提供实时天气数据的Model Context Protocol (MCP)服务器,支持基于经纬度的精确天气查询。

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

使用说明

气象MCP服务器

模型上下文协议(MCP)服务器,通过Open-Meteo API提供天气数据。该服务器允许AI代理和应用程序使用纬度和经度坐标获取任何位置的当前天气信息。

特性

  • 🌤️ 实时天气数据:获取任何位置的当前天气状况
  • 📍 基于坐标的查找:使用纬度和经度进行精确定位
  • 🔄 异步操作:内置async/await,用于高效的API调用
  • 🛡️ 错误处理:稳健的错误处理,优雅的回退
  • 📊 综合数据:包括温度、降水、天气代码等

先决条件

  • Python 3.13或更高版本
  • uv 包管理器(推荐)或 pip

安装

  1. 克隆或导航到项目目录:

    cd weather_mcp_Server
    
  2. 使用uv安装依赖项:

    uv sync
    

    或者使用pip:

    pip install -r requirements.txt
    

用法

运行服务器

启动MCP服务器:

python server.py

服务器将启动并通过stdio传输监听MCP协议消息。

可用工具

get_current_weather

获取指定位置的当前天气数据。

参数:

  • latitude (float):位置的纬度坐标
  • longitude (float):位置的经度坐标

退货:

  • dict[str, Any]:天气数据包括:
    • 每小时数据:温度、降水、天气代码
    • 每日数据:最高/最低温度、降水量总和
    • 时区信息

示例用法:

# Get weather for New York City (40.7128, -74.0060)
weather_data = await get_current_weather(40.7128, -74.0060)

API集成

此服务器与 开放气象API,一个免费天气API,提供:

  • 不需要API密钥:免费使用,价格限制合理
  • 全球覆盖:全球各地的天气数据
  • 多个数据点:温度、降水、风、气压等
  • 高精度:基于多种天气模型

使用的API端点

  • 预测终点: https://api.open-meteo.com/v1/forecast
  • 参数:纬度、经度、小时/日变量、时区

项目结构

weather_mcp_Server/
├── server.py              # Main MCP server with tool definitions
├── weather_api_client.py # Open-Meteo API client utilities
├── pyproject.toml         # Project dependencies and metadata
├── uv.lock               # Lock file for dependency versions
└── README.md             # This file

依赖项

  • httpx:API请求的异步HTTP客户端
  • mcp[cli]:模型上下文协议服务器实现
  • Python 3.13+:现代Python特性和类型提示

发展

添加新工具

要添加新的天气相关工具,请执行以下操作:

  1. 在中创建工具功能 server.py 或 tools.py
  2. 用…装饰 @mcp.tool()
  3. 为参数和返回值定义适当的类型提示
  4. 添加全面的文档字符串

例子:

@mcp.tool()
async def get_weather_forecast(latitude: float, longitude: float, days: int = 7) -> dict[str, Any]:
    """Get weather forecast for the next N days."""
    # Implementation here
    pass

错误处理

服务器包括强大的错误处理功能:

  • API超时:API请求超时30秒
  • 网络错误:妥善处理连接问题
  • 无效数据:对格式错误的数据的回退响应
  • 用户代理:正确识别API请求

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

许可证

这个项目是开源的。请检查许可证文件以了解详细信息。

支持

对于问题或疑问:


备注:此服务器旨在与MCP兼容的客户端和代理一起工作。确保您的客户端支持MCP协议,以便正确集成。