# swisstopo-mcp

Connects AI assistants to Swiss federal geodata: coordinates, elevation, OEREB cadastre records, and over 500 map layers without API keys.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 11
- Author: malkreide
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/malkreide/swisstopo-mcp
- Updated: 2026-09-26
- HTML: https://affpapa.org/en/nevibecode/mcp/swisstopo-mcp

## What it does

This server connects assistants to Switzerland's public geodata infrastructure through 20 dedicated tools. It handles address geocoding, elevation profiles, STAC catalog queries, and commune BFS code lookups. None of the endpoints require authentication or paid credentials.

The server runs over stdio for local clients or streamable HTTP on port 8000 for cloud setups. It requires Python 3.11 or later and runs directly via `uvx`. Parameter checking in `swisstopo_map_query` is strict: providing arguments that belong to another operation fails immediately with an error rather than silently returning mismatched data.

## Requirements
- Needs: Python and uv (commands run via uvx)

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add swisstopo-mcp -- uvx swisstopo-mcp
```
uvx runs the command named after the package; if the README names another one, use uvx --from swisstopo-mcp <command>

### Codex

**Platform CLI**
```bash
codex mcp add swisstopo-mcp -- uvx swisstopo-mcp
```
uvx runs the command named after the package; if the README names another one, use uvx --from swisstopo-mcp <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "swisstopo-mcp": {
            "command": "uvx",
            "args": [
                "swisstopo-mcp"
            ]
        }
    }
}
```
uvx runs the command named after the package; if the README names another one, use uvx --from swisstopo-mcp <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "swisstopo-mcp": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "swisstopo-mcp"
            ]
        }
    }
}
```
uvx runs the command named after the package; if the README names another one, use uvx --from swisstopo-mcp <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add swisstopo-mcp uvx swisstopo-mcp
```
uvx runs the command named after the package; if the README names another one, use uvx --from swisstopo-mcp <command>

## When to use it
- geocode Swiss addresses and look up coordinates
- calculate terrain elevations and cross-section profiles
- map postal codes to official BFS commune identifiers
- query features across 500+ Swisstopo map layers

## Example prompts
- Find the coordinates for Bahnhofstrasse 1, Zurich.
- What is the elevation at the Uetliberg summit?
- List the communes in the Uster district with their BFS numbers.

## Similar
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mapbox-mcp-server.md) — MCP server · ★ 363
- [mcp-devkit-server](https://affpapa.org/en/nevibecode/mcp/mcp-devkit-server.md) — MCP server · ★ 61
- [maplibre-mapbox-migration](https://affpapa.org/en/nevibecode/skills/maplibre-mapbox-migration.md) — skill · 464 installs
- [maplibre-cartography](https://affpapa.org/en/nevibecode/skills/maplibre-cartography.md) — skill · 419 installs
- [EOxElements](https://affpapa.org/en/nevibecode/mcp/eoxelements.md) — MCP server · ★ 36
- [zurich-opendata-mcp](https://affpapa.org/en/nevibecode/mcp/zurich-opendata-mcp.md) — MCP server · ★ 8

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
