MCP Server für Open Data der Stadt Zürich – 23 Tools für CKAN, Geodaten, Gemeinderat, Stadtratsbeschlüsse, Tourismus und Echtzeitdaten (Wetter, Luft, See, Parking, ÖV). 6 APIs, 5 Resources.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · streamable-http · http
verified
reported
listed in the official MCP registry counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 833095a · analyzer v33 · 1w ago
skills & prompt files 1
- agent-rules malkreide-zurich-opendata-mcp-833095a/CLAUDE.md
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 46
filesystem 8
- fs (weak) malkreide-zurich-opendata-mcp-833095a/scripts/check_version_sync.py :35
from pathlib import Path - fs (weak) malkreide-zurich-opendata-mcp-833095a/scripts/classify_live_run.py :55
from pathlib import Path - fs (weak) malkreide-zurich-opendata-mcp-833095a/scripts/record_fixtures.py :34
from pathlib import Path - fs (weak) malkreide-zurich-opendata-mcp-833095a/tests/fixture_data.py :14
from pathlib import Path - fs (weak) malkreide-zurich-opendata-mcp-833095a/tests/test_classify_live_run.py :21
from pathlib import Path - fs (weak) malkreide-zurich-opendata-mcp-833095a/tests/test_packaging.py :24
from pathlib import Path - fs (weak) malkreide-zurich-opendata-mcp-833095a/tests/test_server.py :583
from pathlib import Path - fs (weak) malkreide-zurich-opendata-mcp-833095a/tests/test_transport_security.py :247
from pathlib import Path
network 17
- net (weak) malkreide-zurich-opendata-mcp-833095a/scripts/record_fixtures.py :36
import httpx - net malkreide-zurich-opendata-mcp-833095a/src/zurich_opendata_mcp/formatters.py :9
import httpx - net malkreide-zurich-opendata-mcp-833095a/src/zurich_opendata_mcp/http_client.py :3
All upstream calls go through one process-wide ``httpx.AsyncClient`` so they - net malkreide-zurich-opendata-mcp-833095a/src/zurich_opendata_mcp/retry.py :36
from urllib.parse import urlsplit - net (weak) malkreide-zurich-opendata-mcp-833095a/tests/test_catalog.py :10
import httpx - net (weak) malkreide-zurich-opendata-mcp-833095a/tests/test_datastore.py :10
import httpx - net (weak) malkreide-zurich-opendata-mcp-833095a/tests/test_geo.py :12
import httpx - net (weak) malkreide-zurich-opendata-mcp-833095a/tests/test_helpers.py :7
import httpx - net (weak) malkreide-zurich-opendata-mcp-833095a/tests/test_http_client.py :8
import httpx - net (weak) malkreide-zurich-opendata-mcp-833095a/tests/test_parliament.py :11
import httpx - net (weak) malkreide-zurich-opendata-mcp-833095a/tests/test_realtime.py :12
import httpx - net (weak) malkreide-zurich-opendata-mcp-833095a/tests/test_resolver.py :8
import httpx - net (weak) malkreide-zurich-opendata-mcp-833095a/tests/test_resources.py :11
import httpx - net (weak) malkreide-zurich-opendata-mcp-833095a/tests/test_retry.py :17
import httpx - net (weak) malkreide-zurich-opendata-mcp-833095a/tests/test_server.py :9
import httpx - net (weak) malkreide-zurich-opendata-mcp-833095a/tests/test_strb.py :12
import httpx - net (weak) malkreide-zurich-opendata-mcp-833095a/tests/test_tourism.py :10
import httpx
declared dependencies 13
- mcp@>=2.0.0,<3
- modern@*
- httpx@>=0.28.1
- pydantic@>=2.13.4
- uvicorn@>=0.46.0
- sqlparse@>=0.5.5
- defusedxml@>=0.7.1
- pytest@>=9.0.3
- pytest-asyncio@>=1.3.0
- pytest-cov@>=7.1.0
- respx@>=0.23.1
- ruff@>=0.15.12
- mypy@>=1.18.2