
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 分