MCP server: One MCP server.

OeBB (Austrian Railways)

@slettmayerMCP server · External

OeBB (Austrian Railways) train data: stations, departures, connections, service alerts.

Public transportv0.2.8MITPython
Freeno charge per call

Runs on your machine from its package; the steps are below.

What it does

  1. Reads
  2. Writes
  3. High impact

At most: only reads or looks up information.

What it costs

Free

Odel charges nothing per call. The publisher may charge for its own service.

Runs locally over stdio

This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).

PyPIoebb-mcp-serverv0.2.8

Run

uvx oebb-mcp-server

MCP client config

{
  "mcpServers": {
    "oebb-austrian-railways": {
      "command": "uvx",
      "args": [
        "oebb-mcp-server"
      ]
    }
  }
}
README2 min read

oebb-mcp-server

PyPI Python License: MIT

MCP server for OeBB (Austrian Federal Railways) train data. Query Austrian train stations, departures, connections, and service alerts directly from LLMs via the Model Context Protocol.

Installation

Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

json
{
  "mcpServers": {
    "oebb": {
      "command": "uvx",
      "args": ["oebb-mcp-server"]
    }
  }
}

Claude Code

bash
claude mcp add oebb -- uvx oebb-mcp-server

From source (development)

json
{
  "mcpServers": {
    "oebb": {
      "command": "uvx",
      "args": ["--from", "/path/to/oebb-mcp-server", "oebb-mcp-server"]
    }
  }
}

Tools

search_station

Search OeBB stations by name. Returns matching stations with IDs, coordinates, and types.

ParameterTypeDefaultDescription
querystringrequiredStation name (e.g. "Wien Hbf")
max_resultsint10Maximum results

station_board

Fetch live departures or arrivals at a station. Provide either station_id or station_name.

ParameterTypeDefaultDescription
station_idstring—OeBB station ID (e.g. "1190100")
station_namestring—Station name (auto-resolved)
board_typestring"DEP""DEP" for departures, "ARR" for arrivals
max_journeysint10Maximum journeys

Search train connections between two stations. Supports time planning and direct-only filtering.

ParameterTypeDefaultDescription
from_station_idstring—Departure station ID
from_station_namestring—Departure station name
to_station_idstring—Arrival station ID
to_station_namestring—Arrival station name
max_connectionsint5Maximum connections
timestringnowISO 8601 time (e.g. "2026-04-15T08:00:00")
time_modestring"departure""departure" or "arrival"
direct_onlyboolfalseOnly direct connections

service_alerts

Fetch current OeBB service alerts and disruptions.

ParameterTypeDefaultDescription
max_alertsint20Maximum alerts
product_filterint65535Product bitmask (1=ICE/RJX, 2=IC/EC, 4=NJ, 8=D/EN, 16=REX/R, 32=S-Bahn, 64=Bus, 128=Ferry, 256=U-Bahn, 512=Tram, 4096=private operators like Westbahn/RegioJet, 65535=all)

Development

bash
# Install dependencies
uv sync

# Lint & format
ruff check .
ruff format .

# Run unit tests
pytest tests/ -v -m "not integration"

# Run integration tests (hits real OeBB API)
pytest tests/ -v -m integration

License

MIT

Similar modules

Browse Public transport