ÖPNV MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ÖPNV MCP Server Plan a journey from Frankfurt to Stuttgart tomorrow at 8:00"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ÖPNV MCP Server
A Model Context Protocol (MCP) server for German public transport information using the v6.db.transport.rest API.
Features
Search stations and stops - Find train stations, bus stops, tram stops across Germany
Live departures/arrivals - Real-time information with delay tracking
Journey planning - Find connections with transfers, platform info, and tight connection warnings
Smart warnings - Highlights delays, cancellations, platform changes, and risky transfers
Supports all transport types: ICE, IC, RE, RB, S-Bahn, U-Bahn, Tram, Bus
Related MCP server: swiss-public-transport-mcp
Installation
npm install
npm run buildUsage
Add to your MCP client configuration. This server uses stdio transport.
Example configuration:
{
"mcpServers": {
"oepnv": {
"command": "node",
"args": ["/absolute/path/to/oepnv-mcp/dist/index.js"]
}
}
}Restart your MCP client to activate the server.
Example Queries
"Find trains from München Hbf to Berlin"
"Show me departures from Alexanderplatz"
"When does the next S-Bahn leave from Marienplatz?"
"Plan a journey from Stuttgart to Hamburg tomorrow at 10:00"
Available Tools
search_station
Search for stations and stops by name.
Parameters:
query(string): Station name (e.g., "München Hbf", "Berlin Alexanderplatz")
get_departures
Get live departures from a station.
Parameters:
stationId(string): Station ID from search resultsduration(number, optional): Time window in minutes (default: 90, max: 120)
get_arrivals
Get live arrivals at a station.
Parameters:
stationId(string): Station ID from search resultsduration(number, optional): Time window in minutes (default: 90, max: 120)
search_journeys
Find journey connections between two stations.
Parameters:
originId(string): Origin station IDdestinationId(string): Destination station IDdepartureTime(string, optional): Departure time inYYYY-MM-DDTHH:MMformat
Development
# Run in development mode
npm run dev
# Build
npm run build
# Start production server
npm startAPI
This server uses the v6.db.transport API (db-vendo-client as backend).
License
MIT
Available Tools
5 toolsget_arrivalsB
Get live arrivals for a station by ID from a station or stop (trains, buses, trams, U-Bahn, S-Bahn)
Inputs: stationId (required), duration.
get_departuresC
Get live departures for a station by ID from a station or stop (trains, buses, trams, U-Bahn, S-Bahn)
Inputs: stationId (required), duration.
get_disruptionsA
Get current disruptions, warnings, and service information for a station (delays, cancellations, construction work, etc.)
Inputs: stationId (required).
search_journeysA
Search for journeys between two stations. If the user doesn't specify a departure time, ask them when they want to travel (e.g., 'now', 'tomorrow at 10:00', 'next Monday 14:30').
Inputs: originId (required), destinationId (required), departureTime.
search_stationB
Search for train and bus stations in Germany by name
Inputs: query (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Tools are mostly distinct: arrivals vs departures clearly differentiated by direction, disruptions and station search are unique. Only slight potential confusion between arrivals and departures if context is unclear, but descriptions resolve it.
All tool names follow a consistent `verb_noun` pattern: `get_arrivals`, `get_departures`, `get_disruptions`, `search_journeys`, `search_station`. No mixing of conventions or irregular verbs.
Five tools is well-scoped for a public transport information server. Each tool covers a distinct user need (arrivals, departures, disruptions, journey planning, station lookup) without unnecessary duplication.
Core operations are covered: station search, live arrivals/departures, disruptions, and journey planning. A minor gap is the lack of a tool to retrieve details for a specific journey (e.g., intermediate stops), but the surface is largely complete for typical use cases.
Maintenance
Related MCP Connectors
MCP server for China Railway 12306 ticket availability: schedules and seats by Chinese station name.
MCP server for China Railway 12306 ticket availability: schedules and seats by Chinese station name.
DB Rail MCP — German + European rail and public transport, keyless.
Journeys, departures, line courses, disruptions in Germany; nearby sharing as currently reported.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server for interacting with the Berlin Public Transport (BVG) API to search for locations and plan journeys. It provides real-time access to departures, arrivals, trip details, and vehicle tracking within Berlin's transit network.MIT
- AlicenseAqualityDmaintenanceMCP server for Swiss public transport — connections, stationboards, real-time delays, and direct booking links for SBB.41MIT
- AlicenseAqualityDmaintenanceProvides access to Deutsche Bahn's timetable data through MCP, enabling real-time train schedules, station search, and change tracking for German railway stations.4236 npmMIT
- AlicenseNot gradedqualityDmaintenanceMCP server for real-time German public transport data (HAFAS/VBN network). Enables querying departures, arrivals, journeys, and nearby stops using natural language.ISC