
ViaFrei
de.viafreiv1.8.30Updated Oct 8, 2026
German open mobility data: Autobahn traffic, trains, transit, fuel, charging, parking, weather.
Overview
Lets an assistant answer live questions about German mobility: motorway traffic, trains, transit, EV charging, fuel, parking and weather.
- What it does
- A hosted MCP server over German open data with 21 tools, 9 prompts and 10 resources. Tools cover Autobahn jams, closures and roadworks, train and bus departures, regional punctuality and service alerts, station lifts and escalators, EV charging sites, cheapest fuel, parking and rest areas, and place, address and coordinate lookups. Prompts chain these into briefings such as a departure check, a drive-or-train comparison or a commute plan. Answers name their data source, and watches can report changes within a conversation.
- When to use it
- Useful when an assistant should answer live German travel questions: whether a motorway is jammed or closed, whether a train is late, whether a station lift works, where to charge or refuel, or what is near an address or coordinate. Also suited to commute, road-trip and fleet briefings that combine several of these sources.
- Requirements
- A remote MCP endpoint; nothing to install for HTTP clients. Clients that only speak stdio need Node 22 or newer and the npm bridge package, which is fetched with npx. No account, API key or sign-up is required. Network access to the hosted service is needed.
Installation
In SourceWeft
- Open ViaFrei in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Other MCP clients
Add this to your client's mcpServers config.
{
"mcpServers": {
"mcp": {
"type": "http",
"url": "https://mcp.viafrei.de/mcp"
}
}
}README
ViaFrei
Germany's traffic, trains, charging and roads — in your AI assistant.
Ask in plain words. Get the live answer, with its source.
[website] [node] [licence] [no API key] [MCP]
viafrei.de · Connect your assistant · For developers · For businesses · All tools · API reference
Free. No account, no API key, no sign-up. One line and your assistant knows whether the A8 is jammed, whether your train is late, where the nearest Type 2 charger is (and whether it is free, where the operator publishes that) and whether the lift at your station works — from official German open data, live, with the source named in every answer.
Beta. ViaFrei is being stabilised: sources are still being added, and answers and coverage can change. The answers are written by an AI assistant from our data, and AI can make mistakes, so check anything important (a closure, a departure, a price) against the source each answer names.
New in 1.8: a twenty-first tool,
find_sharing, for shared bikes (nextbike and Donkey Republic). Berlin and Brandenburg punctuality now comes from VBB's own realtime feed. Road answers now include police and city traffic reports from Baden-Württemberg, Schleswig-Holstein and Berlin (and from Köln and Hannover whenever those cities publish one), and roadworks on Bundes- and Landesstraßen in Niedersachsen, Sachsen and Thüringen. Charging gains the Bundesnetzagentur register and more live status, and parking gains Hamburg, Münster and NRW car parks. Every source is listed in SOURCES.md.
🧳 What you can ask
You don't need to know any tool names. Ask the way you'd ask a friend who happens to have every German traffic feed open. German or English; the answer comes back in the language you asked in.
What the answers cover, honestly. Live traffic is the motorways. Closures and roadworks also cover federal roads, Land roads in Niedersachsen, Sachsen and Thüringen, and the traffic reports some Länder and cities publish (Baden-Württemberg, Schleswig-Holstein, Berlin, Köln, Hannover); other city streets are not covered. Places and addresses come from OpenStreetMap, so what is not mapped there cannot be found, and opening hours and ratings are not part of it. A watch lives in the conversation that opened it: the server keeps every change there, and your assistant shows it when you ask, or on its own if your client supports MCP notifications. Nothing is sent by e-mail or SMS. Up to 10 watches per conversation, each for up to 24 hours (3 by default), and a road is watched as a whole, not one section of it.
💬 Real answers
These came back from the production server at https://mcp.viafrei.de/mcp
(server 1.8.18) on 2026-10-06, 23:00 Berlin time. They are not mock-ups. Each
one shows the first lines of what the tool returned, and the source line exactly
as it was sent, shortened where marked.
🚆 "Welche Züge fahren als Nächstes ab Hamburg Hbf?" — get_train_departures
Platform, delay and the estimated real departure, in one line each. Edited: six of ten departures omitted. The board listed the first two S-Bahn rows twice; that is a known defect being fixed, and the repeats are among the omitted rows.
♿ "Funktioniert der Aufzug am Bahnhof Köln Messe/Deutz?" — check_station_facilities
The railway station and the Stadtbahn stop below it, from two operators, in one answer. For anyone with a wheelchair, a pram or a heavy suitcase, this is the difference between a station being usable and not. Edited: most facilities of both lists omitted, and the source lines cut.
⚡ "Where can I charge with Type 2 near Leipzig?" — find_charging_station
It says what it does not know: "no status data" is unknown, never free.
Edited: entries 3–5 omitted, a municipality key removed from the heading, and the sources cut to ….
🚦 "Is public transport in North Rhine-Westphalia running on time?" — check_transit_disruption
Region-wide, with the method stated, and the operators' own service alerts
beside the figure. The share-alike condition arrives as part of the answer,
because it is part of the data.
Edited: the method paragraphs between the figure and the alerts omitted, and the sources cut to ….
📍 "What is at 52.5163, 13.3777?" — describe_location
That's the Brandenburg Gate. Edited: two of four sources cut to ….
🇩🇪 "Do I need an emission sticker for Stuttgart?" — get_driving_rules
Every statement carries its source, and says [to verify] where we could not confirm it. Edited: most points omitted.
🅿️ "Find lorry parking on the A9" — find_parking
Edited: three of five sites omitted.
Why the source line matters. Every answer ends with one, and it is the licence speaking: show it to whoever reads the answer. Copy the line the server sends you, not the ones on this page, which are shortened. See Using the data you get back.
🔌 Connect in one minute
The product is a hosted MCP server. Point your client at it and the tools appear. There is nothing to install, no key to request and no quota to negotiate. Step-by-step guides for each assistant: viafrei.de/en/connect.
Claude Code
Claude (desktop app and claude.ai), ChatGPT and other apps that take a connector URL — add a custom connector with this address (in Claude: Settings → Connectors → Add custom connector; in ChatGPT the connector settings need developer mode):
Cursor, and any client with an mcpServers file that takes a url, over HTTP:
VS Code (.vscode/mcp.json, or MCP: Add Server from the command palette):
Clients that speak only stdio — for example Claude Desktop's config file
(claude_desktop_config.json, opened from Settings → Developer → Edit Config).
That is what this package is for:
Node 22 or newer. npx fetches the bridge when your client starts it. If the
file already has an mcpServers block, add the "viafrei" entry inside it
rather than pasting a second block.
An older client on HTTP+SSE is answered too, at https://mcp.viafrei.de/sse.
The transport is deprecated in the specification, so prefer the address above
when you can:
Restart the client and ask one of the questions above.
Where to find ViaFrei
- npm —
viafrei. This package: the stdio bridge, for the config line above. Its page shows the current version and this README. - Smithery — smithery.ai/servers/viafrei/viafrei. Connect through Smithery's hosted connection, with no local install.
- Glama — glama.ai/mcp/servers/mavrovde/viafrei-mcp. The directory listing for this repository, with the tool list.
- Official MCP Registry —
de.viafrei/mcp. The hosted endpoint, as MCP clients and directories that read the registry find it;server.jsonis the entry. It is the registry's own record, republished by hand when the listing changes, so its version may differ from this package's. - For AI tools — viafrei.de/llms.txt and llms-full.txt: what ViaFrei is, how to connect, and every tool in one line each.
🧰 Everything it can do
21 tools, 9 prompts, 10 resources and 2 resource templates — server 1.8.30, snapshot of 2026-10-08. Each line is the server's own words; the full parameters are in API.md.
🚗 On the road
🚆 Public transport
⚡ Charging and fuel
📍 Places and addresses
🚲 Sharing
🌦️ Weather and rules
🔔 Watches
🧭 Prompts — ready-made briefings
Pick one in your client's prompt menu and fill in the blanks; it calls the right tools in the right order.
📚 Resources — reference your assistant can read
The running server is the source of truth. This list and API.md
are rendered from a dated snapshot of it, and CI fails if either drifts from that
snapshot. Ask any MCP client for tools/list to see what is live this minute.
Worked use cases
Walkthroughs that chain several tools, each naming what comes back:
- 🛣️ Driving Munich to Berlin: several motorways in one call, roadworks ahead, a fuel or charging stop, and parking at the far end.
- 🚉 The commute that broke: departures, regional disruption, and a station lift that is out.
- 🔋 An EV on a long weekend: charging by connector and power, low-emission-zone rules, and what is around a stop.
- 🚚 Fleet and logistics briefings: a dispatcher's morning brief, and watches that report a change instead of being polled.
- 🗺️ Building a local guide agent: a vague place to coordinates and back, and what OpenStreetMap's licence asks of you.
How well it answers, measured: test rounds, 1000 questions in German and English against production, with every finding published.
🛠️ For developers
It's plain MCP over HTTP. You can call it without an SDK:
- One endpoint instead of a stack of integrations. SOURCES.md lists the publishers behind it, among them Autobahn GmbH, Deutsche Bahn, DWD, DELFI, the national access point Mobilithek, BKG, GeoNames, OpenStreetMap and MTS-K. Each has its own format, release rhythm and licence, and they arrive here as one protocol.
- Results are written to be read aloud. A tool answers in sentences an assistant can pass on, says what it does not know ("no status data means unknown, not free"), and ends with the source line.
- Annotated honestly. Nineteen of the twenty-one tools are read-only and
idempotent (
readOnlyHint,idempotentHint), so a client can call them without a confirmation prompt. The two watch tools are not, because opening or stopping a watch changes what the server will tell you later, and their annotations say so. - Prompts and resources, not only tools. Nine ready-made briefings, and a reference shelf (driving rules, emission zones, emergency numbers, attribution) your assistant can read directly.
- Watches.
watch_situationturns polling into a notification for as long as the session lives: a road closure appearing or clearing, a stop's departures running late, a region's late share reaching a threshold (a quarter by default), a DWD warning coming into force, a charge point turning free. Three hours by default, 24 at most, and at most 10 per session. What a watch has reported is readable atviafrei://watchesandviafrei://watch/{id}, and a client that subscribes to that resource is told when it reports something new. It reaches no inbox and no phone. - Machine-readable failures, in the bridge too: one line on stderr and a distinct exit code per cause (see below).
Bridge configuration
Many MCP clients can only pass an env block, not arguments, so every option
has an environment variable too:
A flag wins over the variable, and the variable wins over the built-in default.
A --header of the same name replaces one from the variable; a --header of a
different name is added alongside it.
There is no self-hosted ViaFrei. The server is a hosted service. --url is
not a way to run your own: it exists for a proxy or gateway in front of the
service, and for the stub server this repository's test suite starts.
When something is wrong
The bridge prints one line to stderr and exits with a code that says what happened. No stack traces:
The same text also goes back to the client as a JSON-RPC error, so an assistant can say what went wrong instead of going quiet.
A slow call may be a retried call. A 429, 502, 503 or 504 is tried
again once, after the delay the server asked for in Retry-After, or 250 ms
when it asked for none. A connection that fails outright (reset, broken pipe,
socket or connect timeout) is tried once more after 250 ms. Two cases are not
retried, because waiting would be worse than answering: a 429 with no usable
Retry-After, and any requested delay longer than your timeout. An event stream
is never retried.
Your timeout bounds each request, not the whole call. Two attempts plus a delay can add up to about three times the timeout, and more if the endpoint redirects. If you need a hard ceiling, enforce it on your side.
An established session may wobble: a dropped event stream is a warning, and the bridge reconnects. It may not stay dead in silence. Several failures in a row with nothing succeeding in between end the process with the code above, so the client that started it finds out.
What the bridge does not do
- No tracking. No telemetry, no analytics, no usage counter, no update check.
- No stored files or credentials. It writes no file outside the OS temp
directory.
--headeris passed through to the endpoint and is never persisted or logged. - No cross-origin redirects. A redirect off the origin you pointed it at is refused with one line naming both ends, so a server cannot forward your API key somewhere you did not choose. Same-origin redirects are followed normally.
💼 For businesses
- The licence work is done, and it travels with the answer. Each result carries the attribution its sources require. Where a source attaches a condition, the result states it: share-alike is flagged, and the MTS-K purpose limit arrives as a sentence you are meant to show.
- Built for answering people. Live figures, sourced and dated, in the language of the question. Good for travel and mobility assistants, dispatchers' briefings, customer service and step-free station checks.
- Read the business page: viafrei.de/en/business. It covers six use cases and how to work with us.
⚖️ Using the data you get back
Every result carries an attribution line. Show it to the person reading the
answer. The full register is at the resource viafrei://attribution, and
SOURCES.md is the readable version: every publisher, what it
covers, its licence, and the exact line to reproduce.
Two constraints matter more than the rest, because getting them wrong is a licence breach rather than a style problem:
- MTS-K fuel prices are consumer information only. Any other use is unlawful in any form, raw, reformatted or aggregated, and never for the fuel industry or its IT providers. On top of that we ask for no redistribution at all: answer the person who asked; do not build a product out of it. (This is also why this page shows no fuel price.)
- DELFI's realtime and disruption feeds are Creative Commons Attribution-ShareAlike (its static timetable and stop directory are CC BY 4.0, and so is VBB's Berlin-Brandenburg feed). Share-alike travels with anything you derive from it: recompute it, reshape it, rearrange it or build a delay table out of it, and that is Adapted Material you must license under BY-SA (art. 1(a) names material "translated, altered, arranged, transformed, or otherwise modified"). Merely showing it beside another source's data is an aggregation and puts no obligation on the other source. The realtime feeds' catalogue records name no licence version, so do not rely on one for a derivative; SOURCES.md has the detail, and also covers the two share-alike databases under the ODbL (OpenStreetMap and one lorry-park operator).
🗣️ Tell us when an answer is wrong
ViaFrei is live, free, and still growing. Some sources are thinner than they will be, and a tool can be slow or wrong. A tool that fails is something the server sees. A tool that answers confidently with the wrong thing is not. Use the A tool answered badly, or not at all issue template, saying what you asked and what came back. That report is the one thing we cannot get any other way.
The server itself
The MCP server is a hosted service, and its source is closed. It is not in
this repository and is not published. What is public is the part meant to be:
the tool names, descriptions, input schemas, result shapes and attribution
lines, which is everything a client reads from tools/list. We say this plainly
so nobody spends an evening looking for the server code.
Contributing · Security · Licence
- Contributing: yes, please. See CONTRIBUTING.md and CODE_OF_CONDUCT.md. The bridge is small and self-contained, which makes it a good place for a first patch.
- Security: never open a public issue for a key, a token or anything that looks like one. SECURITY.md has the private reporting path.
- Licence: Apache-2.0 for this code. Data obtained through the server keeps its provider's licence; see NOTICE.
viafrei.de — Deutsch · English · Русский · Български · Українська · Română · Türkçe
Source: README.md at commit acafaef
Tools
0Version history
1- v1.8.30LatestOct 8, 2026


