mcpField
O
Open-Meteo MCP Server

Open-Meteo MCP Server

本地服务
github.com/cmer81地图与出行721 天前更新

关于 Open-Meteo MCP Server

Open-Meteo MCP Server 是一个 MCP 服务,让 LLM 可以访问免费的 Open-Meteo 天气 API。它覆盖天气预报、历史气候、空气质量、海洋和洪水数据,无需 API 密钥。

主要功能

  1. 0117 个工具覆盖预报、历史、空气质量与气候数据
  2. 02支持 ICON、GFS、ECMWF 等具体模型预报
  3. 03可通过 stdio 或远程 Streamable HTTP 运行
  4. 04内存响应缓存,按端点设置不同 TTL
  5. 05可将端点指向自托管的 Open-Meteo 实例

适用场景

  1. 01查询某地的历史气温与降水记录
  2. 02比较不同气象模型对未来几天的预报
  3. 03获取空气质量指数、紫外线指数与花粉水平

MCP 相关

该项目是 MCP 服务,向 MCP 客户端暴露 17 个天气相关工具,并附带服务端指令帮助模型选择合适的工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Open-Meteo MCP 服务

为任何大模型提供准确的天气数据:天气预报、追溯至 1940 年的历史数据、空气质量、海洋状况、洪水和气候预测。

npm version CI Docker image Node.js License

功能 • 快速开始 • 工具 • 远程部署 • 配置 • 开发

这是一个适用于免费 Open-Meteo API 的 Model Context Protocol 服务。将它接入 Claude Desktop、Claude Code 或任何 MCP 客户端,然后用自然语言提问:

What were the temperatures in London during January 2023?
Compare the ICON and GFS ensemble forecasts for Berlin over the next 5 days.
Give me the current European AQI, UV index and pollen levels in Paris.

无需 API 密钥:Open-Meteo 可免费用于非商业用途。

功能

  • 17 个工具,涵盖天气预报、ERA5 历史数据、空气质量、海洋、洪水、季节性、集合预报和 CMIP6 气候数据,以及地理编码和海拔数据
  • 特定模型的天气预报,数据来自 DWD ICON、NOAA GFS、Météo-France、ECMWF、JMA、MET Norway 和 Environment Canada GEM
  • 专为大模型打造:严格的输入架构、告知模型各工具适用问题的服务说明,以及上限为 25,000 个字符的精简 JSON 响应
  • 两种传输方式:供本地客户端使用的 stdio,以及适用于远程部署的无状态 Streamable HTTP,并支持 API 密钥身份验证、速率限制和来源检查
  • 内存响应缓存,为每个端点设置 TTL,避免重复请求再次访问 Open-Meteo
  • 便于自托管:每个 Open-Meteo 端点都可以指向你自己的实例

快速开始

你需要 Node.js 22 或更高版本。无需预先安装任何内容:首次运行时,npx 会获取此服务。

Claude Desktop

将服务添加到你的 claude_desktop_config.json:

{
  "mcpServers": {
    "open-meteo": {
      "command": "npx",
      "args": ["-y", "-p", "open-meteo-mcp-server", "open-meteo-mcp-server"]
    }
  }
}
Claude Code
claude mcp add open-meteo -- npx -y -p open-meteo-mcp-server open-meteo-mcp-server
其他 MCP 客户端

任何可以启动 stdio 服务的客户端都可以使用相同的命令:npx -y -p open-meteo-mcp-server open-meteo-mcp-server。你也可以通过 npm install -g open-meteo-mcp-server 全局安装,然后运行 open-meteo-mcp-server。

提示

每个数据工具都需要坐标。使用地点名称提问时,模型会先调用 geocoding 来解析地点。

工具

类别工具可以回答的问题
核心weather_forecast最多 16 天的天气预报,并为所在位置选择最佳模型。通过 past_days 查询近期过去天气(最多 92 天)
weather_archive1940 年至昨天的历史天气(ERA5 再分析)
air_qualityPM2.5、PM10、臭氧、NO₂、花粉、欧洲和美国 AQI、UV 指数
marine_weather浪高、浪周期和方向、涌浪、海表温度
geocoding将地名或邮政编码转换为坐标
elevation坐标对应的地形高度
模型dwd_icon_forecastDWD ICON(德国,在欧洲提供高分辨率预报)
gfs_forecastNOAA GFS(全球,在北美提供高分辨率预报)
meteofrance_forecastMétéo-France AROME 和 ARPEGE
ecmwf_forecastECMWF IFS 和 AIFS
jma_forecast日本气象厅
metno_forecastMET Norway(北欧国家)
gem_forecast加拿大环境部 GEM
高级ensemble_forecast集合成员之间的预报不确定性。必须设置 models
seasonal_forecast未来几周至约 7 个月的展望
climate_projectionCMIP6 气候预测,涵盖 1950 年至 2050 年
flood_forecastGloFAS 河流流量

weather_forecast 是默认选择。特定模型的工具适用于用户指定某个模型,或希望通过每个模型各调用一次来比较模型的情况。

响应
  • 除非设置 timezone,否则时间均为 GMT。timezone: "auto" 使用所在位置的当地时间。
  • 序列中的 null 表示模型在该时间没有数值,而不是零。
  • 响应超过 25,000 个字符时,会按相同比例缩短其 hourly / daily / minutely_15 数组,以保持各序列对齐,并附带 truncated: true 和 truncation_message。缩小日期范围或变量范围即可获取完整数据。

完整的变量和参数列表见各工具的输入架构及 Open-Meteo 文档。

远程部署

设置 TRANSPORT=http,即可通过 /mcp 上的 Streamable HTTP 提供 MCP 服务,而不是使用 stdio:

TRANSPORT=http HOST=0.0.0.0 PORT=3000 API_KEY=your-secret-key npx open-meteo-mcp-server

随后,客户端需在每次请求中发送密钥,格式为 Authorization: Bearer <key> 或 X-API-Key: <key>。容器探针可在不提供密钥的情况下请求 GET /health,并得到 {"status":"ok"}。

此传输方式为无状态:每个 POST /mcp 请求都会单独处理,不会颁发会话 ID,且 GET / DELETE /mcp 会返回 405。工具不会在调用之间保留状态,因此客户端不会丢失任何内容。

重要

服务默认绑定到 127.0.0.1,因此只能从本机访问。设置 HOST=0.0.0.0 以接受远程连接,并且每次都要设置 API_KEY:否则服务将以开放模式运行。

Docker

预构建镜像已发布到 GitHub Container Registry。镜像已绑定到 0.0.0.0:

docker run -d --name open-meteo-mcp -p 3000:3000 \
  -e API_KEY=your-secret-key \
  ghcr.io/cmer81/open-meteo-mcp:latest

标签与 npm 版本一致,但不带 v 前缀:latest、2.5.1、2.5、2。

仓库中还包含 docker-compose.yml(使用预构建镜像)和 docker-compose.dev.yml(从源代码构建)。将 .env.example 复制为 .env 以进行配置。

claude.ai 流量

每位 claude.ai 用户都会从 Anthropic 的出站 IP 段 160.79.104.0/21 访问远程服务。该网段使用独立的速率限制池(RATE_LIMIT_ANTHROPIC_RPM),这样所有用户就不会共用一个按 IP 计算的额度。在反向代理后运行时,将代理列入 TRUSTED_PROXIES,以便获取真实的客户端 IP。

配置

所有变量均为可选。

服务
变量默认值描述
TRANSPORTstdio使用 http 表示 Streamable HTTP
PORT3000HTTP 端口
HOST127.0.0.1绑定的接口。0.0.0.0 接受远程连接
OPEN_METEO_CACHE_MAX_BYTES20000000响应缓存大小,以序列化 JSON 的字节数计。0 表示禁用缓存

缓存会将预报和集合预报保留 15 分钟,将空气质量和海洋数据保留 30 分钟,将洪水数据保留 1 小时,将季节性数据保留 6 小时,将历史和气候数据保留 24 小时,将地理编码数据保留 7 天,将海拔数据保留 30 天。由于 Open-Meteo 仍在补充数据,结束时间在最近 5 天内的历史数据范围仅保留 1 小时。失败的请求永远不会被缓存。

说明

缓存大小按序列化 JSON 计算,但解析后的对象在内存中会占用约 1.2 到 2.6 倍的空间。默认大小下,缓存占满时会使用约 50 MB 的堆内存。

HTTP 安全
变量默认值描述
API_KEY未设置(开放访问)每个 /mcp 请求都必须提供的密钥
RATE_LIMIT_RPM60每个客户端 IP 每分钟的请求数。IPv6 客户端按 /56 网段分组
RATE_LIMIT_ANTHROPIC_RPM600所有 claude.ai 流量共用的每分钟请求数
TRUSTED_PROXIES未设置以逗号分隔的 IP 或 CIDR,信任其 X-Forwarded-For
ALLOWED_ORIGINS空以逗号分隔的允许访问的浏览器来源。任何带有未列出 Origin 标头的请求都会收到 403(DNS 重绑定保护)。不带该标头的请求不受影响
自定义 Open-Meteo 实例

每个端点都可以重定向,例如指向可自托管的 Open-Meteo:

变量默认值
OPEN_METEO_API_URLhttps://api.open-meteo.com
OPEN_METEO_ARCHIVE_API_URLhttps://archive-api.open-meteo.com
OPEN_METEO_AIR_QUALITY_API_URLhttps://air-quality-api.open-meteo.com
OPEN_METEO_MARINE_API_URLhttps://marine-api.open-meteo.com
OPEN_METEO_SEASONAL_API_URLhttps://seasonal-api.open-meteo.com
OPEN_METEO_ENSEMBLE_API_URLhttps://ensemble-api.open-meteo.com
OPEN_METEO_GEOCODING_API_URLhttps://geocoding-api.open-meteo.com
OPEN_METEO_FLOOD_API_URLhttps://flood-api.open-meteo.com
OPEN_METEO_CLIMATE_API_URLhttps://climate-api.open-meteo.com

在 Claude Desktop 中,通过服务条目的 env 键传入这些变量。

技能

skills/ 目录包含两个 SKILL.md 指南,帮助助手选择合适的工具和参数:

技能适用场景
open-meteo日常天气:预报、历史数据、空气质量、海洋、海拔
open-meteo-advanced特定模型、集合预报的不确定性、季节展望、气候预测

对于 Claude Code,将它们复制到 ~/.claude/skills/:

cp -r skills/open-meteo skills/open-meteo-advanced ~/.claude/skills/

对于 Claude Desktop,将相关的 SKILL.md 上传到对话中。

开发

git clone https://github.com/cmer81/open-meteo-mcp.git
cd open-meteo-mcp
npm install
npm run build
命令描述
npm run dev / npm run dev:http从源代码运行并自动重新加载(stdio / HTTP)
npm test单元测试(模拟网络)
npm run typecheck / npm run lint类型检查和 Biome lint 检查
npm run smoke通过真实 MCP 客户端调用实时 API 上的全部 17 个工具。需要先完成构建
npm run eval大模型可用性基准测试,见下文

若要让 Claude Desktop 使用本地构建版本,请使用 "command": "node" 和 "args": ["/path/to/open-meteo-mcp/dist/index.js"]。

评估

evals/evaluation.xml 用于检查仅使用此 MCP 服务工具的大模型能否回答现实问题。这 14 个问题依赖稳定的数据(ERA5 档案、CMIP6 预测、地理编码、海拔),因此预期答案不会变化。

pip install -r evals/scripts/requirements.txt
export ANTHROPIC_API_KEY=...        # or put it in .env

npm run build && npm run eval
npm run eval -- --no-server-instructions   # baseline without the server instructions

警告

每个问题的评估都会调用真实的 Anthropic API,并消耗额度。这是手动检查,不属于 CI。

欢迎贡献:请参阅 CONTRIBUTING.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。