InfraNode.dev

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:

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:

Von Claude aus InfraNode-Live-Daten generiertes Köln-Dashboard: Wetter, Luftqualität, Bahn-Abfahrten, Verkehrsereignisse und Datenabdeckung

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

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.