swiss-environment-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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
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 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
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:
Aktueller Pegel/Abfluss/Temperatur einer Station, z.B. für einen
Hochwasser-Lagecheck.
Station-ID via 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 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 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 Regionsbezogener Einstieg (Event-, Schulausflug-, Infrastruktur-
Planung): welches Tool liefert für die Region welche Gefahr.
Netzwerkfrei/deterministisch. Regionsscharfe Waldbrand-Stufen:
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 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 → 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 Verfügbare Tierarten + Codes nachschlagen, bevor mit
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 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 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 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 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 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 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| get_air_limits | Schweizer LRV-Grenzwerte und WHO 2021-Richtwerte für Luftschadstoffe. |
| get_nabel_stations_resource | Vollständige NABEL-Stationsliste als strukturierte JSON-Ressource. |
| get_flood_levels_resource | Hochwasser-Gefahrenstufen 1–5 mit Beschreibungen. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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