InfraNode
About
Keyless open data for 84 German cities: 12 lean read-only MCP tools covering 64 data types (weather, air quality, public transit with live delays, parking, charging, energy, solar, statistics and more). Official German sources (DWD, UBA, DB, city portals), license and attribution
Details
- Author
- street1983nk
- Downloads
- 316
- Categories
- Other
Jump to
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
InfraNodeCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Connect any MCP client to the remote endpoint at https://mcp.infranode.dev/mcp. No installation, configuration, or API key is needed. Simply point your client to that URL and the 12 tools become
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"infranode": {
"infranode": {
"url": "https://mcp.infranode.dev/mcp"
}
}
}
}
McpServers
{
"infranode": {
"url": "https://mcp.infranode.dev/mcp"
}
}
The open-data REST API for Germany: a keyless HTTP API for German public-infrastructure open data, also available as an MCP server.
German cities publish a lot of open data, but every source has its own format, fields and quirks, and several need portal registration. InfraNode normalizes ~20 categories, weather (DWD), air quality (UBA), public transit (incl. realtime departures), traffic, electricity price (SMARD), land values (BORIS), parking, charging, water levels, demographics, energy and more, for84+ German citiesbehindoneinterface.No API key, no account.Every response uses one canonical{ data, meta }envelope with per-record license and attribution. The same data is also exposed as an MCP server (12 lean read-only tools covering 67 data types) for AI agents. Start with the one-callget_city_overview: it returns a catalog of every data type available for a city plus a live highlights snapshot, so agents discover the full breadth, not just weather. InfraNode is actively growing, with more data types and cities added regularly.
Sources include the Deutscher Wetterdienst (DWD), Umweltbundesamt (UBA), Mobilithek/DELFI, GovData, OpenStreetMap, Bundesnetzagentur, KBA, DIVI and more.
A singleget_city_overview("koeln")call: current weather, official air quality, DWD warnings, live train departures with delays, roadworks and the full per-city data catalog, from one keyless endpoint. Try any city live atinfranode.dev.
One shared HTTP client fans out to the upstream sources, each response is mapped into the canonical schema, license-gated with its attribution and cached in Redis (with stale-on-error fallback), then served through both a REST API and an MCP server. A failing upstream degrades tosource_status, it never fails the call.
flowchart LR subgraph SRC["25+ German open-data sources"] direction TB S1["DWD, UBA<br/>weather, air"] S2["Mobilithek, DELFI, DB<br/>transit, realtime"] S3["SMARD, BNetzA, MaStR<br/>energy"] S4["BORIS, GovData, OSM,<br/>DIVI, KBA, ..."] end subgraph CORE["InfraNode core"] direction TB N["Normalize<br/>one canonical schema"] --> L["License-gate<br/>per-record attribution"] --> C["Redis cache<br/>stale-on-error fallback"] end SRC --> CORE CORE --> API["REST API<br/>infranode.dev/api/v1<br/>84 cities, keyless"] CORE --> MCP["MCP server<br/>mcp.infranode.dev<br/>12 read-only tools"] API --> APPS["Apps & dashboards"] MCP --> AGENTS["AI agents<br/>Claude, ChatGPT"]
If InfraNode saves you a data integration, a star helps other developers find it.
Base URLhttps://infranode.dev/api/v1. No key, no account, just call it:
curl https://infranode.dev/api/v1/cities/koeln/weather
{ "data": { "city_slug": "koeln", "observed_at": "2026-06-18T13:00:00Z", "source": "dwd", "attribution": { "text": "Datenbasis: Deutscher Wetterdienst", "modified": true }, "payload": { "kind": "weather", "temperature_c": 30.4, "humidity": 43.0, "station_id": "02667" } }, "meta": { "source_status": "ok", "cache_status": "hit", "correlation_id": "..." } }
Every response follows the same{ data, meta }envelope: each record carries itsattribution(license + source), andmeta.source_statustells you whether the upstream source delivered data, so a dead source degrades gracefully instead of failing the call.
Tip: call/api/v1/citiesfirst to discover valid city slugs (e.g.koeln,berlin,hamburg), then call any city-scoped endpoint.
The full interactive reference and per-city coverage live atinfranode.dev. TheInfraNode API on the Postman API Networkmirrors every endpoint with real example responses, so you can try theInfraNode API Postman collectionin the browser without an API key.
Every category below is a REST endpoint under/api/v1/cities/{slug}/<key>. Over MCP the same data comes through 12 lean tools: a few named ones (get_city_overview,weather,air_quality,pois,compare, live boards) plus one genericget_city_resource(slug, resource=<key>)for every other data type (itsresourceenum lists all 67 keys).
- Keyless & read-only.No credentials, no writes, no user accounts.
- Canonical envelope.{ data, meta }with per-source status and attribution.
- Graceful degradation.A failing upstream returnssource_status, not an error.
- Safe by design.SSRF and injection gates validate every request; inputs are checked against fixed allowlists.
The same API is exposed as a remote MCP server, so AI agents can call all 67 data types as tools. One line with Claude Code:
claude mcp add --transport http infranode https://mcp.infranode.dev/mcp
Any other MCP client, point it at the remote endpoint (Streamable HTTP):
{ "mcpServers": { "infranode": { "url": "https://mcp.infranode.dev/mcp" } } }
- Cursor / Windsurf:add the block above to~/.cursor/mcp.json(or the app's MCP settings).
- VS Code:code --add-mcp '{"name":"infranode","url":"https://mcp.infranode.dev/mcp"}'
- Claude Desktop:add the samemcpServersblock to yourclaude_desktop_config.json.
- ChatGPT:add a connector with the URLhttps://mcp.infranode.dev/mcp.
All tools are annotatedreadOnlyHint: true/destructiveHint: false/idempotentHint: true, so MCP clients can safely auto-allow them. The MCP layer also ships ready-madeprompts(city_briefing,compare_air_quality,commute_check) andresources(infranode://cities,infranode://sources). Full install guide, the complete tool manifest with example outputs, the permission model and an example transcript are indocs/mcp-install.md. The registry manifest isserver.json.
Ready-made GPT:German City Data (InfraNode)is listed in the GPT Store (Research & Analysis) and works out of the box.
To build your own: InfraNode ships a curated OpenAPI spec for GPT actions: 23 of the most useful operations (ChatGPT allows at most 30 per action), keyless, all GET.
- In theGPT editoropenConfigure → Actions → Create new action → Import from URLand pastehttps://infranode.dev/actions/openapi.json.
- Leave authentication atNone; as privacy policy usehttps://infranode.dev/en/privacy/.
- Tell the GPT in its instructions to start withgetCityOverview(slug), resolve city names viagetCities, and citedata.attribution(the data licences require attribution).
Details and recommended instructions:infranode.dev/en/chatgpt/. The spec is generated fromdocs/openapi.yamlbyscripts/build_actions_spec.py.
Other MCP servers cover parts of the German or European data space. InfraNode is the broadest for city-level open data, and the projects below often complement each other:
- germany-mcp-serverfederal and government data (Autobahn, DWD, NINA, SMARD, Bundestag). Nationwide, no per-city breadth.
- db-mcp-server/ db-timetable-mcp Deutsche Bahn rail timetables only.
- mcp-server-public-transportpublic transport across Europe; in Germany it covers Berlin/Brandenburg (VBB).
- Single-city servers(e.g. Munich, Berlin) cover one city each.
InfraNode covers84 German cities and 67 data typesbehind one keyless, hosted endpoint, from environment and mobility to energy, economy and city life. Full side-by-side comparison:infranode.dev/en/mcp-comparison.
You don't need to, the hosted endpoint above is the fastest path. But the code is open. Run the API stack locally with Docker (Compose v2):
cp .env.example .env # example config, contains NO real secrets docker compose -f deploy/docker-compose.yml up curl http://localhost/api/v1/health # -> {"status":"ok","version":"1.0.0","redis":true}
To run the MCP server itself locally over stdio (against the public API):
uv sync --group mcp INFRANODE_MCP_API_BASE=https://infranode.dev/api/v1 uv run python -m infranode.mcp.server
All settings use theINFRANODE_env prefix (see.env.example); each data source is toggled by its ownINFRANODE_ENABLE_*flag. Real secrets are never committed, only.env.exampleis versioned and CI runs a gitleaks scan.
Contributions are welcome. Setup, gate commands and the secret rule are inCONTRIBUTING.md. To add a new data source, start with the declarative source registry insrc/infranode/registry/source_specs.py(oneSourceSpecentry per upstream); CONTRIBUTING.md has the full checklist.
Get water temperature and swimming conditions for the Aare river in Switzerland.
Global pollen forecasts for any city or coordinate, with per-species values for multiple plants and a multiple day outlook.
Provides advanced Formula 1 data analysis, including real-time telemetry, tire performance, weather prediction, and race strategy simulation.
Provides weather data using the Open-Meteo API.
Real-time surf, trails, volcano, ocean safety, weather, and restaurants for all Hawaiian islands — built for AI agents.
Access meteorological data for Portugal from the IPMA public API using natural language.
Provides live images, time-lapse videos, and current weather updates for Jade Dragon Snow Mountain.
Provides accurate Islamic prayer times for locations throughout Malaysia using the waktusolat.app API.
A collection of MCP servers for Cursor IDE, including demo and weather services.
Swiss open data MCP server — transport, weather, geodata, companies, etc,. Zero API keys.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



