swisstopo-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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