MeteoSwiss MCP Server

io.github.eins78由 GitHub 帳號 eins78 發布v2.0.2更新於 Oct 26, 2026

Swiss weather data for AI assistants — forecasts, measurements, stations, pollen.

已驗證Streamable HTTP可網頁執行位置與生活網頁搜尋與抓取

概覽

AI 產生的概覽

MeteoSwiss 天氣 MCP 伺服器,讓助理取得瑞士天氣預報、即時測站觀測、花粉資料、氣候序列與網站內容檢索。

可以做什麼
  • 依郵遞區號、測站或地名查詢瑞士多地天氣預報
  • 讀取約 300 個自動氣象測站的即時觀測資料
  • 依名稱、州或座標搜尋與瀏覽氣象測站網路
  • 取得 7 種監測物種的目前花粉濃度
  • 調閱國家氣候網路數十年尺度的氣候序列與氣候指標
  • 以德、法、義、英四種語言檢索 MeteoSwiss 網站內容,並將頁面擷取為 markdown 或純文字
適用情境
適合需要助理回答瑞士天氣、預報、即時天氣狀況、花粉或長期氣候資料問題的情境,支援四種語言,不必自行建置資料管線。
執行需求
可使用託管的遠端端點(免安裝),也可在本機執行。npm 套件需要 Node.js;以 Docker 或原始碼自架需 Node.js v22+ 與 pnpm。未宣告帳號、API 金鑰或請求標頭。自架執行個體透過 PORT、PUBLIC_URL、BIND_ADDRESS、MAX_SESSIONS、TRUST_PROXY 等變數設定。
安裝前請注意
此伺服器為唯讀:僅取得公開的天氣與網站資料,不會修改任何內容。請求會送往 MeteoSwiss 開放資料與 MeteoSwiss 網站,查詢內容對上游服務可見。自架時須正確設定 TRUST_PROXY,否則用戶端可偽造 IP 繞過速率限制。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 MeteoSwiss MCP Server,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.eins78%2Fmeteoswiss-mcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "meteoswiss": {
      "type": "http",
      "url": "https://meteoswiss-mcp.ars.is/mcp"
    }
  }
}

README

🌦️ MeteoSwiss MCP Server

[npm version] [License: CC0-1.0] [Node.js >= 22] [Cursor Directory]

MCP server for MeteoSwiss weather data — powered by MeteoSwiss Open Data, the same data behind the MeteoSwiss app and website.

This package is the server half of the repo's skill vs. MCP case study — the same data is also available as a no-infrastructure agent skill.

meteoswiss-mcp.ars.is — try it now, no setup needed.

📖 Documentation — using the tools, running your own instance (full environment variable reference), and development.

  • Multi-day forecasts for ~6000 Swiss locations (postal codes, stations, place names)
  • Real-time measurements from ~300 stations (~160 full weather + ~140 precipitation-only), updated every 10 minutes
  • Station discovery by name, canton, or GPS coordinates
  • Pollen monitoring from ~15 stations across Switzerland
  • Climate series from the National Basic Climatic Network (NBCN), going back decades
  • MeteoSwiss website search and content retrieval

Use the Hosted Service

No installation required — the server is hosted at https://meteoswiss-mcp.ars.is.

Claude Code

bash
claude mcp add --transport http meteoswiss https://meteoswiss-mcp.ars.is/mcp

Claude Desktop

Add to your configuration file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

json
{  "mcpServers": {    "meteoswiss": {      "command": "npx",      "args": ["mcp-remote", "https://meteoswiss-mcp.ars.is/mcp"]    }  }}

Cursor

Install from the Cursor Directory, or add manually via Settings → MCP → Add Server → paste https://meteoswiss-mcp.ars.is/mcp.

Claude.ai

Go to Settings → Integrations → Add MCP Server → paste https://meteoswiss-mcp.ars.is/mcp.

Example Questions

  • "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?"
  • "How windy is it at Jungfraujoch right now?"
  • "Show me pollen data for Zurich"

Available Tools

ToolDescription
meteoswissLocalForecastMulti-day forecasts for any Swiss location by postal code, station, or place name
meteoswissCurrentWeatherReal-time measurements from automatic weather stations (temperature, wind, humidity, pressure)
meteoswissStationsSearch and browse the MeteoSwiss station network by name, canton, or coordinates
meteoswissPollenDataCurrent pollen concentration data from monitoring stations
meteoswissClimateDataNBCN climate series — temperature, precipitation, sunshine, and climate indicators going back decades
searchSearch MeteoSwiss website content (DE, FR, IT, EN)
fetchFetch full content from MeteoSwiss pages in markdown, text, or HTML

Prompts

Pre-configured prompts for common weather queries:

PromptLanguageDescription
wetterNordschweizGermanForecast and current weather for Northern Switzerland
wetterSchweizGermanWeather for any Swiss location
meteoSuisseRomandeFrenchForecast and current weather for Western Switzerland
meteoTicinoItalianForecast and current weather for Southern Switzerland

Self-Hosting

Docker

bash
docker run -p 3000:3000 ghcr.io/eins78/meteoswiss-mcp:latest

With custom URL:

bash
docker run -p 3000:3000 -e PUBLIC_URL=https://your-domain.com ghcr.io/eins78/meteoswiss-mcp:latest

Docker Compose

bash
docker compose up

From Source

bash
git clone https://github.com/eins78/meteoswiss-llm-tools.gitcd meteoswiss-llm-tools/packages/meteoswiss-mcppnpm installpnpm buildpnpm start

The server will be available at http://localhost:3000. MCP endpoint: http://localhost:3000/mcp.

Local MCP Configuration

json
{  "mcpServers": {    "meteoswiss-local": {      "command": "npx",      "args": ["mcp-remote", "http://localhost:3000/mcp"]    }  }}

Environment Variables

VariableDefaultDescription
PORT3000Server port
PUBLIC_URL—Full public URL for URL generation (e.g. https://meteoswiss-mcp.ars.is)
USE_TEST_FIXTURESfalseUse local test data instead of live API
BIND_ADDRESS0.0.0.0Interface to bind to
MAX_SESSIONS100Maximum concurrent sessions
MAX_SESSIONS_PER_CLIENT10Maximum concurrent sessions per client IP (as seen through TRUST_PROXY); further initialize requests get 429
SESSION_TIMEOUT_MS300000Session timeout in milliseconds
TRUST_PROXY0Number of reverse-proxy hops to trust for the client IP (X-Forwarded-For). Set 1 behind one proxy such as Caddy; leave 0 when clients reach the server directly, or they can spoof their IP past the rate limit
DEBUG—Debug namespaces (e.g. mcp:*)

This table lists the commonly used variables. The configuration reference documents all of them, including rate limiting, the data cache and the content cache.


Development

Prerequisites

  • Node.js v22+ (nvm recommended)
  • pnpm

Setup

bash
nvm usepnpm install

Commands

CommandDescription
pnpm devStart with hot reloading
pnpm startStart the server
pnpm buildBuild TypeScript
pnpm testRun tests
pnpm run lintType checking + ESLint
pnpm run fixAuto-fix lint errors
pnpm run ciFull CI (lint + build + test)
pnpm run dev:inspectTest with MCP Inspector

Project Structure

src/  index.ts              # Entry point  server.ts             # MCP server (factory pattern)  data/                 # Data access and transformation  schemas/              # Zod schemas for validation  tools/                # MCP tool implementations  support/              # Logging, validation, HTTP, sessions  views/homepage/       # Server homepage contenttest/  integration/          # Integration tests for all tools  __fixtures__/         # Test data

Debugging

Enable debug output with the DEBUG environment variable:

bash
DEBUG=mcp:* pnpm dev          # All debug outputDEBUG=mcp:tools pnpm dev      # Tool execution onlyDEBUG=mcp:transport pnpm dev  # Transport layer only

See docs/debugging-guide.md for more.

Contributing

Contributions are welcome! Run pnpm run fix && pnpm run ci before committing.

See docs/releasing.md for the release process.

License

CC0-1.0 — public domain

來源:packages/meteoswiss-mcp/README.md,提交 3d96194

工具

7

fetch

Fetch full content from a MeteoSwiss webpage and convert to markdown or plain text. Use the search tool first to discover valid page URLs, then pass the full URL as the id parameter.

輸入參數id必填formatincludeMetadata

meteoswissLocalForecast

Get a multi-day weather forecast for any Swiss location. Returns daily summaries (temperature, precipitation, sunshine, wind, weather icon) plus a hierarchical hourly breakdown of every series. This uses official MeteoSwiss Open Data — the same forecasts powering the MeteoSwiss app and website. Accepts: - Postal codes: "8001" (Zurich), "3000" (Bern), "1200" (Geneva) - Station abbreviations: "SMA" (Zurich Fluntern), "BER" (Bern) - Place names: "Zurich", "Basel", "Lugano" Coverage: ~6000 Swiss locations (all postal codes + weather stations + mountain points). Forecast horizon: up to 9 days. Updated hourly. Each day's summary fields: temperature_min_c, temperature_max_c, precipitation_total_mm, sunshine_total_minutes, wind_avg_kmh, wind_gust_max_kmh, weather, weather_icon_url. Each day also includes "hourly": one array of per-hour objects covering every series together — { time, temperature_c, precip_mm, sunshine_minutes, wind_kmh, wind_gust_kmh } — useful for judging *when* rain, sun, or wind is expected, not just the daily summary: - Each entry's "time" is already local wall-clock time for the location (Europe/Zurich), with the UTC offset included, e.g. "2026-07-09T14:00:00+02:00". It is NOT UTC — do not convert it. - A dry/calm/sunless hour is reported as its measured value (often 0), not omitted. A fully dry day is still a full array of zero-precipitation hours, not an empty array. - Each field is independently null if just THAT series has no reading for a given hour — the other fields for that same hour are still populated. An hour is omitted entirely only when every series is missing for it. - "hourly" itself is null when no hourly breakdown exists for this location at all (a total data gap); [] only when this location supports hourly data but none was available for that specific day. - For weather stations, temperature_min_c/temperature_max_c/precipitation_total_mm are MeteoSwiss's own official daily aggregates — a different, separately-cura

輸入參數dayslocation必填

meteoswissCurrentWeather

Get real-time weather measurements from ~300 Swiss automatic weather stations (~160 full weather + ~140 precipitation-only). Returns temperature, precipitation, wind, humidity, pressure, sunshine, and more. Data updates every 10 minutes. Precipitation-only stations return only rainfall data. For 8 stations (Zurich, Basel, Chur, Sion, Altdorf, Säntis, Jungfraujoch, Grand St-Bernard), also includes daily visual observations: cloud cover, fog, rain, snowfall, hail, and snow coverage. Accepts station names ("Zurich"), abbreviations ("SMA"), addresses ("Bahnhofplatz 1 Bern"), or WGS84 coordinates. Automatically finds the nearest station.

輸入參數stationcoordinates

meteoswissStations

List and search MeteoSwiss measurement stations. Filter by name, canton, or browse the full network of ~300 stations (~160 full weather + ~140 precipitation-only) across Switzerland.

輸入參數limitcantonsearch

meteoswissPollenData

Get current pollen concentration data from MeteoSwiss monitoring stations (~15 stations across Switzerland). Shows pollen levels for 7 measured species (alder, birch, hazel, beech, ash, oak, grasses) — each is always included, with a "no-current-data" status when out of season. Ambrosia (ragweed) is a MeteoSwiss forecast-only category and is not part of this OGD measurement network, so it is not included. Useful for allergy sufferers.

輸入參數station

meteoswissClimateData

Get homogeneous climate measurement series from Switzerland's National Basic Climatic Network (NBCN). Returns temperature, precipitation, sunshine, radiation, wind, pressure, and climate indicators (frost days, summer days, heat days) going back decades. 29 climate stations + 46 precipitation stations with daily, monthly, and yearly resolution. Use cases: "What are typical January temperatures in Zurich?", "How has precipitation changed in Basel over 50 years?", "How many heat days did Lugano have last year?" Accepts station names ("Zurich", "Basel"), abbreviations ("SMA", "BAS"), or WGS84 coordinates.

輸入參數limitstationend_dateresolutionstart_datecoordinates

版本歷史

1
  1. v2.0.2最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分