プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

Swisstopo MCP

作者:malkreideバージョン 0.5.1i★ –iパソコンで動く
レジストリ名io.github.malkreide/swisstopo-mcp

インストール

概要

作者による説明(英語の原文)

Swiss federal geodata: geocoding, height, STAC, WMTS, OEREB and more

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: 旅行・地図・天気

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • レジストリには、入力が必要なキーは載っていません。

必要なもの

  • PyPIPythonのuvのインストール(uvxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

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

ターミナルでこれを実行します

claude mcp add swisstopo -- uvx swisstopo-mcp

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

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

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "swisstopo": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "swisstopo-mcp"
      ]
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月9日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント malkreide で確認済みです

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

旅行・地図・天気のほかのサーバーとの比較i

  • このカテゴリのほかの1737件のうち0%よりスターが多い
  • このカテゴリのほかの1737件のうち78%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの1737件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

Swisstopo MCPは安全ですか?

当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(0.5.1)がレジストリに届いたのは8 日前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。

代わりに使えるものは?

同じカテゴリには:CarHauler247 Car Shipping Quotes, Park Graph, Open Transfer Times

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

Park Graph

Find, price and book parking at Park Graph lots: search, quote, hold and session tools.

作者:parkgraph.com初期今日更新

クラウドで動く✓ parkgraph.com

Open Transfer Times

Check if a flight connection is comfortable, tight or risky, with cited airport data.

作者:joelynli0110初期↓ 1477/週今日更新

パソコンで動く

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

🇨🇭 Part of the [Swiss Public Data MCP Portfolio](https://github.com/malkreide)

swisstopo-mcp

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 20 tools, 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)
geodienste.chInterkantonale Basisgeodaten (cadastral survey, contaminated sites, hazard maps, …)OGC API Features / WMS / WFS
OpenStreetMapPoints of interest (schools, playgrounds, pharmacies, …)Overpass API (ODbL)
OpenPLZ APIAdministrative address level: postal codes → commune (BFS number) → district → cantonREST/JSON (BFS + swisstopo OGD)

Anchor demo query: *"Which communes are in the Uster district, and what are their BFS numbers for joining with BFS statistics data?"* (The BFS commune number is the official join key to swiss-statistics-mcp and zurich-opendata-mcp — this is what turns a geodata wrapper into a semantic connector at the commune level.) → More use cases by audience →

Demo

Features

  • 🗺️ 20 tools (REST, Geocoding, Height, STAC, WMTS, OEREB, geodienste.ch, OpenStreetMap/Overpass, OpenPLZ)
  • 🏛️ Resolve the administrative address level (PLZ → commune/BFS number → district → canton) via OpenPLZ
  • 🔍 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 all tools (OEREB extract needs a supported canton)
  • ☁️ 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_map_queryThe national map catalogue (api3.geo.admin.ch). One operation per call — see the five below
swisstopo_zoning_atHarmonised building zone at a coordinate — one call, no layer lookup (not legally binding)
swisstopo_municipality_atMunicipality, canton and official BFS number at a coordinate
swisstopo_map_query operations
operationAnswersRequired arguments
search_layersWhich layers exist for a keyword? (500+ catalogue)query
layer_infoWhat fields can I query on this layer, and what is its legend?layer
features_at_pointWhat is at this coordinate?layers + a point (lat/lon or easting/northing)
features_by_attributeWhich features carry this value? (e.g. buildings by EGID)layer, search_field, search_text
feature_by_idGive me this one feature in full, with geometrylayer, feature_id

Arguments belonging to a different operation are rejected, not ignored — the error names the ones the chosen operation accepts. Silently dropping a misplaced search_field would return a plausible answer to a question nobody asked, which is the failure mode the whole envelope design is against.

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
swisstopo_convert_coordinatesOfficial WGS84 ↔ LV95 conversion via the swisstopo REFRAME service
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
Consolidated Geodata Façade

One façade over several map/layer sources, kept under the 25-tool budget (see docs/geodaten-erweiterung-phase1.md):

ToolDescription
swisstopo_list_available_layersDiscover layer keys for swisstopo_query_geodata (strassenverzeichnis, oereb-verfuegbarkeit, geodienste: : ); filters to contract-free geodienste datasets
swisstopo_query_geodataQuery a chosen layer by point / bbox / commune — amtliches Strassenverzeichnis, interkantonale geodienste.ch data (OGC API Features), or ÖREB availability
swisstopo_query_osm_featuresOpenStreetMap POIs (schools, playgrounds, pharmacies, …) around a point via Overpass — separate source, ODbL (© OpenStreetMap contributors)
Administrative Address Level (OpenPLZ)

The amtliche address hierarchy PLZ → commune → district → canton, served by the OpenPLZ API (data: BFS municipal directory + swisstopo street directory, Swiss OGD — a separate source and licence from the swisstopo geodata above). Every commune-bearing response exposes bfs_commune_number as a named top-level field: the official join key to BFS statistics (swiss-statistics-mcp) and zurich-opendata-mcp.

ToolDescription
swisstopo_lookup_postal_codeResolve a Swiss postal code → locality, commune (+BFS number), district, canton
swisstopo_find_communeResolve a commune both directions (name ↔ bfs_number) or list all communes of a canton / district. Accepts canton abbreviation (ZH) or key (1); resolution happens server-side
swisstopo_search_addressFull-text search over Swiss streets and localities, returning commune + BFS number per hit
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_map_query (operation='features_at_point')
*"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_oereb_at
*"Which schools are within 500 m of Bederstrasse 109, 8002 Zürich, and which streets lead there?"*swisstopo_query_osm_features + swisstopo_query_geodata (strassenverzeichnis)
*"Which contaminated-sites data is free for canton ZH?"*swisstopo_list_available_layers + swisstopo_query_geodata (geodienste:kataster_belasteter_standorte:ZH)
*"Which communes are in the Uster district and what are their BFS numbers?"*swisstopo_find_commune (district=109)
*"Which commune and canton does postal code 8001 belong to?"*swisstopo_lookup_postal_code
*"What is the BFS number of Winterthur (to join with BFS statistics)?"*swisstopo_find_commune (name=Winterthur)

Architecture

┌─────────────────┐     ┌──────────────────────────────┐     ┌──────────────────────────┐

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

冒頭だけを表示しています。続きはリポジトリで読めます

PopNxに聞く