io.github.malkreide/swiss-environment-mcp
BAFU environmental data, NABEL air quality, hydrology
Versions
0.2.3latestTools 21
env_nabel_stations 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. <use_case>Einstieg in Luftqualitätsdaten: Stationsübersicht, um danach mit `env_nabel_current` die Messwerte einer konkreten Station zu holen.</use_case> <important_notes>16 feste NABEL-Stationen (statisch, kein Live-Call).</important_notes> 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_current 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). <use_case>Aktuelle Luftqualität / Datenzugang einer konkreten NABEL-Station.</use_case> <important_notes>Liefert Metadaten + Datenlinks, keine Echtzeit-Rohwerte. Stationskürzel via `env_nabel_stations` ermitteln.</important_notes> Args: params (NabelCurrentInput): - station: Stationskürzel (z.B. 'ZUE', 'DUB', 'BER') Returns: str: Stationsinformationen, Messparameter, Datenlinks und Grenzwertkontext.
env_air_limits_check 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). <use_case>Einen gemessenen Schadstoffwert gegen Schweizer LRV + WHO 2021 einordnen (Überschreitung ja/nein, Verhältnis zum Grenzwert).</use_case> <important_notes>Rein lokale Berechnung (kein Netzwerk). Unterstützt NO2, PM10, PM2.5, O3, SO2, CO.</important_notes> 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_stations 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. <use_case>Hydromessstationen finden (nach Gewässer), um danach mit `env_hydro_current` Pegel/Abfluss abzurufen.</use_case> <important_notes>`canton` wird derzeit NICHT bedient: die Quelle, die den Kantons-Code mitlieferte, ist stillgelegt, und LINDAS führt keinen — das Tool sagt das explizit, statt eine unvollständige Liste auszugeben. Stattdessen `water_body` nutzen. Bei LINDAS-Ausfall Fallback mit Beispielstationen, im JSON an `provenance` erkennbar. Leeres Filterresultat → match_type "none".</important_notes> Args: params (HydroStationsInput): - canton: derzeit nicht bedienbar (Quelle stillgelegt) - water_body: Gewässername zum Filtern (z.B. 'Limmat') - response_format: 'markdown' oder 'json' Returns: str: Stationsliste, Absage zum Kantonsfilter, oder Fallback bei Ausfall.
env_hydro_current 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) <use_case>Aktueller Pegel/Abfluss/Temperatur einer Station, z.B. für einen Hochwasser-Lagecheck.</use_case> <important_notes>Station-ID via `env_hydro_stations`. 10-Minuten-Aktualisierung. Quelle ist LINDAS; kennt es die Nummer nicht, meldet das Tool das explizit (kein Ersatzwert aus einer anderen Quelle).</important_notes> Args: params (HydroCurrentInput): - station_id: BAFU-Stationsnummer (z.B. '2099') - response_format: 'markdown' oder 'json' Returns: str: Aktuelle Messwerte inkl. Zeitstempel.
env_hydro_history 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. <use_case>Aktuellsten Messwert einer Station holen und den Zugang zu echten historischen Zeitreihen (Tages-/Langzeitmittel) aufzeigen.</use_case> <important_notes>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.</important_notes> 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_warnings 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. <use_case>Aktive Hochwasserwarnungen schweizweit für eine Lagebeurteilung.</use_case> <important_notes>5 Gefahrenstufen. "Keine Warnung" ist eine explizite Entwarnung, kein Fehler. `canton` wird NICHT angewendet (LINDAS führt keinen Kantons-Code): die Antwort ist immer schweizweit und weist einen gesetzten Filter als nicht angewendet aus.</important_notes> Args: params (FloodWarningsInput): - min_level: Minimale Gefahrenstufe (Standard: 2) - canton: wird nicht angewendet (siehe Hinweise) Returns: str: Aktuell aktive Hochwasserwarnungen, gefiltert nach Gefahrenstufe.
env_bathing_water 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). <use_case>Wasserqualität einer Badestelle prüfen («Kann man bei X baden?») oder Badestellen eines Kantons auflisten.</use_case> <important_notes>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).</important_notes> 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_overview 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). <use_case>Einstieg in die Schweizer Naturgefahrenlage: zu welcher Gefahr liefert welches Tool Live-Daten, und wo liegen die offiziellen Bulletins.</use_case> <important_notes>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.</important_notes> Args: params (HazardOverviewInput): - language: Sprache ('de', 'fr', 'it', 'en') — für die Portallinks Returns: str: Gefahren→Tool-Routing plus offizielle Warnplattform-Links.
env_hazard_regions 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). <use_case>Regionsbezogener Einstieg (Event-, Schulausflug-, Infrastruktur- Planung): welches Tool liefert für die Region welche Gefahr.</use_case> <important_notes>Netzwerkfrei/deterministisch. Regionsscharfe Waldbrand-Stufen: `env_wildfire_danger` (canton-Filter). Karten: naturgefahren.ch / BAFU GIS.</important_notes> 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_danger 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. <use_case>Waldbrandgefahr-Index pro Region/Kanton, z.B. für Forstbetriebe oder Event-Planung.</use_case> <important_notes>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).</important_notes> Args: params (WildfireDangerInput): - language: 'de', 'fr', 'it' - canton: Kantonskürzel zum Filtern Returns: str: Aktuelle Waldbrandgefahr nach Regionen/Kantonen.
env_snow_stations 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. <use_case>Einstieg in die Schneedaten: Stationsübersicht (nach Kanton), um danach mit `env_snow_current` Schneehöhe/Neuschnee abzurufen.</use_case> <important_notes>Datenquelle SLF (CC BY 4.0). `type`=SNOW_FLAT sind Flachfeld-Schneestationen. Kein Niederschlags-Tool (→ meteoswiss-mcp).</important_notes> 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_current 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. <use_case>Aktuelle Schneelage nach Kanton oder Station, z.B. für Tourenplanung oder Schulausflüge.</use_case> <important_notes>HS/HN_1D in cm. Kein Niederschlag (→ meteoswiss-mcp). Datenquelle SLF (CC BY 4.0).</important_notes> 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_bulletin 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). <use_case>Aktuelle Lawinengefahr je Warnregion für Tourenplanung oder Sicherheitsbeurteilung.</use_case> <important_notes>EAWS-Skala 1–5. Saisonal (Winter). Datenquelle SLF (CC BY 4.0). Für Schneehöhen → `env_snow_current`.</important_notes> 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_species 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`). <use_case>Verfügbare Tierarten + Codes nachschlagen, bevor mit `env_hunting_stats` Abschuss-/Fallwildzahlen abgefragt werden.</use_case> <important_notes>Rein lokal (kein Netzwerk). 36 Arten (Huftiere, Raubtiere, weitere Säuger).</important_notes> Args: params (HuntingSpeciesInput): - response_format: 'markdown' oder 'json' Returns: str: Liste der Tierarten mit sp-Code und Name.
env_hunting_stats 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. <use_case>Entwicklung der Abschuss- oder Fallwildzahlen einer Tierart in einem Kanton über die Zeit.</use_case> <important_notes>Tierart via Name oder Code (siehe `env_hunting_species`). Werte je Alters-/Geschlechtsklasse; Total = Summe. Jagdjahr meist 1. Apr.–31. März.</important_notes> 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_datasets 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). <use_case>BAFU-Open-Data auf opendata.swiss durchsuchen (CSV/JSON/WMS), um danach mit `env_bafu_dataset_detail` Details/Download-URLs zu holen.</use_case> <important_notes>Paginierung via offset/rows. 0 Treffer → match_type "none", dann breitere Begriffe versuchen.</important_notes> 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_detail 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. <use_case>Vollständige Metadaten + Download-URLs eines konkreten Datensatzes.</use_case> <important_notes>dataset_id/Slug zuerst via `env_bafu_datasets` ermitteln.</important_notes> 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_at 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). <use_case>Standortabklärung für Bauvorhaben, Schulhaus- oder Wohnbau- planung: dB-Belastung und Kataster-Referenz an einer LV95-Koordinate.</use_case> <important_notes>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.</important_notes> 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_registers Ü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. <use_case>Vor einer Standortabklärung prüfen, ob für den betreffenden Flugplatz überhaupt ein Kataster existiert und wie aktuell er ist.</use_case> <important_notes>Ohne `period` werden alle acht Sublayer abgefragt (acht Upstream-Requests). Die Gültigkeitsdaten streuen erheblich (2009–2024) — ein Kataster ist ein Stichtagsdokument, kein Echtzeitdienst.</important_notes> 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_check 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). <use_case>Einen dB-Wert aus `env_noise_aircraft_at` (oder aus einem Gutachten) rechtlich einordnen: welche Schwelle ist überschritten und mit welcher Folge.</use_case> <important_notes>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).</important_notes> 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.
Permissions 3
network medium filesystem low env_vars low