LabscoMCP early access ↗
street1983nkMCP SERVER

InfraNode

German city open data — weather, air quality, live transit departures, energy prices, land values and more — for 84 cities behind one key-free endpoint.

by street1983nk ↗Government, Legal & Legislative RecordsCommunity

LABSCO SUMMARY

One overview call instead of twenty exploratory ones.

The design decision that matters for agents is get_city_overview: it returns the catalogue of what exists for that city plus live highlights in one shot, so the model sees the full breadth rather than stopping at the weather. The generic get_city_resource then covers the long tail without bloating the tool list. Field names are English snake_case and stable; some responses still carry older German duplicates with identical values, and the docs are explicit that those are deprecated — use the canonical names.

What it is

A hosted MCP server over a normalising layer for German public open data. German cities publish plenty, but every source has its own format, fields and registration; InfraNode maps 25+ upstream sources — DWD, UBA, Mobilithek/DELFI, VBB, GovData, OpenStreetMap, Bundesnetzagentur, KBA and others — onto one canonical response shape, and serves the result over a remote endpoint with no API key and no account.

What you get

  • A single call that returns a city's base data, a catalogue of all 82 data types with coverage status, and a live snapshot of the headline values — the intended entry point — get_city_overview
  • Any of those 82 data types fetched by its resource key, so one tool covers everything without 82 tool definitions in your context — get_city_resource
  • Named tools for the ones you reach for constantly: current observations, official air quality, points of interest by type, and a city's base record — weather, air_quality, pois, get_city
  • Live rail boards by EVA station number, including local trains and disruptions, and live public-transport departures with real-time delays — station_board_departures, station_board_arrivals, transit_departures
  • Coverage and provenance you can check: every covered city listed, and every source with its licence, attribution and status — list_cities, sources
  • One data type compared across several cities in a single call — compare
  • Ready-made prompts city_briefing, compare_air_quality, commute_check and the resources infranode://cities and infranode://sources
  • Every tool annotated readOnlyHint: true, destructiveHint: false, idempotentHint: true, so a client can auto-approve them safely

Requirements

Nothing — no account, no key, read-only. Point any client at the Streamable HTTP endpoint https://mcp.infranode.dev/mcp; with Claude Code that is claude mcp add --transport http infranode https://mcp.infranode.dev/mcp. Self-hosting is optional and documented, with the API stack under Docker Compose and the MCP server over stdio against the public API. Every response carries attribution per record and meta.source_status, so a dead upstream degrades to a status flag instead of failing the call — and the data licences require you to pass that attribution through.

Setup effort

One command — claude mcp add --transport http infranode https://mcp.infranode.dev/mcp