MCP Servers

A collection of Model Context Protocol servers, templates, tools and more.

Z
Zurich Opendata MCP

MCP Server für Open Data der Stadt Zürich – 20 Tools für CKAN, Geodaten, Gemeinderat, Tourismus, SPARQL und Echtzeitdaten (Wetter, Luft, See, Parking, ÖV). 6 APIs, 6 Resources.

Created 2/25/2026
Updated about 9 hours ago
Repository documentation and setup instructions

🏙️ Zurich Open Data MCP Server

🌐 English | Deutsch

MCP (Model Context Protocol) Server für den KI-gestützten Zugriff auf Open Data der Stadt Zürich.

Ermöglicht Claude, ChatGPT und anderen MCP-kompatiblen KI-Assistenten den direkten Zugriff auf 900+ Datensätze, Geodaten, Parlamentsgeschäfte, Tourismusdaten, Linked Data und Echtzeit-Umwelt-/Mobilitätsinformationen der Stadt Zürich. 20 Tools, 6 Resources, 6 APIs.

✨ Features

CKAN Open Data (data.stadt-zuerich.ch)

  • zurich_search_datasets – Volltextsuche mit Solr-Syntax über 900+ Datensätze
  • zurich_get_dataset – Vollständige Metadaten und Download-URLs eines Datensatzes
  • zurich_datastore_query – Tabellarische Daten direkt abfragen (Filter, Sortierung)
  • zurich_datastore_sql – SQL-Abfragen auf dem DataStore
  • zurich_list_categories – 19 thematische Kategorien durchsuchen
  • zurich_list_tags – Tags für thematische Suche

Echtzeit-Umweltdaten

  • zurich_weather_live – 🌤️ Aktuelle Wetterdaten (Temperatur, Feuchte, Druck, Regen) von 5 UGZ-Stationen
  • zurich_air_quality – 🌬️ Live-Luftqualität (NO₂, O₃, PM10, PM2.5) mit WHO-Grenzwerten
  • zurich_water_weather – 🌊 Zürichsee-Daten (Wassertemperatur, Pegel, Wind) alle 10 Min.

Echtzeit-Mobilitätsdaten

  • zurich_pedestrian_traffic – 🚶 Passantenfrequenzen Bahnhofstrasse (3 Standorte, stündlich)
  • zurich_vbz_passengers – 🚊 VBZ-Fahrgastzahlen (800'000+ Datensätze, alle Linien/Haltestellen)
  • zurich_parking_live – 🅿️ Echtzeit-Belegung von 36 Parkhäusern (ParkenDD)

Geoportal (WFS Geodaten)

  • zurich_geo_layers – 📍 14 verfügbare Geodaten-Layer auflisten
  • zurich_geo_features – 📍 GeoJSON-Features abrufen (Schulanlagen, Quartiere, Spielplätze, Klimadaten u.v.m.)

Gemeinderat (Paris API)

  • zurich_parliament_search – 🏛️ Gemeinderatsgeschäfte durchsuchen (Interpellationen, Motionen, Postulate)
  • zurich_parliament_members – 🏛️ Ratsmitglieder suchen (Partei, Kommissionen, Mandate)

Zürich Tourismus

  • zurich_tourism – 🏨 Attraktionen, Restaurants, Hotels, Events (Schema.org-Daten, 4 Sprachen)

Linked Data (SPARQL)

  • zurich_sparql – 📊 SPARQL-Abfragen auf dem statistischen Linked Data Endpoint

Analyse-Tools

  • zurich_analyze_datasets – Umfassende Analyse: Relevanz, Aktualität, Datenstruktur
  • zurich_catalog_stats – Katalog-Übersicht mit Statistiken
  • zurich_find_school_data – Kuratierte Suche nach schulrelevanten Datensätzen

MCP Resources

  • zurich://dataset/{name} – Datensatz-Metadaten
  • zurich://category/{group_id} – Kategorie-Details
  • zurich://parking – Aktuelle Parkplatzdaten
  • zurich://geo/{layer_id} – GeoJSON-Geodaten (14 Layer)
  • zurich://tourism/categories – Tourismus-Kategorien

🚀 Installation

Voraussetzungen

  • Python 3.11+
  • pip oder uv

Installation

# Klonen
git clone https://github.com/schulamt-zuerich/zurich-opendata-mcp.git
cd zurich-opendata-mcp

# Installieren
pip install -e .

# Oder mit uv
uv pip install -e .

⚙️ Konfiguration

Claude Desktop

Editiere ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "zurich-opendata": {
      "command": "python",
      "args": ["-m", "zurich_opendata_mcp.server"],
      "env": {}
    }
  }
}

Alternativ mit dem installierten Kommando:

{
  "mcpServers": {
    "zurich-opendata": {
      "command": "zurich-opendata-mcp"
    }
  }
}

Claude Code (CLI)

claude mcp add zurich-opendata -- python -m zurich_opendata_mcp.server

Cursor / VS Code

Füge zu .vscode/settings.json hinzu:

{
  "mcpServers": {
    "zurich-opendata": {
      "command": "python",
      "args": ["-m", "zurich_opendata_mcp.server"]
    }
  }
}

💬 Beispiel-Abfragen

Nach der Konfiguration kannst du in Claude fragen:

Open Data

  • «Welche Datensätze gibt es zu Schulen in Zürich?»
  • «Zeig mir die Schulferien der Volksschule»
  • «Analysiere die verfügbaren Geodaten»

Echtzeit-Daten

  • «Wie warm ist es gerade in Zürich?»zurich_weather_live
  • «Wie ist die Luftqualität heute?»zurich_air_quality
  • «Was ist die aktuelle Wassertemperatur im Zürichsee?»zurich_water_weather
  • «Wie viele freie Parkplätze gibt es gerade?»zurich_parking_live
  • «Wie viele Leute sind gerade auf der Bahnhofstrasse?»zurich_pedestrian_traffic

Geodaten

  • «Zeig mir alle Schulanlagen in Zürich als GeoJSON»zurich_geo_features
  • «Welche Geodaten-Layer gibt es?»zurich_geo_layers
  • «Wo sind die Spielplätze in Zürich?»

Gemeinderat

  • «Welche Vorstösse zum Thema Schule gab es im Gemeinderat?»zurich_parliament_search
  • «Welche Ratsmitglieder gehören der SP an?»zurich_parliament_members

Tourismus & Statistik

  • «Welche Restaurants empfiehlt Zürich Tourismus?»zurich_tourism
  • «Wie hat sich die Bevölkerung Zürichs entwickelt?»zurich_sparql

🔗 Datenquellen

| API | Endpoint | Daten | |-----|----------|-------| | CKAN | data.stadt-zuerich.ch/api/3/ | 900+ Open Data Datensätze | | Geoportal WFS | ogd.stadt-zuerich.ch/wfs/geoportal | 14 Geodaten-Layer (GeoJSON) | | Paris API | gemeinderat-zuerich.ch/api | Parlamentsgeschäfte & Mitglieder | | Zürich Tourismus | zuerich.com/en/api/v2/data | Attraktionen, Restaurants, Hotels | | SPARQL | ld.stadt-zuerich.ch/query | Linked Open Data / Statistiken | | ParkenDD | api.parkendd.de/Zuerich | Echtzeit-Parkplatzbelegung |

📊 Verfügbare Datenkategorien

| Kategorie | ID | |-----------|-----| | Arbeit und Erwerb | arbeit-und-erwerb | | Basiskarten | basiskarten | | Bauen und Wohnen | bauen-und-wohnen | | Bevölkerung | bevolkerung | | Bildung | bildung | | Energie | energie | | Finanzen | finanzen | | Freizeit | freizeit | | Gesundheit | gesundheit | | Kriminalität | kriminalitat | | Kultur | kultur | | Mobilität | mobilitat | | Politik | politik | | Preise | preise | | Soziales | soziales | | Tourismus | tourismus | | Umwelt | umwelt | | Verwaltung | verwaltung | | Volkswirtschaft | volkswirtschaft |

📍 Verfügbare Geo-Layer

| Layer-ID | Beschreibung | |----------|-------------| | schulanlagen | Schulstandorte (Kindergärten, Schulhäuser, Horte) | | schulkreise | Schulkreis-Grenzen | | schulwege | Schulwege und sichere Routen | | stadtkreise | Stadtkreis-Grenzen | | quartiere | Statistische Quartiere | | spielplaetze | Spielplätze und Spielanlagen | | sportanlagen | Sportanlagen und Schwimmbäder | | klimadaten | Klimadaten (Temperaturen, Hitzeinseln) | | veloparkierung | Veloparkierungs-Anlagen | | lehrpfade | Lehrpfade und Bildungswege | | familienberatung | Familienberatungs-Treffpunkte | | kreisbuero | Kreisbüros der Stadt Zürich | | sammelstelle | Abfall-Sammelstellen | | zweiradparkierung | Zweiradparkierung |

🏗️ Projektstruktur

zurich-opendata-mcp/
├── src/zurich_opendata_mcp/
│   ├── __init__.py          # Package
│   ├── server.py            # MCP Server mit 20 Tools & 6 Resources
│   └── api_client.py        # HTTP-Client für 6 APIs
├── tests/
│   └── test_integration.py  # 20 Integrationstests
├── .github/workflows/ci.yml # GitHub Actions CI
├── pyproject.toml           # Projekt-Konfiguration
├── README.md / README_EN.md # Dokumentation (DE/EN)
├── CONTRIBUTING.md / _EN.md # Beitragsrichtlinien (DE/EN)
├── CHANGELOG.md             # Änderungsprotokoll
├── LICENSE                  # MIT
└── claude_desktop_config.json

🧪 Entwicklung

# Dev-Dependencies installieren
pip install -e ".[dev]"

# Integrationstests (gegen Live-APIs)
python tests/test_integration.py

# Linting
ruff check src/

📜 Lizenz

MIT License

🤝 Kontext

Alle genutzten Daten stehen unter offenen Lizenzen (CC0 / Open by Default seit 2021).


Powered by Model Context Protocol • 6 APIs • 20 Tools • 6 Resources

Quick Setup
Installation guide for this server

Install Package (if required)

uvx zurich-opendata-mcp

Cursor configuration (mcp.json)

{ "mcpServers": { "malkreide-zurich-opendata-mcp": { "command": "uvx", "args": [ "zurich-opendata-mcp" ] } } }