天气数据服务

一个提供荷兰皇家气象研究所(KNMI)实时天气数据的FastMCP服务器,可获取荷兰境内任意位置最近的10分钟气象测量数据。

  • by wolkwork
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 wolkwork/knmi-mcp

使用说明

KNMI气象MCP

FastMCP服务器,提供来自KNMI(荷兰皇家气象研究所)气象站的实时天气数据。此应用程序从荷兰任何位置最近的气象站获取最新的10分钟测量值。

特性

  • 获取荷兰任何地点的天气数据
  • 自动查找最近的KNMI气象站
  • 提供实时测量,包括:
    • 温度
    • 湿度
    • 风速与风向
    • 降水
    • 能见度
    • 气压
  • 天气状况的自然语言解释
  • 位置搜索功能
  • 详细日志记录

先决条件

  • Python 3.10或更高版本
  • KNMI API密钥(从 KNMI数据平台)
  • uv 包管理器

安装

  1. 克隆存储库:

    git clone <repository-url>
    cd knmi-mcp
    
  2. 创建一个 .env 项目根目录中的文件:

    KNMI_API_KEY=your_api_key_here
    

运行服务器

使用Claude AI

要将此应用程序与Claude AI一起使用,请在项目文件夹中运行以下命令:

uv run fastmcp install src/knmi_weather_mcp/server.py

这将把以下配置添加到您的Claude配置文件中(通常位于 ~/Library/Application Support/Claude/claude_desktop_config.json):

{
    "KNMI Weather": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "fastmcp",
        "--with",
        "httpx",
        "--with",
        "netCDF4",
        "--with",
        "numpy",
        "--with",
        "pandas",
        "--with",
        "pydantic",
        "--with",
        "python-dotenv",
        "--with",
        "xarray",
        "fastmcp",
        "run",
        "/Users/<username>/<git location>/knmi-mcp/src/knmi_weather_mcp/server.py"
      ]
    }
}

注意:如果你看到这样的错误:

spawn uv ENOENT

更换 uv 带有完整路径的命令 uv 命令。在*nix系统上,可以通过以下命令找到 which uv.

手动运行

用于开发或独立使用:

uv run fastmcp run src/knmi_weather_mcp/server.py

可用工具

1.吃什么

获取荷兰任何地点当前天气状况的自然语言翻译。

例子:

await what_is_the_weather_like_in("Amsterdam")

2.获取位置_天气

获取某个位置的原始天气数据。

例子:

await get_location_weather("Rotterdam")

3.搜索位置

搜索荷兰的地点。

例子:

await search_location("Utrecht")

4.获取区域状态

找到距离给定坐标最近的KNMI气象站。

例子:

await get_nearest_station(52.3676, 4.9041)

日志记录

应用程序日志存储在 logs/knmi_weather.log 文件,提供以下详细信息:

  • API请求和响应
  • 气象数据处理
  • 错误消息
  • 调试信息

数据源

该应用程序使用KNMI数据平台API从“Actuele10mindataKNMIstations”数据集获取数据,该数据集提供荷兰所有KNMI气象站的10分钟间隔测量。

错误处理

该应用程序包括强大的错误处理功能,用于:

  • 无效位置
  • API身份验证问题
  • 网络问题
  • 数据分析错误
  • 缺少测量值