swisstopo-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 |
|---|---|
| swisstopo_geocodeA | Wandelt eine Adresse, einen Ortsnamen oder eine PLZ in Koordinaten um (Geocoding). Startpunkt für ortsbezogene Abfragen: Adresse → Koordinaten, die danach an swisstopo_get_height, swisstopo_map_query (operation='features_at_point') oder swisstopo_get_egrid übergeben werden. |
| swisstopo_reverse_geocodeA | Findet die nächstgelegene Adresse zu gegebenen WGS84-Koordinaten (Reverse Geocoding). Koordinaten aus Karte oder GPS in eine lesbare Adresse auflösen. |
| swisstopo_map_queryA | Fragt den nationalen Swisstopo-Kartenkatalog ab (500+ Layer): Layer finden, Felder ansehen, Features abfragen. Der übliche Ablauf ist eine Kette: operation='search_layers' liefert Layer-IDs, operation='layer_info' zeigt deren abfragbare Felder, danach operation='features_at_point' (räumlich) oder 'features_by_attribute' (nach Attributwert), und operation='feature_by_id' holt ein einzelnes Feature vollständig. Genau eine operation pro Aufruf. Felder, die zu einer anderen operation gehören, werden abgelehnt statt ignoriert — die Fehlermeldung nennt die zulässigen. Für Bauzone bzw. Gemeinde gibt es direkte Tools (swisstopo_zoning_at, swisstopo_municipality_at). 'features_at_point' nur nutzen, wenn zusätzliche Rohattribute gebraucht werden oder ein anderer Layer gefragt ist. Das ist der nationale Katalog von api3.geo.admin.ch. Für interkantonale und kantonale Quellen ist swisstopo_list_available_layers → swisstopo_query_geodata zuständig, für herunterladbare Datensätze swisstopo_search_geodata. |
| swisstopo_search_geodataA | Durchsucht den STAC-Katalog nach herunterladbaren Geodaten. Findet Orthophotos, Höhenmodelle (swissALTI3D), 3D-Gebäude und historische Karten zum Download. Liefert Collections/Metadaten; Download-Links via swisstopo_get_collection. |
| swisstopo_get_collectionA | Ruft Detailinformationen und Download-Links einer STAC-Collection ab. Zweiter Schritt nach swisstopo_search_geodata, um Assets/Download-URLs einer Collection zu erhalten. |
| swisstopo_map_urlA | Generiert eine teilbare map.geo.admin.ch-URL zum Öffnen im Browser. Einen Kartenausschnitt mit optionalen Layern als Link bereitstellen (kein Datenabruf). |
| swisstopo_get_heightA | Gibt die Höhe über Meer (m ü. M.) an einer Koordinate zurück. Punkthöhe für eine Adresse/Koordinate; für Linien siehe swisstopo_elevation_profile. Koordinaten entweder als lat/lon (WGS84) ODER als easting/northing (LV95) angeben — nicht beides. |
| swisstopo_elevation_profileA | Berechnet ein Höhenprofil entlang einer Linie aus mehreren Koordinatenpaaren. Höhenverlauf z.B. für Wander-/Schulweg-Analysen. Benötigt ≥2 Koordinatenpaare. Standard ist WGS84 ('lat1,lon1;lat2,lon2;…'); für LV95 coordinate_system='lv95' setzen und die Paare als 'easting,northing' übergeben. |
| swisstopo_zoning_atA | Gibt die harmonisierte Bauzone an einer Koordinate zurück (ch.are.bauzonen, ARE). «Welche Bauzone gilt hier?» in einem Aufruf — ohne vorher die Layer-ID via swisstopo_map_query erst suchen zu müssen. Der harmonisierte ARE-Layer ist eine Synthese für die schweizweite Vergleichbarkeit und NICHT rechtsverbindlich — verbindlich ist allein die kantonale/kommunale Nutzungsplanung. Der Hinweis steht in jedem Resultat. Koordinaten als lat/lon (WGS84) oder easting/northing (LV95). |
| swisstopo_municipality_atA | Gibt Gemeinde, BFS-Nummer und Kanton an einer Koordinate zurück (swissBOUNDARIES3D). Koordinate → amtliche BFS-Gemeindenummer, der Join-Key zu swiss-statistics-mcp und zurich-opendata-mcp. Der Layer führt eine Fläche pro historischem Jahrgang; es wird der aktuelle Stand zurückgegeben. Auf einer Gemeindegrenze oder ausserhalb der Schweiz bleibt das Resultat leer. |
| swisstopo_convert_coordinatesA | Rechnet Koordinaten amtlich zwischen WGS84 und LV95 um (swisstopo REFRAME). Wenn Koordinaten in LV95 (EPSG:2056) vorliegen und für die übrigen Tools nach WGS84 gebracht werden müssen — oder umgekehrt für den Katasterbezug, wo Zentimeter zählen. Achsenreihenfolge beachten: REFRAME benennt beide Eingaben easting/northing. Bei wgs84_to_lv95 ist easting der LÄNGENgrad und northing der BREITENgrad — umgekehrt zur lat/lon-Reihenfolge der übrigen Tools. Vertauschte Achsen werden abgewiesen, nicht stillschweigend umgerechnet. |
| swisstopo_get_egridA | Ermittelt die EGRID (Grundstück-ID) aus Koordinaten für einen bestimmten Kanton. Grundstück-ID (EGRID) zu einer Koordinate, wenn die ID selbst gebraucht wird. Für die Beschränkungen direkt swisstopo_oereb_at nutzen — das löst den EGRID intern auf. Erfordert einen unterstützten Kanton (z.B. ZH, BE). |
| swisstopo_get_oereb_extractA | Ruft öffentlich-rechtliche Eigentumsbeschränkungen (ÖREB) für ein Grundstück (EGRID) ab. ÖREB-Auszug zu einem bereits bekannten EGRID. Wer von einer Koordinate ausgeht, nimmt swisstopo_oereb_at — das erledigt beide Schritte in einem Aufruf. Erfordert einen unterstützten Kanton. |
| swisstopo_oereb_atA | Gibt die ÖREB-Eigentumsbeschränkungen an einer Koordinate zurück (ein Aufruf). «Welche Beschränkungen gelten auf diesem Grundstück?» — löst den EGRID intern auf. Das ist der normale Weg; swisstopo_get_egrid braucht es nur, wer die Parzellen-ID selbst benötigt. Nur für Kantone mit angebundenem ÖREB-Dienst (siehe SWISSTOPO_OEREB_CANTONS). Koordinaten als lat/lon (WGS84) oder easting/northing (LV95). |
| swisstopo_list_available_layersA | Discovery-Tool: listet die Layer-Kennungen, die swisstopo_query_geodata akzeptiert. Erster Schritt vor swisstopo_query_geodata: herausfinden, welche Datensätze (Strassenverzeichnis, ÖREB-Verfügbarkeit, interkantonale geodienste.ch-Topics) verfügbar und ohne Vertrag frei nutzbar sind. Für konkrete geodienste-Kennungen einen Kanton angeben (z.B. canton='ZH'). |
| swisstopo_query_geodataA | Einheitliche Fassade über mehrere Geodaten-Quellen anhand einer Layer-Kennung. Ein Tool für drei Quellen: 'strassenverzeichnis' (Strassen um einen Punkt), 'oereb-verfuegbarkeit' (ÖREB-Status/Zuständigkeit an einem Punkt) und 'geodienste:<topic>:<KANTON>' (interkantonale Basisgeodaten via OGC API Features). Genau eine Ortsangabe (point | bbox | commune) übergeben. Gültige Layer-Kennungen via swisstopo_list_available_layers. geodienste-Layer erfordern bbox oder point (mit radius_m). |
| swisstopo_query_osm_featuresA | Findet OpenStreetMap-POIs (Schulen, Spielplätze, Apotheken …) im Umkreis. Beantwortet «Welche Schulhäuser/Spielplätze liegen im Umkreis von R Metern um diesen Punkt/diese Adresse?». Ergänzt die amtlichen swisstopo-Daten um Points-of-Interest aus OpenStreetMap. Quelle OpenStreetMap (ODbL, © OpenStreetMap contributors), nicht swisstopo. Overpass hat Rate-Limits/Timeouts — kleiner Radius bevorzugt; bei Überlastung kommt eine sprechende Fehlermeldung statt Daten. |
| swisstopo_lookup_postal_codeA | Löst eine Schweizer PLZ in Ort, Gemeinde, Bezirk und Kanton auf (OpenPLZ, amtlich). Beantwortet «Zu welcher Gemeinde/welchem Kanton gehört PLZ 8001?» und
liefert die BFS-Gemeindenummer ( |
| swisstopo_find_communeA | Löst Gemeinden auf: Name→BFS-Nummer, BFS-Nummer→Name, oder alle Gemeinden eines Kantons/Bezirks. Vier Modi (genau einen Parameter angeben): |
| swisstopo_search_addressA | Volltextsuche über Schweizer Strassen und Ortschaften (OpenPLZ FullTextSearch). Findet Strassen und Orte zu einem freien Suchbegriff und liefert je Treffer Gemeinde und BFS-Nummer, wenn vorhanden. Quelle OpenPLZ (BFS/swisstopo OGD). Ergebnisse sind paginiert (max. 50/Abfrage); die Gesamttrefferzahl wird ausgewiesen. Für die exakte PLZ→Gemeinde-Auflösung ist swisstopo_lookup_postal_code präziser. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| swisstopo_feature_lookup | Führt durch die Layer-Suche zur Feature-Abfrage und nennt dabei die Präzedenzregel: für Bauzone und Gemeinde gibt es direkte Tools. |
| swisstopo_geodata_download | Führt von der STAC-Suche zu den Download-Links einer Collection. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| swisstopo_layer_catalogue | Der vollständige Katalog der Layer, die swisstopo_query_geodata akzeptiert: die statischen Fassaden-Layer plus die geodienste.ch-Themen mit der Zahl der Kantone, die sie frei anbieten. Entspricht swisstopo_list_available_layers ohne Filter. |
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/swisstopo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server