io.github.malkreide/swiss-environment-mcp
PYPI · SWISS-ENVIRONMENT-MCP · SCANNED SEP 20
BAFU environmental data, NABEL air quality, hydrology
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 1 of 35 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency35
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: the license (MIT License) isn't a recognized OSI-approved license. See how to fix → Fail
- Actively maintained (last published 0 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability76
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 5781 tokens (~240/item across 24 items; 21 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
- Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 21 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 23 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the io.github.malkreide/swiss-environment-mcp server?
io.github.malkreide/swiss-environment-mcp runs locally as a PyPI package, launched with uvx swiss-environment-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · swiss-environment-mcp
claude mcp add malkreide-swiss-environment-mcp -- uvx swiss-environment-mcp
{
"mcpServers": {
"malkreide-swiss-environment-mcp": {
"command": "uvx",
"args": [
"swiss-environment-mcp"
]
}
}
} {
"servers": {
"malkreide-swiss-environment-mcp": {
"command": "uvx",
"args": [
"swiss-environment-mcp"
]
}
}
} codex mcp add malkreide-swiss-environment-mcp -- uvx swiss-environment-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"malkreide-swiss-environment-mcp": {
"type": "local",
"command": [
"uvx",
"swiss-environment-mcp"
],
"enabled": true
}
}
} openclaw mcp add malkreide-swiss-environment-mcp --command uvx --arg swiss-environment-mcp
mcp_servers:
malkreide-swiss-environment-mcp:
command: "uvx"
args: ["swiss-environment-mcp"] {
"McpServers": {
"malkreide-swiss-environment-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"swiss-environment-mcp"
]
}
}
} assistant mcp add malkreide-swiss-environment-mcp -t stdio -c uvx -a swiss-environment-mcp
{
"mcpServers": {
"malkreide-swiss-environment-mcp": {
"command": "uvx",
"args": [
"swiss-environment-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 +16
- Stability: 0.83 → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Malware scan: unverified → pass ▲ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 100 → unverified ▼ functional
- Package version: 0.6.0 → 0.7.0 functional
- 19 Sept 26 −2
- Stability: pass → 0.83 functional
- 18 Sept 26 0
- Stability: 0.97 → pass security
- 17 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Sept 26 −2
- Stability: pass → 0.80 functional
- 11 Sept 26 0
- Stability: 0.97 → pass security
- 10 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed pypi/swiss-environment-mcp@0.7.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 35 packages
| Packages resolved | 35 |
|---|---|
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
env_air_limits_check ~284
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_avalanche_bulletin ~234
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_bafu_dataset_detail ~175
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_bafu_datasets ~253
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_bathing_water ~302
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_flood_warnings ~239
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_hazard_overview ~391
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_hazard_regions ~297
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_hunting_species ~179
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_hunting_stats ~264
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_hydro_current ~276
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_hydro_history ~234
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_hydro_stations ~315
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_nabel_current ~207
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_nabel_stations ~225
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_noise_aircraft_at ~384
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_noise_aircraft_registers ~243
Ü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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_noise_limits_check ~363
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_snow_current ~247
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_snow_stations ~231
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
env_wildfire_danger ~251
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.
| Name | Type | Req | Description |
|---|---|---|---|
| params | – | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
What is the io.github.malkreide/swiss-environment-mcp server?
io.github.malkreide/swiss-environment-mcp is listed in the public MCP registry as io.github.malkreide/swiss-environment-mcp. BAFU environmental data, NABEL air quality, hydrology. This page covers its PyPI package (swiss-environment-mcp).
Is the io.github.malkreide/swiss-environment-mcp server safe to use?
io.github.malkreide/swiss-environment-mcp scores 79 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.malkreide/swiss-environment-mcp server expose?
io.github.malkreide/swiss-environment-mcp exposes 21 tools: env_nabel_stations, env_nabel_current, env_air_limits_check, env_hydro_stations, env_hydro_current, and 16 more. Their descriptions and schemas cost roughly 5,594 tokens of context every time the server is loaded.
Is the io.github.malkreide/swiss-environment-mcp server still maintained?
io.github.malkreide/swiss-environment-mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.