Skip to main content
Glama
malkreide

swiss-environment-mcp

by malkreide

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
env_nabel_stationsA

Listet alle 16 NABEL-Messstationen des nationalen Luftmessnetzes (BAFU) auf.

Das NABEL (Nationales Beobachtungsnetz für Luftfremdstoffe) misst seit 1991 kontinuierlich an 16 Standorten in der Schweiz: NO₂, O₃, PM10, PM2.5, SO₂, CO, Russ und weitere Parameter.

Einstieg in Luftqualitätsdaten: Stationsübersicht, um danach mit env_nabel_current die Messwerte einer konkreten Station zu holen. 16 feste NABEL-Stationen (statisch, kein Live-Call).

Args: params (NabelStationsInput): - response_format: 'markdown' oder 'json'

Returns: str: Liste aller NABEL-Stationen mit Kürzel, Name, Kanton und Standorttyp. Enthält auch den Link zur BAFU-Datenabfrage.

env_nabel_currentA

Ruft aktuelle und historische Luftqualitätsdaten einer NABEL-Station ab.

Liefert Metadaten, Download-Links für Messdaten (CSV) sowie direkte Abfrage-URLs für den BAFU-Datenbrowser. Gemessene Parameter: NO₂, O₃, PM10, PM2.5, SO₂, CO, Russ (BC).

Aktuelle Luftqualität / Datenzugang einer konkreten NABEL-Station. Liefert Metadaten + Datenlinks, keine Echtzeit-Rohwerte. Stationskürzel via env_nabel_stations ermitteln.

Args: params (NabelCurrentInput): - station: Stationskürzel (z.B. 'ZUE', 'DUB', 'BER')

Returns: str: Stationsinformationen, Messparameter, Datenlinks und Grenzwertkontext.

env_air_limits_checkA

Bewertet einen gemessenen Luftschadstoffwert gegen Schweizer LRV-Grenzwerte und WHO 2021-Richtwerte.

Unterstützte Schadstoffe: NO2, PM10, PM2.5, O3, SO2, CO. Grenzwerte gemäss Schweizer Luftreinhalte-Verordnung (LRV, SR 814.318.142.1).

Einen gemessenen Schadstoffwert gegen Schweizer LRV + WHO 2021 einordnen (Überschreitung ja/nein, Verhältnis zum Grenzwert). Rein lokale Berechnung (kein Netzwerk). Unterstützt NO2, PM10, PM2.5, O3, SO2, CO.

Args: params (AirLimitsCheckInput): - pollutant: Schadstoffkürzel ('NO2', 'PM10', 'PM2.5', 'O3', 'SO2', 'CO') - value: Gemessener Wert in µg/m³ - averaging_period: Mittelungszeitraum ('annual', 'daily', 'hourly')

Returns: str: Grenzwert-Vergleich mit Schweizer LRV und WHO 2021, inkl. Überschreitungs-Flag.

env_hydro_stationsA

Listet hydrologische Messstationen des BAFU an Schweizer Flüssen und Seen auf.

Das BAFU betreibt ca. 260 Messstationen in der Schweiz. Stationen messen Wasserstand (Pegel), Abfluss (m³/s), Wassertemperatur und weitere Parameter in einem 10-Minuten-Intervall.

Hydromessstationen finden (nach Kanton/Gewässer), um danach mit env_hydro_current Pegel/Abfluss abzurufen. Bei API-Ausfall Fallback mit Beispielstationen. Leeres Filterresultat → match_type "none".

Args: params (HydroStationsInput): - canton: Kantonskürzel zum Filtern (z.B. 'ZH') - water_body: Gewässername zum Filtern (z.B. 'Limmat') - response_format: 'markdown' oder 'json'

Returns: str: Stationsliste oder Fehlertext bei API-Problemen.

env_hydro_currentA

Ruft aktuelle Messwerte einer hydrologischen BAFU-Messstation ab.

Liefert Pegel (m ü.M.), Abfluss (m³/s), Wassertemperatur (°C) sowie 24h-Min/Max-Werte. Daten werden alle 10 Minuten aktualisiert.

Bekannte Zürich-relevante Stationen:

  • 2099: Limmat – Zürich/Unterwerk

  • 2243: Sihl – Zürich

  • 2034: Zürichsee – Zürich/Tiefenbrunnen (Pegel)

Aktueller Pegel/Abfluss/Temperatur einer Station, z.B. für einen Hochwasser-Lagecheck. Station-ID via env_hydro_stations. 10-Minuten-Aktualisierung.

Args: params (HydroCurrentInput): - station_id: BAFU-Stationsnummer (z.B. '2099') - response_format: 'markdown' oder 'json'

Returns: str: Aktuelle Messwerte inkl. Zeitstempel, oder Fallback mit direktem Link.

env_hydro_historyA

Ruft historische Stundenwerte einer BAFU-Hydromesstations ab.

Ermöglicht zeitliche Analysen von Wasserstand, Abfluss und Temperatur über bis zu 30 Tage. Ideal für Trendanalysen und Extremereignis-Recherche.

Aktuellsten Messwert einer Station holen und den Zugang zu echten historischen Zeitreihen (Tages-/Langzeitmittel) aufzeigen. LINDAS liefert nur den aktuellen Wert (keine Zeitreihe). Historische Tages-/Langzeitmittel sind NICHT frei per API verfügbar und müssen bei der BAFU-Abfragezentrale bezogen werden.

Args: params (HydroHistoryInput): - station_id: BAFU-Stationsnummer - parameter: 'Abfluss', 'Pegel' oder 'Temperatur' (Kontext) - days: Anzahl Tage (Kontext)

Returns: str: Aktuellster Messwert (LINDAS) + Bezugsweg für historische Reihen.

env_flood_warningsA

Ruft aktuelle Hochwasserwarnungen aller BAFU-Messstationen in der Schweiz ab.

Das BAFU gibt Hochwasserwarnungen in 5 Gefahrenstufen aus: 1=Keine, 2=Mässig, 3=Erheblich, 4=Gross, 5=Sehr gross.

Aktive Hochwasserwarnungen schweizweit oder kantonal für eine Lagebeurteilung. 5 Gefahrenstufen. "Keine Warnung" ist eine explizite Entwarnung, kein Fehler.

Args: params (FloodWarningsInput): - min_level: Minimale Gefahrenstufe (Standard: 2) - canton: Kantonskürzel zum Filtern

Returns: str: Aktuell aktive Hochwasserwarnungen, gefiltert nach Gefahrenstufe.

env_bathing_waterA

Ruft die Badegewässerqualität der BAFU-Erhebung ab (LINDAS-Data-Cube).

Die Erhebung misst die hygienische Qualität von Badestellen an Schweizer Seen und Flüssen über E.coli- und Enterokokken-Konzentrationen. Im Gegensatz zu Pegel/Abfluss ist dies eine echte Mehrjahres-Zeitreihe (Saisondaten seit 2020, jährliche Nachführung).

Wasserqualität einer Badestelle prüfen («Kann man bei X baden?») oder Badestellen eines Kantons auflisten. Ohne location wird eine Badestellen-Übersicht geliefert; mit location die letzten Probenwerte dieser Stelle. Daten werden jährlich nach der Badesaison nachgeführt (kein Echtzeit-Monitoring).

Args: params (BathingWaterInput): - location: Badestellen-Name (Teilstring), leer = Übersicht - canton: Kantonskürzel zum Filtern - limit: max. Anzahl Messwerte bzw. Badestellen - response_format: 'markdown' oder 'json'

Returns: str: Probenwerte mit aufgelösten Standort-Labels, Kantonsnummer (Join-Key) und Lizenzfeld — nie rohe Code-URIs.

env_hazard_overviewA

Orientierungsübersicht zu Schweizer Naturgefahren: welche Gefahr über welches Tool bzw. welche offizielle Warnplattform abrufbar ist.

Hintergrund (verifiziert 2026-07-26, docs/probe-naturgefahren-hazards.md): Die frühere aggregierte naturgefahren.ch-Bulletin-API ist ersatzlos stillgelegt, und es existiert kein stabiler, dokumentierter öffentlicher JSON-Feed für die aggregierten Warnungen (weder MeteoSchweiz-OGD/STAC, opendata.swiss noch die undokumentierte App-API liefern einen sauberen Zugang). Statt eines fragilen Scrapings routet dieses Tool daher auf die dedizierten, live funktionierenden Tools dieses Servers und die offiziellen Warnplattformen. Aggregierte Wetter-/Unwetterwarnungen (Sturm/Gewitter/Hitze) sind Domäne von MeteoSchweiz bzw. meteoswiss-mcp (Zuständigkeitsmatrix).

Einstieg in die Schweizer Naturgefahrenlage: zu welcher Gefahr liefert welches Tool Live-Daten, und wo liegen die offiziellen Bulletins. Netzwerkfrei/deterministisch. Für Live-Werte die verlinkten Tools nutzen: Hochwasser→env_flood_warnings, Lawine→env_avalanche_bulletin, Waldbrand→env_wildfire_danger, Schnee→env_snow_current.

Args: params (HazardOverviewInput): - language: Sprache ('de', 'fr', 'it', 'en') — für die Portallinks

Returns: str: Gefahren→Tool-Routing plus offizielle Warnplattform-Links.

env_hazard_regionsA

Regionsbezogene Orientierung zu Naturgefahren: verweist für eine Region auf die dedizierten Live-Tools und die offiziellen Gefahrenkarten.

Wie env_hazard_overview netzwerkfrei: die aggregierte naturgefahren.ch-Regionen-API ist stillgelegt (2026), ohne stabilen Ersatz. Für regionsscharfe Live-Werte liefern die verlinkten Tools die Daten (Waldbrand z.B. via env_wildfire_danger mit Kanton-Filter).

Regionsbezogener Einstieg (Event-, Schulausflug-, Infrastruktur- Planung): welches Tool liefert für die Region welche Gefahr. Netzwerkfrei/deterministisch. Regionsscharfe Waldbrand-Stufen: env_wildfire_danger (canton-Filter). Karten: naturgefahren.ch / BAFU GIS.

Args: params (HazardRegionsInput): - region: Regionsname/Kanton (z.B. 'Zürich', 'Graubünden', 'Wallis') - hazard_type: Gefahrentyp ('hochwasser', 'lawinen', 'steinschlag', 'rutschungen') - language: Sprache

Returns: str: Regionsbezogenes Tool-Routing plus Karten-/Portal-Links.

env_wildfire_dangerA

Ruft den aktuellen Waldbrandgefahren-Index nach Regionen ab.

Die Waldbrandgefahr wird täglich durch das BAFU berechnet und auf einer 5-stufigen Skala (gering bis sehr gross) kommuniziert. Relevant für Schulausflüge, Events und Forstbetriebe.

Waldbrandgefahr-Index pro Region/Kanton, z.B. für Forstbetriebe oder Event-Planung. 5-stufige Skala, tagesaktuell (de/fr/it/en). Ohne Kanton-Filter werden die höchsten Stufen zuerst und auf 40 Regionen begrenzt gezeigt. Datenzugriff über einen zweistufigen, HTML-getragenen Vertrag (react-props der Startseite → signierte Blob-JSON-URL).

Args: params (WildfireDangerInput): - language: 'de', 'fr', 'it' - canton: Kantonskürzel zum Filtern

Returns: str: Aktuelle Waldbrandgefahr nach Regionen/Kantonen.

env_snow_stationsA

Listet die automatischen IMIS-Schneemessstationen des SLF auf.

Das SLF betreibt ein Netz automatischer Stationen (IMIS) in den Schweizer Bergen, die u.a. Schneehöhe, Neuschnee, Wind und Temperaturen messen.

Einstieg in die Schneedaten: Stationsübersicht (nach Kanton), um danach mit env_snow_current Schneehöhe/Neuschnee abzurufen. Datenquelle SLF (CC BY 4.0). type=SNOW_FLAT sind Flachfeld-Schneestationen. Kein Niederschlags-Tool (→ meteoswiss-mcp).

Args: params (SnowStationsInput): - canton: Kantonskürzel zum Filtern (z.B. 'GR') - response_format: 'markdown' oder 'json'

Returns: str: Stationsliste mit Code, Name, Kanton, Höhe und Typ.

env_snow_currentA

Ruft aktuelle Schneehöhe (HS) und Neuschnee 24 h (HN_1D) der SLF-IMIS- Stationen ab.

Werte in cm, modelliert aus dem SLF-Schneedeckenmodell. Ausserhalb der Schneesaison sind die Werte 0 (schneefrei) – das ist kein Fehler.

Aktuelle Schneelage nach Kanton oder Station, z.B. für Tourenplanung oder Schulausflüge. HS/HN_1D in cm. Kein Niederschlag (→ meteoswiss-mcp). Datenquelle SLF (CC BY 4.0).

Args: params (SnowCurrentInput): - canton: Kantonskürzel zum Filtern - station: IMIS-Stationscode zum Filtern - limit: max. Anzahl Stationen - response_format: 'markdown' oder 'json'

Returns: str: Schneehöhe und Neuschnee je Station, nach Schneehöhe absteigend.

env_avalanche_bulletinA

Ruft das aktuelle Lawinenbulletin des SLF ab (Warnstufen je Region).

Gefahrenstufen nach europäischer EAWS-Skala 1–5 (Gering bis Sehr gross). Ausserhalb der Lawinensaison wird kein Bulletin publiziert – dann meldet das Tool explizit «kein aktives Bulletin» (kein Fehler).

Aktuelle Lawinengefahr je Warnregion für Tourenplanung oder Sicherheitsbeurteilung. EAWS-Skala 1–5. Saisonal (Winter). Datenquelle SLF (CC BY 4.0). Für Schneehöhen → env_snow_current.

Args: params (AvalancheBulletinInput): - language: 'de', 'fr', 'it', 'en' - region: Regionsname/-code (Teilstring) zum Filtern

Returns: str: Warnstufen je Region oder Hinweis, dass kein Bulletin aktiv ist.

env_hunting_speciesA

Listet die in der Eidg. Jagdstatistik erfassten Tierarten mit ihren Codes auf.

Die Liste ist statisch eingebettet (aus der Live-Probe) und dient als Nachschlagewerk für env_hunting_stats (Parameter species).

Verfügbare Tierarten + Codes nachschlagen, bevor mit env_hunting_stats Abschuss-/Fallwildzahlen abgefragt werden. Rein lokal (kein Netzwerk). 36 Arten (Huftiere, Raubtiere, weitere Säuger).

Args: params (HuntingSpeciesInput): - response_format: 'markdown' oder 'json'

Returns: str: Liste der Tierarten mit sp-Code und Name.

env_hunting_statsA

Ruft Zeitreihen der Eidg. Jagdstatistik ab: Abschuss-, Bestand-, Aussetzungs- oder Fallwildzahlen je Tierart und Kanton (Jahre 2015–2024).

Datenherr ist das BAFU. Der zugrundeliegende Endpoint ist undokumentiert (Web-App-Backend); ein Schema-Guard fängt Strukturänderungen ab.

Entwicklung der Abschuss- oder Fallwildzahlen einer Tierart in einem Kanton über die Zeit. Tierart via Name oder Code (siehe env_hunting_species). Werte je Alters-/Geschlechtsklasse; Total = Summe. Jagdjahr meist 1. Apr.–31. März.

Args: params (HuntingStatsInput): - species: Tierart (Name oder sp-Code) - canton: Kantonskürzel oder 'CH' - data_type: 'abschuss', 'bestand', 'aussetzung', 'fallwild' - response_format: 'markdown' oder 'json'

Returns: str: Jahreswerte (Total + Klassen) oder aktionabler Hinweis bei Problemen.

env_bafu_datasetsA

Sucht BAFU-Datensätze auf dem Schweizer Open-Data-Portal opendata.swiss.

Das BAFU publiziert Datensätze zu Luft, Wasser, Boden, Biodiversität, Lärm, Klima, Wald und weiteren Umweltthemen als offene Daten (OGD). Ergebnisse enthalten Titel, Beschreibung und Download-URLs (CSV, JSON, WMS).

BAFU-Open-Data auf opendata.swiss durchsuchen (CSV/JSON/WMS), um danach mit env_bafu_dataset_detail Details/Download-URLs zu holen. Paginierung via offset/rows. 0 Treffer → match_type "none", dann breitere Begriffe versuchen.

Args: params (BafuDatasetsInput): - query: Suchbegriff ('Luftqualität', 'Hochwasser', 'NABEL', etc.) - rows: Anzahl Resultate (1–50) - offset: Offset für Paginierung

Returns: str: Liste der BAFU-Datensätze mit Kurzbeschreibung und Links.

env_bafu_dataset_detailA

Ruft vollständige Metadaten und Download-URLs eines BAFU-Datensatzes ab.

Liefert: Titel, Beschreibung, Ressourcen mit Direktlinks (CSV, JSON, WMS/WFS), Lizenz, Aktualisierungsintervall und Kontaktinformationen.

Vollständige Metadaten + Download-URLs eines konkreten Datensatzes. dataset_id/Slug zuerst via env_bafu_datasets ermitteln.

Args: params (BafuDatasetDetailInput): - dataset_id: Dataset-ID oder Slug (z.B. 'nabel-luftqualitaet-stationen')

Returns: str: Vollständige Metadaten inkl. aller Download-Ressourcen.

env_noise_aircraft_atA

Fluglärmbelastung an einem Punkt aus dem BAZL-Lärmbelastungskataster.

Beantwortet: «Liegt dieser Standort in einer Fluglärmzone — und in welcher dB-Stufe?» Grundlage sind die amtlichen Lärmkurven der zivilen Flugplätze (und, für period='military', von Locarno-Magadino).

Standortabklärung für Bauvorhaben, Schulhaus- oder Wohnbau- planung: dB-Belastung und Kataster-Referenz an einer LV95-Koordinate. Eingabe MUSS LV95 sein (EPSG:2056, Meter: E ~2.48–2.84 Mio, N ~1.07–1.30 Mio). WGS84-Grad (z.B. 8.54/47.37) wird abgewiesen. Die Kurven sind Isolinien, keine Flächen — das Ergebnis ist eine dB-Klammer mit dem höchsten Wert als oberer Schranke, kein interpolierter Punktwert. Orientierungsgrundlage, keine Baubewilligungsauskunft.

Args: params (NoiseAircraftAtInput): - east/north: LV95-Koordinate in Metern - period: Beurteilungszeitraum bzw. Verkehrsart (8 Werte, s. Schema) - radius_m: Suchradius in Metern (10–1000, Default 100) - response_format: 'markdown' oder 'json'

Returns: str: Massgebender dB-Wert, dB-Klammer, alle gefundenen Kurven, Kataster-Provenienz und amtlicher PDF-Link.

env_noise_aircraft_registersA

Übersicht der publizierten Fluglärm-Lärmbelastungskataster.

Das Provenienz-Tool: Es beantwortet «wie alt ist die Grundlage». Für jeden Flugplatz die Gültigkeitsdaten, die Anzahl Lärmkurven, den abgedeckten dB-Bereich und den Link auf den amtlichen Katasterplan.

Vor einer Standortabklärung prüfen, ob für den betreffenden Flugplatz überhaupt ein Kataster existiert und wie aktuell er ist. Ohne period werden alle acht Sublayer abgefragt (acht Upstream-Requests). Die Gültigkeitsdaten streuen erheblich (2009–2024) — ein Kataster ist ein Stichtagsdokument, kein Echtzeitdienst.

Args: params (NoiseAircraftRegistersInput): - period: optionaler Filter auf einen Sublayer - response_format: 'markdown' oder 'json'

Returns: str: Tabelle der Kataster mit Gültigkeitsdaten und amtlichen PDF-Links.

env_noise_limits_checkA

Vergleicht einen Fluglärm-Beurteilungspegel gegen die LSV-Belastungsgrenzwerte.

Grundlage: Lärmschutz-Verordnung (LSV, SR 814.41), Anhang 5 «Belastungsgrenzwerte für den Lärm ziviler Flugplätze» — differenziert nach Empfindlichkeitsstufe (ES I–IV) und Schwelle (Planungswert / Immissionsgrenzwert / Alarmwert).

Einen dB-Wert aus env_noise_aircraft_at (oder aus einem Gutachten) rechtlich einordnen: welche Schwelle ist überschritten und mit welcher Folge. Rein lokale Berechnung (kein Netzwerk). Für period='military' wird die Prüfung bewusst verweigert — Anhang 5 gilt nur für zivile Flugplätze, für Militärflugplätze ist Anhang 8 einschlägig. Die Werte für ES II in der ersten Nachtstunde weichen von den übrigen Nachtstunden ab (Fussnote zu Ziff. 222).

Args: params (NoiseLimitsCheckInput): - level_db: Beurteilungspegel in dB(A) - sensitivity_level: 'I', 'II', 'III' oder 'IV' (auch 'ES II', '2') - period: Beurteilungszeitraum bzw. Verkehrsart - response_format: 'markdown' oder 'json'

Returns: str: Überschreitung je Schwelle mit Grenzwert, Differenz und Rechtsgrundlage im Klartext.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
get_air_limitsSchweizer LRV-Grenzwerte und WHO 2021-Richtwerte für Luftschadstoffe.
get_nabel_stations_resourceVollständige NABEL-Stationsliste als strukturierte JSON-Ressource.
get_flood_levels_resourceHochwasser-Gefahrenstufen 1–5 mit Beschreibungen.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/malkreide/swiss-environment-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server