关于 (Demo) MCP Server for MeteoSwiss Data
该项目通过 MCP 服务、Agent 技能和预报评测提供 MeteoSwiss 天气数据,适合需要瑞士预报、观测、花粉、气候记录或网站内容的 AI 助手与 Agent。同一数据访问能力既有结构化工具,也可通过 Shell 脚本使用。
主要功能
- 01查询瑞士各地多日预报
- 02获取实时观测并查找站点
- 03查询花粉与历史气候数据
- 04搜索并读取 MeteoSwiss 网站
- 05模糊匹配、地理编码与缓存
适用场景
- 01查询瑞士城镇或邮编的天气预报
- 02按名称或坐标查找气象站
- 03查看花粉水平或长期气候序列
- 04搜索并读取 MeteoSwiss 网站信息
MCP 相关
MCP 服务提供七种结构化工具,涵盖预报、实时天气、站点、花粉、气候数据及 MeteoSwiss 网站搜索与读取。可使用托管服务,也可通过 Docker 自行托管。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
🌦️ MeteoSwiss LLM 工具
为 AI 助手提供瑞士天气数据 — 由 MeteoSwiss 开放政府数据(OGD)驱动,与 MeteoSwiss 应用和网站使用的数据相同。免费使用,无需 API 密钥。
meteoswiss-mcp.ars.is — 立即试用托管服务,无需设置。
本仓库也提供了一个设计问题的实践答案:应该如何让 AI Agent 访问公共数据集? 它以两种方式实现了相同的 MeteoSwiss 数据访问功能 — 作为Agent 技能(Markdown 说明加 Bash 脚本,无需服务器),以及作为 MCP 服务(结构化工具、模糊匹配、缓存和托管)。我们在 技能与 MCP 案例研究中对这两种方案进行了客观比较。
第三部分 meteoswiss-forecast-evals 展示了由评测驱动的接口设计:通过一个 promptfoo 套件,衡量 13 个大模型读取预报 JSON 的效果,并据此确定了一项实际设计决策 — 本地时间戳优于 UTC;按小时查询的得分约为 100%,而 UTC 约为 0%。
这些工具提供的功能:
- 多日预报,覆盖约 6,000 个瑞士地点(邮政编码、气象站、地名)
- 实时测量数据,来自约 300 个气象站(约 160 个提供完整天气数据,约 140 个仅提供降水数据),每 10 分钟更新一次
- 气象站发现,可按名称、州或 GPS 坐标查找
- 花粉监测,数据来自瑞士各地约 15 个气象站
- 气候序列,来自国家基础气候网络(NBCN),可追溯数十年
- MeteoSwiss 网站搜索和内容检索
本仓库展示的内容
- Agent 技能 — 教会 Agent 使用
curl/awk/jq直接获取开放数据:约 630 行 Markdown 和 Bash,无需任何基础设施。→ packages/meteoswiss-skills - MCP 服务 — 将相同数据封装为结构化、经过验证的工具,支持气象站模糊匹配、地理编码、按 TTL 分层缓存,配有完整测试套件、Docker 和托管实例。→ packages/meteoswiss-mcp
- 由评测驱动的接口设计 — 将工具输出视为语言模型的接口,在发布前衡量其可读性。→ packages/meteoswiss-forecast-evals
阅读对比:技能与 MCP 服务:为 AI Agent 提供相同数据的两种方式。
选择适合你的方式
两种方式都能回答相同的天气问题。选择安装哪种方式取决于你的 Agent:
| MCP 服务 | Agent 技能 | |
|---|---|---|
| 是什么 | 独立服务,通过 MCP 提供 7 个结构化工具 | Markdown 指令 + 5 个由 Agent 直接运行的 bash 脚本 |
| 适用于 | Claude Desktop、Claude.ai、Cursor,以及任何 MCP 客户端 | Claude Code、Cursor,以及任何可访问 shell 的 Agent |
| 覆盖范围 | 天气预报、当前天气、气象站、花粉、气候序列、网站搜索 | 天气预报、当前天气、气象站、花粉 |
| 额外功能 | 模糊匹配、地理编码、缓存、DE/FR/IT 提示词、结构化 JSON | 无需服务,无需 Node.js——只用 curl、awk、jq |
| 规模 | 约 6.6k 行 TypeScript,在 CI 中测试 | 约 630 行 Markdown + bash |
| 安装方式 | 一行命令(托管实例)、npm 或 Docker | 插件市场、Skills CLI 或符号链接 |
完整对比——功能对照表、工程权衡、上下文开销以及如何选择:docs/skill-vs-mcp.md。
MCP 服务——快速开始
使用托管实例(无需安装):
# Claude Code
claude mcp add meteoswiss https://meteoswiss-mcp.ars.is/mcp
对于 Cursor,可从 Cursor Directory 安装,或通过 Settings → MCP 手动添加。
也可以使用 Docker 自托管:
docker run -p 3000:3000 ghcr.io/eins78/meteoswiss-mcp:latest
Claude Desktop 设置、环境变量和完整文档,请参阅 meteoswiss-mcp README。
Agent 技能——快速开始
通过 Claude Code 插件市场安装:
/plugin marketplace add eins78/meteoswiss-llm-tools
/plugin install meteoswiss-skills@meteoswiss-marketplace
也可以使用 Skills CLI:
pnpx skills add https://github.com/eins78/meteoswiss-llm-tools.git#packages/meteoswiss-skills --global --agent claude-code --all
手动安装和详情请参阅 meteoswiss-skills README。
可用工具(MCP 服务)
| 工具 | 说明 |
|---|---|
meteoswissLocalForecast | 按邮政编码、气象站或地名查询多日天气预报 |
meteoswissCurrentWeather | 实时测量数据(温度、风、湿度、气压) |
meteoswissStations | 按名称、州或坐标搜索气象站网络 |
meteoswissPollenData | 监测站的花粉浓度数据 |
meteoswissClimateData | NBCN 气候序列——温度、降水、日照和可追溯数十年的气候指标 |
search | 搜索 MeteoSwiss 网站内容(DE、FR、IT、EN) |
fetch | 获取 MeteoSwiss 页面完整内容 |
示例问题
两种方式均适用——只需使用瑞士的四种语言中的任意一种提问:
- “What's the weather forecast for Zurich this week?”
- “Wie wird das Wetter in Bern morgen?”
- “Quelle est la météo à Genève?”
- “Che tempo fa a Lugano?”
软件包
| 软件包 | 版本 | 说明 |
|---|---|---|
meteoswiss-mcp | MCP 服务,提供结构化工具、模糊匹配和地理编码 | |
meteoswiss-skills | 1.0.0 | Agent 技能——直接通过 HTTP 访问,无需服务 |
meteoswiss-forecast-evals | — | 用于评估天气预报 JSON 格式的 LLM 评估套件(独立项目,不属于工作区成员) |
文档
- 技能与 MCP 案例研究——对两种方式进行坦诚比较
- 评估结果:天气预报 JSON 理解能力——本地时间与 UTC 对照测试
- MCP 服务用户指南
- 文档索引
开发
git clone https://github.com/eins78/meteoswiss-llm-tools.git
cd meteoswiss-llm-tools
nvm use && pnpm install
各软件包专属命令请参阅对应软件包的 README。此仓库使用 changesets 管理版本。
手动生成的特定时间点测试报告(例如实时 MCP 工具测试通过报告)位于 docs/test-reports/。
数据来源
所有天气数据均来自 MeteoSwiss Open Government Data (OGD)——瑞士联邦气象与气候局官方免费提供的数据。这些数据也用于 MeteoSwiss 应用和网站。
许可证
CC0-1.0——公有领域
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。