Db Timetable
FreeNot checkedEin Model Context Protocol (MCP) Server für die Deutsche Bahn Timetable API
About
Ein Model Context Protocol (MCP) Server für die Deutsche Bahn Timetable API
README
Ein produktionsreifer Model Context Protocol Server für die offizielle Deutsche-Bahn-Timetables-API. Er übersetzt das kompakte DB-XML in semantisches JSON und führt Sollfahrplan und Echtzeitänderungen zu einer verlässlichen Bahnhofstafel zusammen.
Warum dieser Server?
- Korrekte Gleise und Zeiten:
effectiveenthält den tatsächlich anzuzeigenden Wert;plannedundchangederklären Abweichungen. - LLM-freundlich: Tools liefern
structuredContent, beschreibende JSON-Schemas und ein abrufbares Datenmodell. - MCP-konform: Offizielles TypeScript-SDK, stdio für lokale Clients und stateless Streamable HTTP für Remote-Betrieb.
- Sicherer Betrieb: Keine Logs auf
stdout, lokale Bindung als Standard, Host-Allowlist, Timeouts, Non-root-Container und reproduzierbares Lockfile. - Nachvollziehbar: Unit-, Vertrags- und Transporttests, Coverage-Grenzen, CI, Dependency- und Secret-Checks.
Schnellstart
Voraussetzungen: Node.js 22 oder 24 LTS sowie ein abonniertes Timetables-Produkt im DB API Marketplace.
git clone https://github.com/jorekai/db-timetable-mcp.git
cd db-timetable-mcp
npm ci
cp .env.example .env
In .env eintragen:
DB_TIMETABLE_CLIENT_ID=deine-client-id
DB_TIMETABLE_CLIENT_SECRET=dein-api-key
Dann bauen und starten:
npm run build
npm start
Im stdio-Modus wartet der Prozess auf einen MCP-Client. Statusmeldungen gehen ausschließlich nach stderr; stdout bleibt für JSON-RPC reserviert.
Claude Desktop
Zuerst npm ci && npm run build ausführen. Anschließend einen absoluten Pfad in claude_desktop_config.json verwenden.
macOS/Linux:
{
"mcpServers": {
"db-timetable": {
"command": "node",
"args": ["/absolute/path/db-timetable-mcp/dist/index.js"]
}
}
}
Windows:
{
"mcpServers": {
"db-timetable": {
"command": "node",
"args": ["C:\\absolute\\path\\db-timetable-mcp\\dist\\index.js"]
}
}
}
Die .env-Datei wird sowohl im aktuellen Arbeitsverzeichnis als auch neben dem Projektverzeichnis gesucht. Das funktioniert auch dann, wenn Claude Desktop den kompilierten Server aus einem anderen Arbeitsverzeichnis startet. Alternativ können die beiden Zugangsdaten im env-Objekt des MCP-Eintrags gesetzt werden.
Nach einer Konfigurationsänderung Claude Desktop vollständig beenden und neu starten. Weitere Hinweise stehen unter Fehlerbehebung.
Tools
| Tool | Zweck |
|---|---|
getStationBoard |
Empfohlen: verbindet Sollfahrplan und vollständige Änderungen zu einer Live-Bahnhofstafel |
getPlannedTimetable |
Statischer Sollfahrplan für EVA-Nummer, Datum und Stunde |
getCurrentTimetable |
Vollständiger Änderungsbestand (fchg); aus Kompatibilitätsgründen so benannt |
getRecentChanges |
Änderungen der letzten zwei Minuten (rchg) für inkrementelle Aktualisierungen |
findStations |
Stationssuche nach Name, EVA-Nummer oder DS100-Code |
Alle Tools akzeptieren optional includeRawXml: true. Die vollständige Referenz mit Beispielen steht in docs/api.md.
Datenmodell
Ein Ereignis für Ankunft oder Abfahrt sieht verkürzt so aus:
{
"planned": { "time": { "local": "2026-07-17T10:20" }, "platform": "8" },
"changed": { "time": { "local": "2026-07-17T10:27" }, "platform": "10" },
"effective": { "time": { "local": "2026-07-17T10:27" }, "platform": "10" },
"delayMinutes": 7,
"platformChanged": true,
"isCancelled": false
}
Für Antworten an Reisende immer effective verwenden. Das Modell kann dieselbe Erklärung über die Ressource db-timetable://docs/data-model abrufen. Details: docs/data-model.md.
Streamable HTTP und Docker
Direkt lokal starten:
MCP_TRANSPORT=http npm start
- MCP-Endpunkt:
http://127.0.0.1:3000/mcp - Healthcheck:
http://127.0.0.1:3000/health
Mit Docker Compose:
docker compose up --build -d
docker compose ps
curl http://127.0.0.1:3000/health
Compose bindet den Port absichtlich nur an Loopback, startet als nicht privilegierter Benutzer und verwendet ein schreibgeschütztes Dateisystem. Für einen öffentlichen Endpunkt sind zusätzlich TLS und Authentifizierung über einen Reverse Proxy erforderlich. ALLOWED_HOSTS muss alle erlaubten Hostnamen enthalten.
Konfiguration
| Variable | Standard | Beschreibung |
|---|---|---|
DB_TIMETABLE_CLIENT_ID |
– | DB-Client-ID, für API-Aufrufe erforderlich |
DB_TIMETABLE_CLIENT_SECRET |
– | DB-API-Key, für API-Aufrufe erforderlich |
DB_TIMETABLE_BASE_URL |
offizielle v1-URL | Alternative Basis-URL, primär für Tests |
DB_TIMETABLE_TIMEOUT_MS |
15000 |
Request-Timeout zwischen 1000 und 120000 ms |
MCP_TRANSPORT |
stdio |
stdio oder http |
HOST |
127.0.0.1 |
HTTP-Bindeadresse |
PORT |
3000 |
HTTP-Port |
MCP_ENDPOINT |
/mcp |
Streamable-HTTP-Pfad |
ALLOWED_HOSTS |
– | Kommaseparierte Host-Allowlist; bei 0.0.0.0/:: verpflichtend |
DOTENV_CONFIG_PATH |
– | Expliziter absoluter Pfad zu einer Env-Datei |
LOG_LEVEL |
info |
debug, info, warn oder error |
Die alten Werte TRANSPORT_TYPE=sse|httpStream und SSE_ENDPOINT werden für eine sanfte Migration weiterhin auf Streamable HTTP abgebildet.
Entwicklung
npm run dev # stdio mit Watch-Modus
npm run dev:http # Streamable HTTP mit Watch-Modus
npm run check # Lint, Typen, Tests und Build
npm run test:coverage
Weitere Dokumente:
- API-Referenz
- Datenmodell
- Architektur
- Teststrategie
- Beitragen
- Sicherheitsrichtlinie
- Änderungshistorie
Fehlerbehebung
Expected "," or "]" after array element in Claude Desktop
Auf Version 2 aktualisieren und neu bauen. Frühere Versionen schrieben Logzeilen auf den stdio-Protokollkanal; Version 2 nutzt dafür ausschließlich stderr.
DB-API-Zugangsdaten fehlen trotz .env
Die Datei muss im Repository-Root neben package.json liegen. Bei einem anderen Ort DOTENV_CONFIG_PATH absolut setzen. Keine Anführungszeichen oder zusätzlichen Leerzeichen um die Werte verwenden.
401/403 von der DB API
Prüfen, ob Client-ID und API-Key zusammengehören und die Anwendung das Produkt Timetables abonniert hat.
Falsches Gleis
getStationBoard verwenden und effective.platform lesen. planned.platform ist ausdrücklich das Sollgleis; changed.platform ist nur gesetzt, wenn die DB eine Änderung gemeldet hat.
Datenquelle und Lizenz
Die Fahrplandaten stammen von der Deutschen Bahn und werden über die Timetables API 1.0.274 bereitgestellt. Laut DB API Marketplace stehen die Daten unter CC BY 4.0; die Namensnennung der Deutschen Bahn ist bei Nutzung der Daten erforderlich. Der Marketplace nennt derzeit ein Limit von 60 Aufrufen pro Minute.
Der MCP-Server selbst steht unter der MIT-Lizenz.
Install Db Timetable in Claude Desktop, Claude Code & Cursor
unyly install db-timetableInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add db-timetable -- npx -y github:jorekai/db-timetable-mcpStep-by-step: how to install Db Timetable
FAQ
Is Db Timetable MCP free?
Yes, Db Timetable MCP is free — one-click install via Unyly at no cost.
Does Db Timetable need an API key?
No, Db Timetable runs without API keys or environment variables.
Is Db Timetable hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Db Timetable in Claude Desktop, Claude Code or Cursor?
Open Db Timetable on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Fetch
Web content fetching and conversion for efficient LLM usage.
Roblox Studio
Enables AI coding tools to control Roblox Studio for workspace exploration, instance manipulation, and script management. It provides tools for playtesting, sce
by paralovAWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
by modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
by xuzexin-hzMCP-Agent
A simple, composable framework to build agents using Model Context Protocol by [LastMile AI](https://www.lastmileai.dev)
by lastmile-aiSpring AI MCP Client
Provides auto-configuration for MCP client functionality in Spring Boot applications.
mcp.natoma.ai
A Hosted MCP Platform to discover, install, manage and deploy MCP servers by [Natoma Labs](https://www.natoma.ai)
MCPHub
Website to list high quality MCP servers and reviews by real users. Also provide online chatbot for popular LLM models with MCP server support.
MCP Servers Rating and User Reviews
Website to rate MCP servers, write authentic user reviews, and [search engine for agent & mcp](http://www.deepnlp.org/search/agent)
Compare Db Timetable with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All ai MCPs
