4 months ago
> **Disclaimer:** This project was vibe coded and is **not affiliated with or supported by [iRail vzw](https://hello.irail.be)**. Train data may be inaccurate or outdated. Always verify with official sources ([belgiantrain.be](https://www.belgiantrain.be) or the NMBS/SNCB app) before making travel decisions.
A [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server that provides Belgian railway travel information via the [iRail API](https://api.irail.be).
## Features
- **Search Stations** - Find Belgian railway stations by name
- **Live Departures/Arrivals** - Real-time departure and arrival boards
- **Find Connections** - Route planning between stations with transfers
- **Train Information** - Detailed stops, delays, and platforms for a specific train
- **Network Disturbances** - Current disruptions and planned maintenance
## Installation
Requires Python 3.11+ and [uv](https://docs.astral.sh/uv/).
```bash
git clone https://github.com/HansF/irail-mcp.git
cd irail-mcp
uv venv && source .venv/bin/activate
uv pip install -e .
```
## Usage with Claude Code
Add to your project's `.mcp.json`:
```json
{
"mcpServers": {
"irail": {
"command": "uvx",
"args": ["irail-mcp"]
}
}
}
```
Then ask Claude things like:
- "What trains leave Brussels Central in the next hour?"
- "Find a route from Antwerp to Bruges at 2:30 PM tomorrow"
- "Are there any disruptions on the Belgian rail network?"
- "Show me details for train IC2240"
## Tools
### search_stations
Search for stations by name.
- `query` (required) - Station name or partial name
- `lang` (optional) - Language: en, nl, fr, de, it
### get_liveboard
Real-time departures or arrivals from a station.
- `station` (required) - Station name
- `date` (optional) - YYYY-MM-DD, "today", "tomorrow", "+2 days"
- `time` (optional) - HH:MM (24h)
- `arrival` (optional) - Show arrivals instead of departures
- `lang` (optional)
### find_connections
Find routes between two stations.
- `from_station` (required) - Departure station
- `to_station` (required) - Destination station
- `date`, `time`, `lang` (optional)
- `arrival_time` (optional) - If true, time is desired arrival time
### get_train_info
Detailed information about a specific train.
- `train_id` (required) - e.g. "IC1234" or "BE.NMBS.IC1234"
- `date`, `lang` (optional)
### get_disturbances
Current network disruptions and planned works.
- `lang` (optional)
Server Config
{
"mcpServers": {
"irail": {
"command": "uvx",
"args": [
"irail-mcp"
]
}
}
}