Tessa Travel MCP
by hannes813
README.md
# Tessa Travel MCP
Read-only MCP adapter for user-requested public-transport routing, IRIS departure boards and locally generated Deutsche Bahn search links. Node.js 24+, MIT-licensed source. No DB Navigator/Web API requests, browser automation, purchases or credentials.
Tools:
- `transit_locations`: Transitous station lookup; IDs are not DB EVA IDs.
- `transit_journeys`: up to two MOTIS v6 routing pages, planned departure window, realtime annotations when present, explicit incompleteness, and a DB search link per result. No prices or first-class inventory.
- `bahn_search_link`: local URL generation only, first class and BahnCard 25 first class, one adult. Name-only searches for stations outside the supplied template registry must be confirmed in the browser. A search link does not select an exact train or guarantee availability. No network request is made by this tool.
- `iris_departures`: current DBF/IRIS station board by EVA, primary FaserF and one bounded finalrewind fallback on transient failures. No dated route reconstruction from undated HH:mm values.
## Development
```sh
npm ci --ignore-scripts
npm test
TRANSITOUS_MODE=prototype TRANSITOUS_PROTOTYPE_UNTIL=2026-11-08T00:00:00Z node server.mjs
```
The HTTP MCP endpoint binds only to `127.0.0.1:19180/mcp` (override port with `MCP_PORT`). Health is `/healthz`. Host/Origin checks, request/response limits, timeouts, bounded caches, request deduplication and provider rate limits are included. There is no background polling or refresh timer.
An unspecified or expired prototype expiry blocks Transitous before any network request. IRIS and local link generation remain available. Prototype mode limits routing to 12 upstream page requests per rolling 24 hours per process. It must not be represented as unrestricted production access. Only use `TRANSITOUS_MODE=published` after publishing the source and satisfying the provider requirements; it is not a provider authorization switch. This repository grants no rights to upstream data.
## Provider conditions and attribution
Transitous requires open-source publication for continuing use (light prototype testing before publication is permitted), noncommercial use, low resource usage, identifiable User-Agent and visible data attribution. Automated/high-resource usage requires coordination according to its policy. Request only on a concrete user query, never schedule searches. Read https://transitous.org/api/ before deployment.
Display these links in routing results:
- Transitous data sources: https://transitous.org/sources/
- © OpenStreetMap contributors: https://www.openstreetmap.org/copyright
The public DBF services request at most 10 requests per minute and one per station/minute. The adapter caps external starts at eight per minute and enforces each provider's station cooldown across parameter changes. See https://dbf.fabiseitz.de/ and https://dbf.finalrewind.org/ . Respect other consumers sharing the same public IP, including Home Assistant.
For private infrastructure, keep deployment files and credentials outside this source directory. This package contains no server addresses, access keys, Home Assistant configuration or private reference responses.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues