CCM
/MCP
SkillsMCPMarketplacesDigestLearnAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Claude Code Marketplaces

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Learn
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

Swisstopo Mcp

malkreide/swisstopo-mcp
4STDIOregistry active
Summary

Connects Claude to Switzerland's official geodata infrastructure through 13 tools spanning Swisstopo's REST API, geocoding service, height queries, STAC catalog, WMTS map builder, and OEREB cadastre. You can geocode Swiss addresses, query elevations and profiles, identify map features across 500+ layers, search for downloadable datasets like orthophotos and 3D building models, generate shareable map links, and retrieve cadastral extracts with public law restrictions. Eleven of thirteen tools need no authentication. Built for queries like "What land use restrictions apply to this Zurich address?" or "Show me elevation along this route." Supports both stdio for Claude Desktop and SSE transport for browser deployment on Render or similar platforms.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
Put your SEO on autopilot
Put your SEO on autopilot
An agent that runs the SEO playbooks that move rankings and ships PRs you control.
Get founding access →
Vibe Prospecting MCPVibe Prospecting MCP
Vibe Prospecting MCP
Connect Claude to +800M contacts, +150M companies. Find & Enrich leads in chat.
Try For Free →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
Put your SEO on autopilot
Put your SEO on autopilot
An agent that runs the SEO playbooks that move rankings and ships PRs you control.
Get founding access →
Vibe Prospecting MCPVibe Prospecting MCP
Vibe Prospecting MCP
Connect Claude to +800M contacts, +150M companies. Find & Enrich leads in chat.
Try For Free →
Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
Put your SEO on autopilot
Put your SEO on autopilot
An agent that runs the SEO playbooks that move rankings and ships PRs you control.
Get founding access →
Vibe Prospecting MCPVibe Prospecting MCP
Vibe Prospecting MCP
Connect Claude to +800M contacts, +150M companies. Find & Enrich leads in chat.
Try For Free →
Registryactive
Packageswisstopo-mcp
TransportSTDIO
UpdatedJun 7, 2026
View on GitHub

🇨🇭 Part of the Swiss Public Data MCP Portfolio

🗺️ swisstopo-mcp

Version License: MIT Python 3.11+ MCP No Auth Required CI

MCP server for Swiss federal geodata -- maps, elevation, geocoding, cadastral extracts, and downloadable datasets via Swisstopo APIs

🇩🇪 Deutsche Version


Overview

swisstopo-mcp gives AI assistants access to Switzerland's official geodata infrastructure through 13 tools across 6 API families, all without authentication:

SourceDataAPI
Swisstopo REST API500+ geodata layers (buildings, boundaries, land use)REST/JSON
GeocodingOfficial addresses, place names, postal codesREST/JSON
Height ServiceElevation above sea level, elevation profilesREST/JSON
STAC CatalogOrthophotos, elevation models, 3D buildingsSTAC 0.9
WMTSNational maps, aerial images, zoning mapsURL builder
OEREB CadastrePublic-law restrictions, parcelsREST/JSON (cantonal)

Anchor demo query: "What land-use restrictions apply to the parcel at Musterstrasse 5, Zurich? Show me the location on a map." → More use cases by audience →


Features

  • 🗺️ 13 tools across 6 API families (REST, Geocoding, Height, STAC, WMTS, OEREB)
  • 🔍 Geocode Swiss addresses and reverse-geocode coordinates
  • 🏔️ Query elevation and compute elevation profiles
  • 📦 Discover and download geodatasets (orthophotos, 3D buildings, historical maps)
  • 🏗️ Identify map features at coordinates across 500+ Swisstopo layers
  • 🔗 Generate shareable map.geo.admin.ch links
  • 📋 Look up cadastral property IDs (EGRID) and retrieve OEREB extracts
  • 🔓 No API key required for 11 of 13 tools
  • ☁️ Dual transport -- stdio (Claude Desktop) + Streamable HTTP (cloud)

Prerequisites

  • Python 3.11+
  • uv (recommended) or pip

Installation

# Clone the repository
git clone https://github.com/malkreide/swisstopo-mcp.git
cd swisstopo-mcp

# Install
pip install -e .
# or with uv:
uv pip install -e .

Or with uvx (no permanent installation):

uvx swisstopo-mcp

Quickstart

# stdio (for Claude Desktop)
python -m swisstopo_mcp.server

# Streamable HTTP (port 8000)
python -m swisstopo_mcp.server --http --port 8000

Try it immediately in Claude Desktop:

"Where is Bahnhofstrasse 1, Zurich? Give me the coordinates." "What is the elevation at the Uetliberg summit?" "What buildings are at coordinates 2683500, 1247500 (LV95)?"


Configuration

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "swisstopo": {
      "command": "python",
      "args": ["-m", "swisstopo_mcp.server"]
    }
  }
}

Or with uvx:

{
  "mcpServers": {
    "swisstopo": {
      "command": "uvx",
      "args": ["swisstopo-mcp"]
    }
  }
}

Config file locations:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Cloud Deployment (SSE for browser access)

For use via claude.ai in the browser (e.g. on managed workstations without local software):

Render.com (recommended):

  1. Push/fork the repository to GitHub
  2. On render.com: New Web Service -> connect GitHub repo
  3. Set start command: python -m swisstopo_mcp.server --http --port 8000
  4. In claude.ai under Settings -> MCP Servers, add: https://your-app.onrender.com/sse

Available Tools

REST API (Layer & Feature Queries)

ToolDescription
swisstopo_search_layersSearch the Swisstopo layer catalog (500+ layers) by keyword
swisstopo_identify_featuresFind map features at a specific coordinate (spatial query)
swisstopo_find_featuresSearch features by attribute value within a layer (e.g. buildings by EGID)
swisstopo_get_featureRetrieve full attributes and geometry for a feature by ID

Geocoding

ToolDescription
swisstopo_geocodeConvert Swiss addresses, place names, or postal codes to coordinates
swisstopo_reverse_geocodeFind the nearest address for given coordinates

Height Service

ToolDescription
swisstopo_get_heightGet elevation above sea level (m a.s.l.) at a coordinate
swisstopo_elevation_profileCompute an elevation profile along a line

STAC Catalog (Geodata Downloads)

ToolDescription
swisstopo_search_geodataSearch the STAC catalog for downloadable geodatasets
swisstopo_get_collectionGet details and download links for a STAC collection

WMTS (Map URLs)

ToolDescription
swisstopo_map_urlGenerate a map.geo.admin.ch URL for browser display

OEREB Cadastre

ToolDescription
swisstopo_get_egridResolve a cadastral property ID (EGRID) from coordinates
swisstopo_get_oereb_extractRetrieve public-law land-use restrictions (OEREB) for a parcel

Example Use Cases

QueryTool
"Where is Bahnhofstrasse 1, Zurich?"swisstopo_geocode
"What is the elevation at the Uetliberg summit?"swisstopo_get_height
"What buildings are at coordinates 2683500, 1247500?"swisstopo_identify_features
"Find orthophoto datasets for download"swisstopo_search_geodata
"Show me a map of Bern at zoom level 10"swisstopo_map_url
"What restrictions apply to parcel at Musterstrasse 5?"swisstopo_get_egrid + swisstopo_get_oereb_extract

Architecture

┌─────────────────┐     ┌──────────────────────────────┐     ┌──────────────────────────┐
│   Claude / AI   │────▶│  swisstopo-mcp               │────▶│  Swisstopo REST API      │
│   (MCP Host)    │◀────│  (MCP Server)                │◀────│  api3.geo.admin.ch       │
└─────────────────┘     │                              │     ├──────────────────────────┤
                        │  13 Tools                    │────▶│  Geocoding               │
                        │  Stdio | Streamable HTTP     │◀────│  api3.geo.admin.ch       │
                        │                              │     ├──────────────────────────┤
                        │  No authentication required  │────▶│  STAC Catalog            │
                        │  (11 of 13 tools)            │◀────│  data.geo.admin.ch       │
                        │                              │     ├──────────────────────────┤
                        │                              │────▶│  OEREB Cadastre          │
                        │                              │◀────│  (cantonal endpoints)    │
                        └──────────────────────────────┘     └──────────────────────────┘

Project Structure

swisstopo-mcp/
├── src/swisstopo_mcp/
│   ├── __init__.py              # Package version
│   ├── server.py                # MCP server wiring (tool registrations)
│   ├── api_client.py            # Shared HTTP client (httpx + error handling)
│   ├── geocoding.py             # swisstopo_geocode, swisstopo_reverse_geocode
│   ├── rest_api.py              # swisstopo_search_layers, identify, find, get_feature
│   ├── height.py                # swisstopo_get_height, swisstopo_elevation_profile
│   ├── stac.py                  # swisstopo_search_geodata, swisstopo_get_collection
│   ├── wmts.py                  # swisstopo_map_url
│   └── oereb.py                 # swisstopo_get_egrid, swisstopo_get_oereb_extract
├── tests/
│   ├── test_api_client.py
│   ├── test_geocoding.py
│   ├── test_height.py
│   ├── test_oereb.py
│   ├── test_rest_api.py
│   ├── test_stac.py
│   └── test_wmts.py
├── .github/workflows/ci.yml     # GitHub Actions (Python 3.11/3.12/3.13)
├── pyproject.toml
├── CHANGELOG.md
├── CONTRIBUTING.md               # Contribution guide (English)
├── CONTRIBUTING.de.md            # Contribution guide (German)
├── SECURITY.md                   # Security policy (English)
├── SECURITY.de.md                # Security policy (German)
├── LICENSE
├── README.md                    # This file (English)
└── README.de.md                 # German version

Security & Compliance

The full security policy and posture is documented in SECURITY.md.

Phase

This server is in Phase 1 — Read-only wrapper. All 13 tools are readOnlyHint: true / destructiveHint: false; there are no write or send capabilities. See docs/roadmap.md for later phases.

Lethal Trifecta assessment

CapabilityStatusRationale
Access to private data❌ NoPublic Open Data only (federal/cantonal geodata)
Exposure to untrusted content⚠️ LimitedReads only from a fixed allow-list of trusted geo.admin / OEREB hosts
External communication (write/send)❌ NoRead-only; no mail/webhook/write tools

Trifecta score: at most 1 of 3 — safe by design.

Egress

Outbound requests are restricted to an explicit code-layer allow-list and redirects are disabled — see docs/network-egress.md.

Container deployment

For containerised HTTP deployments, a hardened Dockerfile and Kubernetes manifests (non-root, read-only root filesystem, dropped capabilities, egress NetworkPolicy) are provided — see docs/deployment.md.

MCP Protocol Version

The MCP protocol version is negotiated by the mcp SDK, which is pinned to the 1.x major in pyproject.toml so an update cannot silently change the negotiated version. SDK bumps are proposed monthly via Dependabot and tracked in CHANGELOG.md.

Sessions & Authentication

The server is unauthenticated by design — it serves only public open data. Over HTTP, session IDs are managed entirely by the FastMCP framework; there is no per-user state, so there is nothing user-specific to bind a session to. If an authenticated deployment is ever introduced, session IDs must be bound to the validated user identity (audit finding SEC-009).

Error handling

  • Execution errors (upstream failure, invalid value) are returned as a ToolResponse with is_error: true and a user-friendly summary; raw exception text is never leaked to the client (it is logged to stderr instead).
  • Protocol errors (unknown tool, malformed/invalid arguments) are emitted by the MCP SDK as JSON-RPC errors with standard codes (e.g. -32602 invalid params). Input validation happens at the Pydantic boundary (SEC-018).

MCP Primitives

This server intentionally exposes Tools only (no Resources or Prompts): it is a Phase-1 read-only wrapper, and every result is a live, parameterised API query rather than a static addressable document. Resources/Prompts may be added in a later phase if stable URI schemes emerge.

Tool workflows

Most tools return a thought-complete result in a single call. Two domains use a short, documented discovery chain (each tool's description states the next step):

  • Feature query: swisstopo_search_layers (find layer IDs) → swisstopo_identify_features / swisstopo_find_features → swisstopo_get_feature (full detail).
  • Cadastre: swisstopo_geocode → swisstopo_get_egrid → swisstopo_get_oereb_extract.
  • Downloads: swisstopo_search_geodata → swisstopo_get_collection.

Response Format

Every tool returns a structured ToolResponse (FastMCP emits it as structured content with an output schema, plus a JSON text block):

FieldMeaning
summaryHuman-readable Markdown summary
resultsMachine-readable structured records
countNumber of results
match_typeexact / fuzzy / none (search-style tools)
source / licenseData attribution (OGD-CH, CC/OGD terms)
provenance / retrieved_atHow and when the data was obtained
is_errortrue for handled errors

Known Limitations

  • OEREB tools require a canton parameter; not all cantons expose the same API format
  • STAC catalog uses Swisstopo's v0.9 endpoint; some collections may lack complete metadata
  • Geocoding covers Swiss addresses only (no Liechtenstein)
  • Rate limits are enforced by Swisstopo; high-frequency usage may be throttled

Testing

# Unit tests (no network required)
pytest tests/ -m "not live"

# Integration tests (live API calls)
pytest tests/ -m "live"

Changelog

See CHANGELOG.md


Contributing

See CONTRIBUTING.md


License

MIT License -- see LICENSE

Data provided by swisstopo under Open Government Data terms.


Author

Hayal Oezkan · malkreide


Credits & Related Projects

  • Swisstopo: www.swisstopo.admin.ch -- Swiss Federal Office of Topography
  • Swisstopo APIs: api3.geo.admin.ch / data.geo.admin.ch
  • Protocol: Model Context Protocol -- Anthropic / Linux Foundation
  • Related: zurich-opendata-mcp -- Zurich city open data
  • Related: swiss-transport-mcp -- Swiss public transport
  • Related: swiss-cultural-heritage-mcp -- Swiss cultural heritage
  • Portfolio: Swiss Public Data MCP Portfolio

Installation

Run via uv's uvx — no clone or manual install needed. Add to your MCP client config (mcpServers for Claude Desktop, Cursor and Windsurf; use a top-level servers key for VS Code in .vscode/mcp.json):

{
  "mcpServers": {
    "swisstopo-mcp": {
      "command": "uvx",
      "args": [
        "swisstopo-mcp"
      ]
    }
  }
}