Swiss MCP Server

BAFU environmental data, NABEL air quality, hydrology

Local serverstdioPython

What is the Swiss MCP server?

Swiss MCP server is a locally run integration for AI assistants that speak the Model Context Protocol. BAFU environmental data, NABEL air quality, hydrology.

What you get

The server covers four thematic clusters: air quality (NABEL), hydrology, natural hazards, and the BAFU open data catalogue. Each cluster maps to a group of purpose-built tools that translate raw agency data into clean JSON responses.

  • 🌬️ Air quality monitoring – 16 NABEL stations, NO₂/O₃/PM10/PM2.5/SO₂/CO, Swiss LRV + WHO 2021 limit checks
  • 💧 Hydrology – water levels, flow rates, temperatures across Swiss gauging stations
  • 🚨 Flood warnings – active alerts filtered by danger level and canton
  • 🏔️ Natural hazard bulletin – SLF/BAFU bulletin in DE/FR/IT/EN, region-specific warnings
  • 🔥 Wildfire danger – canton- and region-level fire danger index
  • ❄️ Snow & avalanches (SLF) – snow depth, new snow per IMIS station; avalanche danger levels (EAWS)

Setting it up

The server ships on PyPI as swiss-environment-mcp, so your MCP client can launch it on demand — there is no separate build step. Add the server block to your client's configuration, restart it, and the tools register themselves.

What the assistant can call

Once Swiss is connected, these are the calls the assistant has available:

  • env_nabel_stations — List all 16 NABEL monitoring stations with location type and canton
  • env_nabel_current — Current air quality data for a station (NO₂, O₃, PM10, PM2.5, SO₂, CO)
  • env_air_limits_check — Compare a measurement against Swiss LRV limits and WHO 2021 guidelines
  • env_hydro_stations — Filter hydrological gauging stations by water body (canton filter unavailable — see notes)
  • env_hydro_current — Current water level, flow rate and temperature at a station
  • env_hydro_history — Historical hourly values (up to 30 days) with download links ⚠️
  • env_flood_warnings — Active flood warnings filtered by danger level (nationwide — canton filter not applied)
  • env_bathing_water — Bathing water quality (E.coli, enterococci) per bathing site — multi-year time series
  • env_hazard_overview — Router: points to the dedicated live hazard tools + official portals (no network call — the aggregate naturgefahren.ch API was discontinued)
  • env_hazard_regions — Router: maps a hazard type (flood/avalanche/wildfire/snow) to the right live tool + portal (no network call)
  • env_wildfire_danger — Wildfire danger index by canton and region
  • env_snow_stations — List automatic SLF/IMIS snow measurement stations (by canton)

Configuration and credentials

  • Python 3.11+ - No API keys needed – all endpoints are publicly accessible without authentication ---

Before you rely on it

  • It runs with your machine's permissions. That is convenient and also the reason to think about what you point it at before you approve a tool call.
  • With 14 tools registered it takes up a noticeable share of the context window; turn it off in projects that never touch Swiss.
  • MCP clients confirm each tool call by default. Leave that on until you have watched what the swiss mcp server does with a few real requests.

Choosing this one

Plenty of monitoring and observability servers cover similar ground. The differences that matter in practice are scope of access and how much setup stands between you and a working tool call. Swiss's toolset — env_nabel_stations, env_nabel_current, env_air_limits_check and 11 more — is a fair guide to whether it matches your workflow. It is maintained by malkreide; worth a glance at recent repository activity before you build anything load-bearing on it.

We check each listing at SyncDev against the project's documentation before it goes live — if something here drifts out of date, it is a bug worth reporting.

Available tools

ToolWhat it does
env_nabel_stationsList all 16 NABEL monitoring stations with location type and canton
env_nabel_currentCurrent air quality data for a station (NO₂, O₃, PM10, PM2.5, SO₂, CO)
env_air_limits_checkCompare a measurement against Swiss LRV limits and WHO 2021 guidelines
env_hydro_stationsFilter hydrological gauging stations by water body (canton filter unavailable — see notes)
env_hydro_currentCurrent water level, flow rate and temperature at a station
env_hydro_historyHistorical hourly values (up to 30 days) with download links ⚠️
env_flood_warningsActive flood warnings filtered by danger level (nationwide — canton filter not applied)
env_bathing_waterBathing water quality (E.coli, enterococci) per bathing site — multi-year time series
env_hazard_overviewRouter: points to the dedicated live hazard tools + official portals (no network call — the aggregate naturgefahren.ch API was discontinued)
env_hazard_regionsRouter: maps a hazard type (flood/avalanche/wildfire/snow) to the right live tool + portal (no network call)
env_wildfire_dangerWildfire danger index by canton and region
env_snow_stationsList automatic SLF/IMIS snow measurement stations (by canton)
env_snow_currentCurrent snow depth (HS) and 24 h new snow (HN_1D) per station, in cm
env_avalanche_bulletinAvalanche danger levels (EAWS 1–5) per warning region, seasonal

How to install the Swiss MCP server

{
  "mcpServers": {
    "swiss-environment": {
      "command": "uvx",
      "args": ["swiss-environment-mcp"]
    }
  }
}

Add to claude_desktop_config.json, then restart Claude Desktop.

Configuration

  • Python 3.11+ - No API keys needed – all endpoints are publicly accessible without authentication ---

Example prompts to try

  • Use Swiss to env nabel stations.
  • Use Swiss to env nabel current.
  • Use Swiss to env air limits check.

Frequently asked questions

It connects Swiss to MCP-compatible AI assistants such as Claude and Cursor, exposing 14 tools (env_nabel_stations, env_nabel_current, env_air_limits_check, and more) that the assistant can call on your behalf. Instead of copying data back and forth by hand, the assistant works with Swiss directly.