BAFU environmental data, NABEL air quality, hydrology
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
π¨π Part of the Swiss Public Data MCP Portfolio
MCP server connecting AI models to Swiss environmental data from BAFU β air quality, hydrology, natural hazards, wildfire danger and open environmental datasets.
swiss-environment-mcp gives AI assistants like Claude direct access to real-time environmental data from Swiss federal authorities β no API keys required. Air quality readings from the national NABEL monitoring network, hydrological gauging stations, natural hazard bulletins, and the full BAFU dataset catalogue are all accessible through a single standardised MCP interface.
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.
Anchor demo query: "What is the current air quality at the NABEL station ZΓΌrich-Kaserne β and does it comply with WHO 2021 guidelines?" β More use cases by audience β
Or with uvx (no permanent installation):
Or via pip:
Try it immediately in Claude Desktop:
"What is the current air quality at NABEL station ZΓΌrich-Kaserne?" "Are there any active flood warnings in Switzerland right now?" "What is the wildfire danger level in Canton Valais?"
Minimal (recommended):
Config file locations:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonAfter saving, restart Claude Desktop completely.
For use via claude.ai in the browser (e.g. on managed workstations without local software):
Render.com (recommended):
render.yaml automaticallyhttps://your-app.onrender.com/sseDocker:
π‘ "stdio for the developer laptop, SSE for the browser."
All tools share the stable env_ name prefix β a deliberate namespace choice so
that the server's tools are recognisable and unlikely to collide when several MCP
servers are mounted together. Tool definitions (name, description, input schema)
are pinned via tool-snapshot.json; changes require a CHANGELOG entry (see
CONTRIBUTING).
Tool budget (21 tools, 7 clusters) β exhausted. Every tool maps to a distinct
user question, not to a REST endpoint β there is no CRUD/endpoint mirroring, and
the anchor queries are each answerable in a single call. The count sits above the
β€12 rule of thumb because the server deliberately spans seven environmental
domains (air, water, hazards, snow, hunting, catalogue, aircraft noise), each
needing a list/detail pair or a domain-specific action. Further consolidation was
considered and rejected: the *_stations/*_current pairs (NABEL, hydro, snow)
serve genuinely different intents (discovery vs. reading a known station) and
collapsing them would overload a single tool's parameters.
This is the ceiling. With the aircraft-noise cluster the server's tool budget
is spent: any further data source belongs in a separate *-mcp server, not here.
The next addition would instead trigger a review of whether some listings should
migrate to MCP resources rather than tools.
| Tool | Description | Data Source |
|---|---|---|
env_nabel_stations | List all 16 NABEL monitoring stations with location type and canton | NABEL / BAFU |
env_nabel_current | Current air quality data for a station (NOβ, Oβ, PM10, PM2.5, SOβ, CO) | NABEL / BAFU |
env_air_limits_check | Compare a measurement against Swiss LRV limits and WHO 2021 guidelines | Built-in |
| Tool | Description | Data Source |
|---|---|---|
env_hydro_stations | Filter hydrological gauging stations by water body (canton filter unavailable β see notes) | LINDAS SPARQL β hydrodaten.admin.ch (fallback) |
env_hydro_current | Current water level, flow rate and temperature at a station | LINDAS SPARQL β hydrodaten.admin.ch (fallback) |
env_hydro_history | Historical hourly values (up to 30 days) with download links β οΈ | hydrodaten.admin.ch |
env_flood_warnings | Active flood warnings filtered by danger level (nationwide β canton filter not applied) | LINDAS SPARQL |
env_bathing_water | Bathing water quality (E.coli, enterococci) per bathing site β multi-year time series | LINDAS SPARQL (data cube ubd0104) |
| Tool | Description | Data Source |
|---|---|---|
env_hazard_overview | Router: points to the dedicated live hazard tools + official portals (no network call β the aggregate naturgefahren.ch API was discontinued) | local |
env_hazard_regions | Router: maps a hazard type (flood/avalanche/wildfire/snow) to the right live tool + portal (no network call) | local |
env_wildfire_danger | Wildfire danger index by canton and region | waldbrandgefahr.ch |
| Tool | Description | Data Source |
|---|---|---|
env_snow_stations | List automatic SLF/IMIS snow measurement stations (by canton) | measurement-api.slf.ch |
env_snow_current | Current snow depth (HS) and 24 h new snow (HN_1D) per station, in cm | measurement-api.slf.ch |
env_avalanche_bulletin | Avalanche danger levels (EAWS 1β5) per warning region, seasonal | aws.slf.ch |
| Tool | Description | Data Source |
|---|---|---|
env_hunting_species | List the 36 species tracked by the federal hunting statistics (with codes) | jagdstatistik.ch (embedded) |
env_hunting_stats | Cull / game-loss / population figures per species, canton and year (2015β2024) | jagdstatistik.ch |
| Tool | Description | Data Source |
|---|---|---|
env_bafu_datasets | Search BAFU datasets on opendata.swiss (CKAN API) | opendata.swiss |
env_bafu_dataset_detail | Full metadata and download URLs for a specific dataset | opendata.swiss |
| Tool | Description | Data Source |
|---|---|---|
env_noise_aircraft_at | Aircraft noise exposure at an LV95 point β resolves the overlapping noise contours and returns a dB bracket with the highest value as an upper bound | api3.geo.admin.ch (BAZL) |
env_noise_aircraft_registers | Which airfields have a published cadastre, with validity dates, dB range and the official plan (PDF) β the provenance tool | api3.geo.admin.ch (BAZL) |
env_noise_limits_check | Compare a rating level against the LSV exposure limit values (planning value / immission limit / alarm value) by sensitivity level ES IβIV | Built-in (SR 814.41, Annex 5) |
βοΈ Legal notice β carried in every response of these three tools. The noise cadastre is an orientation aid. Legally binding information on construction projects is issued by the competent cantonal office or by the FOCA (BAZL). These tools do not replace a building permit clarification.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/swiss-environment-mcp)<a href="https://allmcps.com/mcp/swiss-environment-mcp"><img src="https://allmcps.com/api/badge/swiss-environment-mcp?style=directory" alt="Swiss Environment MCP on AllMCPs" /></a>