Zurich Open Data MCP Server
Enables Claude, ChatGPT, and other MCP-compatible AI assistants to directly query 900+ datasets, geodata, parliamentary proceedings, tourism data, linked data, and real-time environmental and mobility information from the City of Zurich. 20 Tools, 6 Resources, 6 APIs.
๐จ๐ญ Part of the Swiss Public Data MCP Portfolio
๐๏ธ Zurich Open Data MCP Server
๐ English | Deutsch
An MCP (Model Context Protocol) server providing AI-powered access to Open Data from the City of Zurich, Switzerland.
Enables Claude, ChatGPT, and other MCP-compatible AI assistants to directly query 900+ datasets, geodata, parliamentary proceedings, tourism data, linked data, and real-time environmental and mobility information from the City of Zurich. 20 Tools, 6 Resources, 6 APIs.
Demo
โจ Features
CKAN Open Data (data.stadt-zuerich.ch)
zurich_search_datasetsโ Full-text search with Solr syntax across 900+ datasetszurich_get_datasetโ Complete metadata and download URLs for a datasetzurich_datastore_queryโ Query tabular data directly (filters, sorting)zurich_datastore_sqlโ SQL queries on the DataStorezurich_list_categoriesโ Browse 19 thematic categorieszurich_list_tagsโ Tag-based thematic search
Real-Time Environmental Data
zurich_weather_liveโ ๐ค๏ธ Current weather (temperature, humidity, pressure, rain) from 5 UGZ stationszurich_air_qualityโ ๐ฌ๏ธ Live air quality (NOโ, Oโ, PM10, PM2.5) with WHO thresholdszurich_water_weatherโ ๐ Lake Zurich data (water temperature, level, wind) every 10 min
Real-Time Mobility Data
zurich_pedestrian_trafficโ ๐ถ Pedestrian counts on Bahnhofstrasse (3 locations, hourly)zurich_vbz_passengersโ ๐ VBZ public transit ridership (800,000+ records, all lines/stops)zurich_parking_liveโ ๐ ฟ๏ธ Real-time occupancy of 36 parking garages (ParkenDD)
Geoportal (WFS Geodata)
zurich_geo_layersโ ๐ List 14 available geodata layerszurich_geo_featuresโ ๐ Fetch GeoJSON features (schools, districts, playgrounds, climate data, etc.)
City Parliament (Paris API)
zurich_parliament_searchโ ๐๏ธ Search parliamentary proceedings (interpellations, motions, postulates)zurich_parliament_membersโ ๐๏ธ Search council members (party, commissions, mandates)
Zurich Tourism
zurich_tourismโ ๐จ Attractions, restaurants, hotels, events (Schema.org data, 4 languages)
Linked Data (SPARQL)
zurich_sparqlโ ๐ SPARQL queries on the statistical linked data endpoint
Analysis Tools
zurich_analyze_datasetsโ Comprehensive analysis: relevance, recency, data structurezurich_catalog_statsโ Catalog overview with statisticszurich_find_school_dataโ Curated search for education-related datasets
MCP Resources
zurich://dataset/{name}โ Dataset metadatazurich://category/{group_id}โ Category detailszurich://parkingโ Current parking datazurich://geo/{layer_id}โ GeoJSON geodata (14 layers)zurich://tourism/categoriesโ Tourism categories
๐ Installation
Prerequisites
- Python 3.11+
- pip or uv
Install
# Clone
git clone https://github.com/malkreide/zurich-opendata-mcp.git
cd zurich-opendata-mcp
# Install
pip install -e .
# Or with uv
uv pip install -e .
โ๏ธ Configuration
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"zurich-opendata": {
"command": "python",
"args": ["-m", "zurich_opendata_mcp.server"],
"env": {}
}
}
}
Alternatively, using the installed command:
{
"mcpServers": {
"zurich-opendata": {
"command": "zurich-opendata-mcp"
}
}
}
Claude Code (CLI)
claude mcp add zurich-opendata -- python -m zurich_opendata_mcp.server
Cursor / VS Code
Add to .vscode/settings.json:
{
"mcpServers": {
"zurich-opendata": {
"command": "python",
"args": ["-m", "zurich_opendata_mcp.server"]
}
}
}
๐ฌ Example Queries
Once configured, you can ask Claude:
Open Data
- "What datasets are available about schools in Zurich?"
- "Show me school holidays for public schools"
- "Analyze the available geodata"
Real-Time Data
- "What's the current temperature in Zurich?" โ
zurich_weather_live - "How is the air quality today?" โ
zurich_air_quality - "What's the water temperature in Lake Zurich?" โ
zurich_water_weather - "How many parking spaces are free right now?" โ
zurich_parking_live - "How many people are on Bahnhofstrasse right now?" โ
zurich_pedestrian_traffic
Geodata
- "Show me all school facilities in Zurich as GeoJSON" โ
zurich_geo_features - "What geodata layers are available?" โ
zurich_geo_layers - "Where are the playgrounds in Zurich?"
City Parliament
- "What parliamentary motions about schools were filed?" โ
zurich_parliament_search - "Which council members belong to the SP party?" โ
zurich_parliament_members
Tourism & Statistics
- "What restaurants does Zurich Tourism recommend?" โ
zurich_tourism - "How has Zurich's population evolved?" โ
zurich_sparql
๐ Data Sources
| API | Endpoint | Data |
|---|---|---|
| CKAN | data.stadt-zuerich.ch/api/3/ | 900+ open datasets |
| Geoportal WFS | ogd.stadt-zuerich.ch/wfs/geoportal | 14 geodata layers (GeoJSON) |
| Paris API | gemeinderat-zuerich.ch/api | Parliamentary proceedings & members |
| Zurich Tourism | zuerich.com/en/api/v2/data | Attractions, restaurants, hotels |
| SPARQL | ld.stadt-zuerich.ch/query | Linked Open Data / statistics |
| ParkenDD | api.parkendd.de/Zuerich | Real-time parking occupancy |
๐ Available Data Categories
| Category | ID |
|---|---|
| Employment | arbeit-und-erwerb |
| Base Maps | basiskarten |
| Construction & Housing | bauen-und-wohnen |
| Population | bevolkerung |
| Education | bildung |
| Energy | energie |
| Finance | finanzen |
| Leisure | freizeit |
| Health | gesundheit |
| Crime | kriminalitat |
| Culture | kultur |
| Mobility | mobilitat |
| Politics | politik |
| Prices | preise |
| Social Affairs | soziales |
| Tourism | tourismus |
| Environment | umwelt |
| Administration | verwaltung |
| Economy | volkswirtschaft |
๐ Available Geo Layers
| Layer ID | Description |
|---|---|
schulanlagen | School facilities (kindergartens, schools, after-school care) |
schulkreise | School district boundaries |
schulwege | School routes and safe paths |
stadtkreise | City district boundaries |
quartiere | Statistical quarters |
spielplaetze | Playgrounds |
sportanlagen | Sports facilities and swimming pools |
klimadaten | Climate data (temperatures, heat islands) |
veloparkierung | Bicycle parking facilities |
lehrpfade | Educational trails |
familienberatung | Family counseling meeting points |
kreisbuero | City district offices |
sammelstelle | Waste collection points |
zweiradparkierung | Two-wheeler parking |
๐๏ธ Project Structure
zurich-opendata-mcp/
โโโ src/zurich_opendata_mcp/
โ โโโ __init__.py # Package
โ โโโ server.py # MCP Server with 20 tools & 6 resources
โ โโโ api_client.py # HTTP client for 6 APIs
โโโ tests/
โ โโโ test_integration.py # 20 integration tests
โโโ .github/workflows/ci.yml # GitHub Actions CI
โโโ pyproject.toml # Project configuration
โโโ README.md / README.de.md # Documentation (EN/DE)
โโโ CONTRIBUTING.md / .de.md # Contribution guide (EN/DE)
โโโ CHANGELOG.md # Changelog
โโโ LICENSE # MIT
โโโ claude_desktop_config.json
๐งช Development
# Install dev dependencies
pip install -e ".[dev]"
# Integration tests (against live APIs)
python tests/test_integration.py
# Linting
ruff check src/
Safety & Limits
- Read-only: All tools perform HTTP GET requests only โ no data is written, modified, or deleted.
- No personal data: The APIs return open civic datasets (parking occupancy, weather readings, parliamentary proceedings). No personally identifiable information (PII) is processed or stored by this server.
- Rate limits: CKAN Solr search and ParkenDD are public APIs without documented rate limits; use
rowsandlimitparameters conservatively. The server enforces a 30s timeout per request. - Data freshness: Real-time tools (parking, weather, air quality) reflect the upstream source at query time. No caching is performed by this server.
- Terms of service: Data is subject to the ToS of each source โ data.stadt-zuerich.ch, ParkenDD, gemeinderat-zuerich.ch. All City of Zurich data is published under CC0 (Open by Default since 2021).
- No guarantees: This server is a community project, not affiliated with the City of Zurich or any of the API providers. Availability depends on upstream APIs.
๐ License
MIT License
๐ค Context
All data used is published under open licenses (CC0 / Open by Default since 2021).
Powered by Model Context Protocol โข 6 APIs โข 20 Tools โข 6 Resources
Related Servers
VikingDB
A server for storing and searching data in a VikingDB instance, configurable via command line or environment variables.
Membase MCP
A decentralized memory layer for AI agents providing secure, persistent storage for conversation history and knowledge.
CData Jira Assets
A read-only MCP server for Jira Assets, powered by the CData JDBC Driver.
Outreach.io by CData
A read-only MCP server for querying live data from Outreach.io using the CData JDBC Driver.
CData Zoho Creator
A read-only MCP server by CData for querying live Zoho Creator data using a JDBC driver.
Doris-MCP-Lite
A lightweight MCP server for connecting to Apache Doris and other MySQL-compatible databases, providing tools and prompts for LLM applications.
Supabase
Interact with Supabase databases, storage, and edge functions.
Videoschiri
Fussball. Live. Alle Spiele, alle TV-Sender und Streams.
MongoDB
Interact with MongoDB databases using natural language to query collections, inspect schemas, and manage data.
Pinecone
Read and write to a Pinecone vector database using the Model Context Protocol.