Open-Data-MCP-Server für deutsche Städte
Der InfraNode-MCP-Server ist ein kostenloser, gehosteter
Model-Context-Protocol-Server, der KI-Agenten über 12 schlanke Tools Zugriff
auf 67 Datenarten offener Daten von 84 deutschen Großstädten gibt, ohne
API-Schlüssel. Er stellt die Stadtdaten als Werkzeuge bereit, die ein Agent
direkt aufruft, ohne dass du HTTP-Aufrufe von Hand schreibst. Der Server ist
im offiziellen
MCP Registry unter dem
Namen dev.infranode/infranode gelistet, mit Tool-Übersicht und
Score auch bei Glama.
Kurz gesagt: InfraNode ist der Open-Data-MCP-Server für Deutschland, ein kostenloser, keyloser MCP-Server für deutsche Städte und ihre offenen Daten, nutzbar in Claude, ChatGPT und anderen KI-Agenten.
Der Unterschied: InfraNode ist der umfassendste Open-Data-MCP-Server für Deutschland. Er ist nicht auf eine einzelne Stadt oder nur auf die Bahn beschränkt, sondern deckt alle 84 deutschen Großstädte und jede Datenart ab, von Umwelt und Mobilität über Energie und Wirtschaft bis zum Stadtleben, über einen gehosteten, keylosen Endpunkt, ohne Anmeldung je Stadt und ohne lokale Installation. Wie sich InfraNode zu anderen MCP-Servern für deutsche und europäische Daten verhält, zeigt der MCP-Server-Vergleich.
Stadtnamen: tolerant, du brauchst den exakten Slug nicht
Der Stadtname wird tolerant aufgelöst. Du kannst den deutschen Namen mit oder
ohne Umlaute schreiben, Groß- oder Kleinschreibung spielt keine Rolle, und
gängige englische Namen sowie Kurzformen funktionieren ebenfalls:
München, münchen, munich und
munchen führen alle zu muenchen,
cologne zu koeln, frankfurt zu
frankfurt-am-main. Ist ein Name nicht erkennbar, kommt ein 404,
dessen Hinweis den nächstliegenden Slug vorschlägt („Meintest du …?"). Die
kanonischen Slugs liefert jederzeit das Tool list_cities.
Datentools nach Thema
Eigene Seiten je Datenart erklären das passende MCP-Tool und wie du es im KI-Assistenten nutzt:
- Wetter-MCP-Server für deutsche Städte (DWD)
- Luftqualitäts-MCP-Server für deutsche Städte (UBA)
- Strompreis-MCP-Server für Deutschland (SMARD)
- Bodenrichtwerte-MCP-Server für deutsche Städte (BORIS)
- ÖPNV-MCP-Server für deutsche Städte
Diese Daten gibt es für alle 84 abgedeckten Städte. Neu bei MCP? Was ist ein MCP-Server erklärt die Grundlagen, die Einrichtungs-Anleitung zeigt die Verbindung in Claude und ChatGPT.
Sofort verbinden
Der Server ist öffentlich gehostet unter
https://mcp.infranode.dev/mcp (Streamable HTTP). Keine
Installation, kein API-Schlüssel: in Claude, ChatGPT oder einem anderen
MCP-Client als Connector mit dieser URL hinzufügen, fertig.
Du baust einen Custom GPT statt eines MCP-Setups? Für das OpenAI-Ökosystem gibt es InfraNode auch als GPT-Action mit kuratierter OpenAPI.
Direkt ausprobieren: ein Live-Dashboard bauen lassen
In Clients mit Canvas/Artefakt-Unterstützung (z.B. Claude Code, Claude.ai) reicht ein einfacher Prompt, um aus den InfraNode-Daten eine fertige, interaktive Seite zu machen. Zum Beispiel:
Baue mir ein Live-Dashboard für Köln
Der Agent ruft dafür get_city_overview plus ein paar gezielte
Live-Datenarten ab (Wetter, Luftqualität, Bahn-Abfahrten, Verkehrsereignisse
über get_city_resource) und rendert daraus eigenständig eine
vollständige Übersichtsseite, ganz ohne dass InfraNode selbst ein UI vorgibt:
Das Ergebnis ist keine InfraNode-eigene Anwendung, sondern etwas, das der
Agent selbst aus den rohen JSON-Antworten der Tools erzeugt hat, mit
get_city_overview als Startpunkt. Funktioniert genauso für
jede der anderen 83 Städte.
Wogegen der Server läuft
Der MCP-Server ist ein dünner Wrapper um die InfraNode-Live-API. Jedes Tool ruft die REST-API auf und reicht deren normalisiertes JSON unverändert weiter. Es gibt keine eigene Mapping-Logik im Server und keinen API-Schlüssel für den lesenden Zugriff.
Die 12 Tools
Der Server stellt 12 schlanke Tools bereit, die zusammen 67 Datenarten abdecken. Das hält den Token-Footprint im Kontextfenster des Agenten minimal, bleibt weit unter den Tool-Limits gängiger MCP-Clients (z.B. 80 Tools in Cursor), und die Datenbreite wächst weiter, ohne dass neue Tools dazukommen.
Warum von 71 auf 12 Tools? (Umstellung Juli 2026): Bis
Juni 2026 trug jede Datenart ein eigenes Tool, insgesamt 71. Die Tool-Liste
kostete damit rund 30.000 Tokens im Kontextfenster jedes verbundenen
Agenten, bei jedem einzelnen Verbinden, und wäre mit jeder neuen Datenart
weiter gewachsen. Seit Juli 2026 bündelt get_city_resource den
gesamten Long-Tail: gleiche Daten, gleiche Antworten, aber nur noch rund
4.400 Tokens für die komplette Tool-Liste (85 Prozent weniger) und
dauerhaft Luft unter allen Client-Tool-Limits. Für bestehende Nutzer: wer
vorher ein Einzel-Tool wie charging oder parking
aufgerufen hat, nutzt jetzt
get_city_resource(slug, resource="charging"); der Schlüssel
ist der bisherige Tool-Name in Kebab-Schreibweise (etwa
water_level zu water-level). Die REST-API ist von
der Umstellung unberührt.
| Tool | Beschreibung |
|---|---|
get_city(slug) | Stammdaten einer Stadt (Einwohner, Fläche, Koordinaten) |
get_city_overview(slug) | Ein-Aufruf-Überblick: Katalog aller 67 Datenarten mit Schlüssel und Abdeckungsstatus + Live-Highlights (Discovery-Einstieg) |
get_city_resource(slug, resource) | Generischer Zugriff auf alle 67 Datenarten per Datenarten-Schlüssel (siehe Liste unten) |
air_quality(slug) | Amtliche Luftqualität: PM10, PM2.5, NO2, O3, SO2 (UBA) |
weather(slug) | Aktuelle Wetterbeobachtungen (DWD, keine Vorhersage) |
pois(slug, type) | Points of Interest, gefiltert nach Typ (OpenStreetMap) |
station_board_departures(eva) | Live-Abfahrten jedes Bahnhofs per EVA-Nummer, alle Gattungen inkl. Nahverkehr + Störungen (DB Timetables) |
station_board_arrivals(eva) | Live-Ankünfte jedes Bahnhofs per EVA-Nummer, alle Gattungen inkl. Nahverkehr + Störungen (DB Timetables) |
transit_departures(slug, stop_id?) | ÖPNV-Echtzeit-Abfahrten mit Verspätung (GTFS-RT/HVV/VGN; Berlin bevorzugt VBB CC-BY 4.0) |
list_cities() | Liste aller abgedeckten Städte (Slugs, Abdeckung) |
sources() | Alle Datenquellen mit Lizenz und Verfügbarkeit |
compare(resource, cities) | Eine Ressource (weather, air, indicators, demographics, unemployment, tourism, charging-status, weather-warnings) über mehrere Städte vergleichen |
Die meisten Tools erwarten einen Stadt-Slug (zum Beispiel
berlin oder hamburg); pois verlangt
zusätzlich den Pflichtparameter type (z.B.
hospital, school, pharmacy),
transit_departures akzeptiert optional eine stop_id.
list_cities und sources brauchen kein Argument.
Die 67 Datenarten
Alle Datenarten ohne eigenes Tool holt der Agent über
get_city_resource, mit dem Datenarten-Schlüssel als
resource-Argument. Beispiel:
get_city_resource(slug="berlin", resource="charging") liefert
die Ladesäulen in Berlin. Welche Schlüssel eine Stadt abdeckt, zeigt
get_city_overview(slug) (je Datenart Schlüssel plus
Abdeckungsstatus); die Resource infranode://catalog listet alle
Datenarten.
Stammdaten und Geo
| Datenart | Beschreibung |
|---|---|
base | Stammdaten einer Stadt. Eigenes Tool: get_city |
overview | Ein-Aufruf-Überblick: Katalog aller Datenarten je Stadt mit Abdeckungsstatus + Live-Highlights (Discovery-Einstieg). Eigenes Tool: get_city_overview |
geo | Geodaten |
demographics | Demografie |
population-density | Einwohnerdichte aus dem amtlichen Zensus-2022-100m-Gitter (Einwohner je km² über die bewohnte Fläche) |
Umwelt und Wetter
| Datenart | Beschreibung |
|---|---|
air-uba | Amtliche Luftqualität. Eigenes Tool: air_quality |
air | Luftqualität, Live-Messwerte |
weather | Wetter. Eigenes Tool: weather |
weather-warnings | Amtliche DWD-Wetterwarnungen (Unwetter, Warnstufe) |
civil-protection-warnings | Amtliche Bevölkerungsschutz-Warnungen (BBK NINA: Gefahrstoff, Großbrand u.a.) |
pollen-uv | Pollen- und UV-Index |
fire-danger | Waldbrand- und Graslandfeuer-Index (DWD) |
Mobilität und Verkehr
| Datenart | Beschreibung |
|---|---|
traffic | Verkehrslage |
transit | ÖPNV-Haltestellen |
charging | Ladesäulen |
charging-status | Ladesäulen-Belegung (live, alle 84 Städte) |
road-events | Straßen- und Baustellenmeldungen |
parking | Live-Parkbelegung je Stadt: freie Plätze und Auslastung (Dortmund, Frankfurt am Main, Wuppertal) |
vehicle-registrations | Pkw-Bestand und Elektroauto-Anteil (KBA) |
accidents | Verkehrsunfälle je Kreis (Unfallatlas) |
crime-stats | Kriminalstatistik je Hauptstraftatengruppe: Fälle, Häufigkeitszahl, Aufklärungsquote (BKA PKS) |
fuel-prices | Spritpreise je Stadt, aggregiert (Tankerkönig) |
sharing | Bike- und Scooter-Sharing je Stadt, aggregiert (GBFS) |
bike-counts | Radzählstellen je Stadt: kommunale Dauerzählstellen für den Radverkehr (kommunale Open Data, Teilabdeckung) |
station-departures | Live-Abfahrten am Haupt-Bahnhof jeder Stadt mit Verspätung (DB Timetables) |
station-arrivals | Live-Ankünfte am Haupt-Bahnhof jeder Stadt mit Verspätung (DB Timetables) |
stations | Katalog aller Bahnhöfe einer Stadt mit EVA-Nummer (DB StaDa) |
station-facilities | Bahnhofsausstattung: Aufzug- und Fahrtreppen-Status (DB FaSta, Teilabdeckung) |
Wasser und Lage
| Datenart | Beschreibung |
|---|---|
water-level | Pegelstände |
flood | Hochwasserlage |
bathing-water | Badegewässerqualität im Umkreis (EEA) |
Gesundheit und Energie
| Datenart | Beschreibung |
|---|---|
health | Gesundheitsdaten |
icu-live | Intensivbetten, Live |
hospitals-atlas | Krankenhausstandorte aus dem Bundes-Klinik-Atlas |
energy | Energieanlagen (Marktstammdatenregister) |
power-load | Stromverbrauch / Netzlast je Regelzone (SMARD) |
power-price | Börsenstrompreis Day-ahead (SMARD) |
solar | Solar-Einstrahlung und normierter PV-Ertrag je kWp (PVGIS) |
solar-roofs | Dach-Solarkataster je Stadt: Solarpotenzial der Dächer (Teilabdeckung) |
district-heating | Fernwärme und Wärmenetze (kommunale Wärmeplanung, Teilabdeckung) |
Wirtschaft und Statistik
| Datenart | Beschreibung |
|---|---|
unemployment | Arbeitslose und Arbeitslosenquote je Kreis |
tourism | Gästeübernachtungen und Ankünfte (Tourismus) |
construction | Baugenehmigungen (Wohngebäude und Wohnungen) |
indicators | Sozialökonomische Indikatoren je Kreis (INKAR/BBSR, ~70 Kennzahlen) |
land-values | Amtliche Bodenrichtwerte je Stadt, aggregiert (BORIS, Bauland) |
tax-rates | Realsteuer-Hebesätze je Gemeinde: Gewerbe- und Grundsteuer A/B/C (Regionalstatistik) |
business-registrations | Gewerbean-/-abmeldungen und Saldo je Kreis (Regionalstatistik) |
insolvencies | Beantragte Insolvenzen je Kreis: Unternehmen und übrige Schuldner (inkl. Verbraucher), jährlich (Regionalstatistik) |
public-tenders | Öffentliche Auftragsvergabe je Stadt: laufende Ausschreibungen und vergebene Aufträge (Datenservice Öffentlicher Einkauf, OCDS/CC0) |
Stadtleben und Politik
| Datenart | Beschreibung |
|---|---|
pois | Points of Interest (Pflichtparameter type, z.B. hospital). Eigenes Tool: pois |
events | Veranstaltungen |
webcams | Webcams |
election | Wahlergebnisse |
holidays | Feiertage |
heritage | Denkmäler/Baudenkmale je Stadt aus der Landes-Denkmalliste (Berlin, DL-DE/Zero) |
office-wait-times | Behörden-Wartezeiten je Stadt: Live-Wartezeit der Bürgerämter/Kfz-Zulassung (nur Köln, Teilabdeckung) |
council-papers | Ratsinformationen je Stadt: Vorlagen, Anträge und Beschlüsse aus den Ratsinformationssystemen (OParl; Dresden, Köln, Düsseldorf, Münster, Leipzig) |
Stadtinfrastruktur (OpenStreetMap)
| Datenart | Beschreibung |
|---|---|
playgrounds | Öffentliche Spielplätze |
drinking-water | Öffentliche Trinkwasserbrunnen |
public-toilets | Öffentliche Toiletten |
markets | Wochen- und Marktplätze (optional Markttage) |
parcel-lockers | Paketstationen/Locker (DHL, Amazon, DPD, Hermes, GLS) |
post-offices | Postfilialen |
post-boxes | Öffentliche Briefkästen mit Leerungszeiten |
public-wifi | Öffentliche WLAN-Standorte |
recycling-centres | Recycling-/Wertstoffhöfe |
government-offices | Behörden und Ämter (Bürgerämter, Verwaltung) |
education | Bildungseinrichtungen (Schulen, Hochschulen, Kitas) |
tree-cadastre | Baumkataster je Stadt (Art, Pflanzjahr, Höhe; Berlin, DL-DE/Zero) |
Beispiel-Aufruf
Ein Agent holt den Ein-Aufruf-Überblick für Berlin: Stammdaten, den Katalog aller 67 Datenarten mit Schlüssel und Abdeckungsstatus und eine Live-Highlights-Momentaufnahme. Guter Einstiegspunkt für jede Städtefrage, statt gezielt eine einzelne Datenart zu raten. Das Ergebnis ist das normalisierte JSON der Live-API, unverändert weitergereicht.
get_city_overview(slug="berlin") Ein-Klick-Installation
Für Cursor und VS Code geht es per Klick. Da InfraNode keylos ist, entfällt jeder Login, der Server ist sofort verbunden:
In Cursor installieren In VS Code installieren
Verbinden (Remote, empfohlen)
Der schnellste Weg: den gehosteten Endpunkt
https://mcp.infranode.dev/mcp als Connector einbinden. In Claude
Code genügt ein Befehl (erster Tab). Clients mit URL-Connector-Konfiguration
(Claude Desktop, ChatGPT und andere) nutzen die JSON-Form im zweiten Tab oder
tragen die URL direkt in der Connector-Oberfläche ein.
claude mcp add --transport http infranode https://mcp.infranode.dev/mcp{
"mcpServers": {
"infranode": {
"url": "https://mcp.infranode.dev/mcp"
}
}
}claude mcp add infranode -- uv run --group mcp python -m infranode.mcp Nach dem Hinzufügen stehen die 12 InfraNode-Tools im Agenten zur Verfügung. Der Zugriff ist lesend und ohne Schlüssel.
stdio-Clients verbinden (npx mcp-remote)
Manche MCP-Clients unterstützen nur lokale stdio-Server, keine Remote-URL.
Für sie überbrückt das Standard-Tool mcp-remote die Lücke: Es
läuft lokal über npx und leitet stdio an den gehosteten Endpunkt
weiter. Kein Repo, kein Schlüssel, keine eigene InfraNode-Installation nötig.
{
"mcpServers": {
"infranode": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.infranode.dev/mcp"]
}
}
}
Beherrscht dein Client Remote-Connectoren per URL (Claude, ChatGPT), ist der
direkte Weg oben einfacher. mcp-remote ist nur der Fallback für
rein lokale stdio-Clients. Hinweis: ein eigenes Paket über
pip, uvx oder npx infranode gibt es
bewusst nicht, der gehostete Endpunkt ist der vorgesehene Weg.
Lokal betreiben (optional)
Wer den Server lieber selbst hostet, startet ihn lokal über stdio (dritter
Tab). Der Quellcode ist öffentlich auf GitHub verfügbar (Apache-2.0). Per
Umgebungsvariable INFRANODE_MCP_API_BASE lässt
sich die angesprochene API-Basis setzen (Default
https://infranode.dev/api/v1).
Was ist MCP
Das Model Context Protocol (MCP) ist ein offener Standard, über den KI-Agenten externe Werkzeuge und Datenquellen einbinden. Ein MCP-Server meldet seine Tools beim Client an, der Agent ruft sie bei Bedarf mit typisierten Argumenten auf und bekommt strukturiertes JSON zurück. Für dich als Entwickler heißt das: Statt eine API-Integration zu bauen, verbindest du den Server einmal, und dein Agent kann die Daten unmittelbar nutzen. Der InfraNode-Server ist remote über Streamable HTTP erreichbar und braucht keinen lokalen Prozess; alternativ läuft er lokal über stdio.