
Meteoswiss Mcp
io.github.malkreide由 GitHub 账号 malkreide 发布v0.7.0更新于 Oct 24, 2026
MeteoSwiss Open Data for weather, climate normals, warnings
概览
让助手获取瑞士天气与气候数据:站点观测、ICON 预报、气候常年值和官方预警。
- 可以做什么
- 以六个只读工具封装 MeteoSwiss 开放数据:meteo_stations 按州列出 SwissMetNet 站点,meteo_current 返回 10 分钟观测值,meteo_forecast 按地点或坐标给出 1 至 16 天预报,meteo_school_check 为户外学校活动给出绿/黄/红适宜度,meteo_climate_normals 返回 1991-2020 年月度气候常年值,meteo_warnings 按全国、州或邮编报告生效中的官方预警。
- 适用场景
- 适合涉及瑞士天气、预报、气候对比或官方预警的问题,例如安排户外活动或查询某地天气状况。数据范围限于瑞士及其数据源。
- 运行要求
- 通过 stdio 在本地运行,通常以 uvx meteoswiss-mcp 启动,因此需要 Python/uv 运行环境。无需账号或 API 密钥,数据源均为公开数据。获取实时数据需要访问所列上游主机的网络。可选的 HTTP 模式会用到 MCP_TRANSPORT、MCP_HOST、MCP_PORT、MCP_API_KEY 等环境变量。
安装
在 SourceWeft 中
- 打开 控制台中的 Meteoswiss Mcp,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
🌦️ meteoswiss-mcp
[CI] [PyPI] [Python] [License: MIT] [swiss-public-data-mcp]
MCP server for Swiss weather and climate data from MeteoSwiss.
Connects AI models to the SwissMetNet measurement network (160+ stations, 10-minute interval), MeteoSwiss ICON-CH1/CH2-EPS forecasts and climate normals 1991–2020. Part of the swiss-public-data-mcp portfolio.
Demo query (anchor example)
[Demo: Claude asks about sports-day suitability → meteo_school_check tool call → structured weather traffic-light response]→ meteo_school_check(location="Zürich Oerlikon", activity="Sporttag") returns a 🟢/🟡/🔴 traffic light for each day of the coming week — straight from the MeteoSwiss ICON model.
Combined with swiss-environment-mcp:
→ meteo_current(station='REH') + env_nabel_current(station='ZUE') = a complete environmental picture.
→ More use cases by audience →
Tools (6)
Tool annotations (MCP hints)
All tools carry explicit MCP annotations — relevant for the client approval UI and for the LLM's safety decisions.
Read rules: all 6 tools are readOnly + non-destructive — the server fundamentally cannot write or delete anything. idempotentHint=False marks tools that return different values depending on when they are called.
MCP protocol version
→ Full roadmap & update strategy: docs/roadmap.md
Quick start
Claude Desktop
Claude Desktop (local development)
Cloud / Render.com (Streamable HTTP)
Configuration via ENV variables (the CLI flags --http / --port N still work as an override):
Docker / Render
The repo includes a production-ready multi-stage Dockerfile (non-root user, HEALTHCHECK) and a render.yaml blueprint:
On Render: "New → Blueprint" → select the repo. Defaults (plan starter, Frankfurt, single instance) are set in render.yaml.
Important: numInstances: 1 is set deliberately — sticky-session routing for multi-replica (audit SCALE-002/003) is not yet implemented.
Structured logging
All tool invocations, upstream failures and egress blocks are emitted as JSON events on stderr (stdio-transport safe). Example:
HTTP-mode security
MCP_HOSTdeliberately defaults to127.0.0.1so that--httpon a dev laptop is not accidentally exposed to the local subnet (audit finding SEC-016).- All outgoing HTTP calls (including redirect follows) are validated against an allow-list:
data.geo.admin.ch,api.open-meteo.com,geocoding-api.open-meteo.com,opendata.swiss. Other hosts and IP literals (in particular169.254.169.254, RFC1918) are rejected withEgressBlocked(SEC-004 / SEC-021). - CORS: disabled by default (same-origin only). Browser clients (e.g. claude.ai web) need
MCP_ALLOWED_ORIGINS=<csv>— theMcp-Session-Idheader is then automatically inAccess-Control-Expose-Headers(SDK-004). - API-key auth: disabled by default. In a production HTTP setup, always set
MCP_API_KEY=<random>— requests without a validX-API-KeyorAuthorization: Bearer …are rejected with 401 (SEC-009 / SEC-013)./healthstays open for container health probes.
Example: production HTTP stack
Example queries
School planning
Climate comparison
Infrastructure & environment
Architecture
Data sources
Safety & limits
Known limitations
Responsibility matrix — snow & precipitation (delineation vs. swiss-environment-mcp)
To avoid duplicating snow and precipitation data across the portfolio,
responsibilities are split as follows. meteoswiss-mcp owns atmospheric
precipitation and weather; swiss-environment-mcp (SLF domain) owns snow on the
ground and avalanche danger.
Rule: atmospheric precipitation (rain/snowfall as mm) plus weather,
forecast, warnings and climate normals belong to meteoswiss-mcp; snow on the
ground and avalanche danger belong to swiss-environment-mcp (SLF). The SLF
IMIS precipitation sensor is used there only as context for the snowpack and is
never exposed as a precipitation tool, so it does not duplicate MeteoSwiss.
¹ SLF/snow tools in swiss-environment-mcp are in preparation (Phase-1 live-probe
completed 2026-07-19, see that repo's docs/probe-slf.md); the demarcation is
fixed now so the two servers do not collide once implemented.
Portfolio synergies
MCP Protocol Version
This server speaks two protocol eras over the same endpoint. The client's first request on a connection decides which one applies; a later claim from the other era is refused.
Both revisions are pinned in
tests/test_protocol_version.py and asserted
against the installed SDK, so a Dependabot bump of mcp cannot move either one
silently. It is also measured on the wire:
tests/test_spec_2026.py sends real requests of
both eras through the same ASGI stack main() hands to uvicorn — a
2026-07-28 tool call with no handshake and no session, and an initialize
that is capped at 2025-11-25.
No deprecated capability. 2026-07-28 deprecates logging, sampling and
roots (SEP-2577). The server calls none of them: in-flight status goes out as
notifications/progress (reaching any client that sends a progressToken, in
both eras), and failures are stated in the tool result itself. A test keeps
the source free of ctx.info/ctx.warning and friends.
Note that the SDK's LATEST_PROTOCOL_VERSION is an alias for the modern
era, not for the handshake era — pinning against it alone would leave the era
that current clients actually negotiate free to drift.
Update policy. When the gate fails, do not edit the constant blindly: read
the spec changelog between the two revisions, verify the server still behaves,
then move the constant, this section, README.de.md and
CHANGELOG.md together.
Testing
Development
MCP Inspector (local test)
Contributing
See the contributing guidelines (Deutsch).
Security
See the security policy (Deutsch) for the security posture and how to report a vulnerability.
License
MIT License – see LICENSE.
Source data: MeteoSwiss Open Government Data (CC BY 4.0). When using the data, cite: Source: MeteoSwiss.
Author
Hayal Oezkan · github.com/malkreide
Related servers
[swiss-environment-mcp] [zurich-opendata-mcp] [swiss-transport-mcp]
Installation
Run via uv's uvx — no clone or manual install needed. Add to your MCP client config (mcpServers for Claude Desktop, Cursor and Windsurf; use a top-level servers key for VS Code in .vscode/mcp.json):
来源:README.md,提交 19aca71
工具
0版本历史
2- v0.7.0最新Sep 27, 2026
- v0.6.1Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分