天气数据服务器

一个基于Rust实现的MCP服务器,提供来自Open-Meteo API的天气数据服务,包括实时天气、小时预报、空气质量等功能,适用于AI助手和天气应用。

  • by VincentSidot
  • Rust
  • 本地部署
  • 更新于
在 GitHub 查看 vincentsidot/open-meteo-mcp

使用说明

打开Meteo MCP服务器

模型上下文协议(MCP)服务器的Rust实现,该服务器从Open-Meteo API提供天气数据。

概述

此MCP服务器公开了可供Claude Desktop等AI助手使用的天气数据工具。它提供对地球上任何位置的当前天气状况、每小时预报和地理编码服务的访问。

建筑

该项目遵循模块化的Rust架构:

  • src/main.rs -入口点
  • src/server/ -服务器实现
  • src/api/ -API客户端(Open-Meteo)
  • src/tools/ -刀具参数定义
  • src/models/ -API响应的数据模型

特性

  • 当前天气:获取特定位置的当前天气状况
  • 逐时预报:获取长达168小时(7天)的每小时天气预报
  • 每日预报:获取长达14天的每日天气预报
  • 空气质量:获取特定位置的空气质量数据
  • 天气历史:获取特定日期范围的历史天气数据
  • 地理编码:使用国家代码过滤将城市名称转换为GPS坐标
  • 当前时间:获取当前系统时间,以帮助理解时间参考,如“明天”
  • STDIO传输:与Claude Desktop和其他MCP客户端兼容
  • 结构化数据:以文本和结构化JSON格式返回天气数据

工具

get_current_weather

获取特定位置的当前天气状况。

参数:

  • latitude (数字,必填):纬度,以十进制为单位
  • longitude (数字,必填):经度,以十进制为单位

例子:

{
  "latitude": 40.7128,
  "longitude": -74.0060
}

get_hourly_forecast

获取特定位置的每小时天气预报。

参数:

  • latitude (数字,必填):纬度,以十进制为单位
  • longitude (数字,必填):经度,以十进制为单位
  • hours (整数,可选):要预测的小时数(默认值:24,最小值:1,最大值:168)

例子:

{
  "latitude": 40.7128,
  "longitude": -74.0060,
  "hours": 48
}

geocode_city

将城市名称转换为GPS坐标。

参数:

  • city (string,必填):要进行地理编码的城市名称
  • count (整数,可选):要返回的结果数(默认值:1,最小值:1;最大值:10)
  • country_code (字符串,可选):用于过滤结果的ISO-3166-1 alpha2国家代码(例如,美国为“US”,德国为“DE”)

例子:

{
  "city": "New York",
  "count": 3
}

使用国家代码过滤:

{
  "city": "Berlin",
  "country_code": "US"
}

get_current_time

获取当前系统时间和日期,以帮助理解时间参考,如“明天”。

参数:

  • utc (布尔值,可选):如果为true,则返回UTC时间而不是本地时间(默认值:false)

例子:

{
  "utc": true
}

get_daily_forecast

获取特定地点的每日天气预报。

参数:

  • latitude (数字,必填):纬度,以十进制为单位
  • longitude (数字,必填):经度,以十进制为单位
  • days (整数,可选):要预测的天数(默认值:7,最小值:1,最大值:14)

例子:

{
  "latitude": 40.7128,
  "longitude": -74.0060,
  "days": 7
}

get_air_quality

获取特定位置的空气质量数据。

参数:

  • latitude (数字,必填):纬度,以十进制为单位
  • longitude (数字,必填):经度,以十进制为单位
  • hours (整数,可选):空气质量数据的小时数(默认值:24,最小值:1,最大值:168)

例子:

{
  "latitude": 40.7128,
  "longitude": -74.0060,
  "hours": 48
}

get_weather_history

获取特定日期范围的历史天气数据。

参数:

  • latitude (数字,必填):纬度,以十进制为单位
  • longitude (数字,必填):经度,以十进制为单位
  • start_date (字符串,必填):YYYY-MM-DD格式的开始日期
  • end_date (字符串,必填):YYYY-MM-DD格式的结束日期

例子:

{
  "latitude": 40.7128,
  "longitude": -74.0060,
  "start_date": "2023-01-01",
  "end_date": "2023-01-07"
}

安装

  1. 克隆此存储库:

    git clone https://github.com/your-username/open-meteo-mcp.git
    cd open-meteo-mcp
    
  2. 构建项目:

    cargo build --release
    
  3. 运行服务器:

    cargo run --release
    

用法

服务器通过STDIO进行通信,使其与Claude Desktop和其他MCP客户端兼容。当与MCP兼容的客户端集成时,您可以使用自然语言询问天气信息。

示例提示:

  • “纽约市现在的天气怎么样?”
  • “给我一份伦敦48小时的天气预报。”
  • “东京的7天天气预报是什么?”
  • “今天洛杉矶的空气质量怎么样?”
  • “上周巴黎的天气怎么样?”
  • “巴黎的GPS坐标是多少?”
  • “在美国找到柏林。”
  • “现在几点了?我需要知道明天是否到了。”
  • “我必须在早上9点前上班,上下班需要30分钟。为了避免下雨,什么时候出门最好?”

API来源

此服务器使用 开放式API,提供对天气数据和地理编码服务的免费访问,而不需要API密钥用于非商业用途。

许可证

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