openbusdata
# OpenBusData MCP Server
mcp-name: io.github.AndrewAubury/openbusdata
MCP server for the [UK Bus Open Data Service](https://data.bus-data.dft.gov.uk) with rich
timetable parsing, stop search, route discovery, journey planning and real-time bus tracking.
## Features
- **Live API tools** — query timetables, fares, disruptions, cancellations and real-time bus locations
- **Stop search** — fuzzy text search across every bus stop in the UK
- **Route finder** — discover all routes serving a pair of stops
- **Journey planner** — "get to X by Y o'clock" with support for direct and chained multi-leg journeys
- **Live tracking** — see exactly where buses are right now
## Installation
### Option 1: via `uvx` (recommended — no install needed)
```bash
uvx openbusdata-mcp
```
### Option 2: via `pip`
```bash
pip install openbusdata-mcp
```
## Configuration
Set your Bus Open Data Service API key as an environment variable:
```bash
export OPENBUS_API_KEY="your-api-key-here"
```
Get a free key at [data.bus-data.dft.gov.uk](https://data.bus-data.dft.gov.uk).
## Usage
### With `uvx` (recommended)
Add to your MCP client (Claude Desktop, Cursor, etc.):
```json
{
"mcpServers": {
"openbusdata": {
"command": "uvx",
"args": ["openbusdata-mcp"],
"env": {
"OPENBUS_API_KEY": "your-api-key-here"
}
}
}
}
```
### With `pip` install
```json
{
"mcpServers": {
"openbusdata": {
"command": "openbusdata-mcp",
"env": {
"OPENBUS_API_KEY": "your-api-key-here"
}
}
}
}
```
## Development
```bash
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # or .venv\Scripts\activate on Windows
# Install dependencies
pip install -e ".[dev]"
# Run server
python -m openbusdata_mcp.server
```
## License
MIT
TDQS
Scored across 16 tools
Several tools have overlapping scopes, like multiple dataset listing tools (Data_set_api_v1_fares_dataset and timetables_api_v1_dataset) and real-time feed tools (get_live_buses_on_route and SIRI_VM_Data_feed_api_v1_datafeed). While they target different data types (fares vs timetables, route-level vs feed-level), the names are similar and could confuse an agent.
Naming is highly inconsistent: some tools use snake_case (find_buses_by_arrival_time), some use camelCase (Data_set_api_v1_fares_dataset), and others use a mix (GTFS_RT_Data_feed_api_v1_gtfsrtdatafeed). There is no consistent pattern, making it hard to predict tool names.
16 tools is reasonable for a comprehensive bus data API covering fares, timetables, real-time, disruptions, and planning. It is slightly on the high side but still well-scoped for the domain.
The tool set covers core bus data operations: dataset discovery, stop search, route lookup, timetables, real-time positions, cancellations, disruptions, and journey planning. Minor gaps exist (e.g., no fare calculation), but the overall coverage is good.