search_places
Find towns, villages, postcodes (full or partial, e.g. "S1") and stops by name. Places sharing a name are ranked by size. Give lat/lon to sort by distance from there.
latlonlimitqueryrequired
com.transcapiPublished by transcapi.comv0.1.3Updated Oct 30, 2026
UK and Ireland transport: live buses and trains, journey planning, rail fares, disruptions.
TransCAPI gives an assistant live UK and Ireland public transport data: bus and rail departures, live vehicle positions, disruptions and journey planning.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
Lets AI assistants such as Claude answer questions about public transport in Great Britain and Ireland with live data: "When's the next train from Leeds to York, and is it on time?", "Where's the 52 bus?", "Is anything disrupting my route home?"
It connects an assistant to TransCAPI, which covers England, Scotland, Wales and the island of Ireland (plus the Netherlands and Belgium): stops and places, bus and rail departures with live running, live bus positions, journey planning with rail fares, disruptions matched to a route, and measured bus punctuality.
Get a free API key at https://www.transcapi.com/signup (200 requests a day, every endpoint).
Add the server to your MCP client. For Claude Desktop, in
claude_desktop_config.json:
For Claude Code:
Or install it yourself with pip install transcapi-mcp and run
transcapi-mcp.
All tools are read-only.
TransCAPI is built on official open data. If you show its data to other people, credit the sources as described at https://www.transcapi.com/docs/data-sources.
MIT.
Source: README.md at commit fad5b23
Find towns, villages, postcodes (full or partial, e.g. "S1") and stops by name. Places sharing a name are ranked by size. Give lat/lon to sort by distance from there.
latlonlimitqueryrequiredBus, tram and rail stops within `radius` metres of a point, nearest first. Each has an `atcocode` for bus_departures and `towards` saying which way its buses go.
latrequiredlonrequiredlimitradiusRail stations within `radius` metres of a point, with their CRS codes for rail_departures.
latrequiredlonrequiredlimitradiusWhat is leaving (or, with board="arrivals" or "both", arriving at) a bus stop. Tracked buses have an expected time and `delay_seconds`; others show the timetabled time with source `gtfs_scheduled`.
boardlimitatcocoderequiredminutes_aheadLive trains leaving (or arriving at, with board="arrivals" or "both") a station: expected times, platforms, cancellations and delay reasons from National Rail, plus station messages. `crs_code` is the 3-letter code, e.g. LDS for Leeds.
boardlimitcrs_coderequiredminutes_aheadEvery station one train calls at. For a train running today, each call has live status, expected and actual times, and the platform at its next station. Take `trip_id` from rail_departures.
trip_idrequiredEvery stop one bus journey calls at, the days it runs, and where the bus is now if it is running. Take `trip_id` from bus_departures or live_buses.
trip_idrequiredBuses on the road within `radius` metres (up to 10000) of a point, nearest first, each linked to the journey it is working (`trip_id`) and with `delay_seconds` where tracked. Filter by `line` (e.g. "52") or operator.
latrequiredlonrequiredlineradiusoperatorPlanned works, incidents and line status: bus and tram across Great Britain, plus Tube, DLR, Overground, Elizabeth line and London Trams. Filter by area (lat/lon/radius), mode, operator or line. To ask what affects a particular journey, pass its route as `path` (an encoded polyline, e.g. a leg's `leg_geometry` from plan_journey): line numbers repeat across towns, so this is more reliable than `line`.
latlonlinemodepathlimitradiusoperatorpath_radiusPublic transport journeys between two points, with walking, fares and live positions of buses already running. `datetime` is ISO 8601 (default now); `arrive_by` treats it as the latest arrival. Currently covers South and West Yorkshire and West Sussex: elsewhere it returns 422 outside_coverage, which means not covered rather than no route.
limitto_latrequiredto_lonrequireddatetimefrom_latrequiredfrom_lonrequiredarrive_byinclude_steps90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
{ "mcpServers": { "transcapi": { "command": "uvx", "args": ["transcapi-mcp"], "env": { "TRANSCAPI_API_KEY": "your-key" } } }}claude mcp add transcapi --env TRANSCAPI_API_KEY=your-key -- uvx transcapi-mcp