BusTime MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| addA | Add two numbers |
| get_routesA | Fetch all CTA routes. This is usually the first call in a session: use the 'rt' field from each returned route as the route designator for get_directions, get_stops_for_route, get_predictions_for_stop, get_patterns, and get_detours. |
| get_stops_for_routeA | Fetch all stops for a route heading in a specified direction. Use the 'stpid' field from a result as input to get_predictions_for_stop. Call get_directions(rt) first if you don't already have a valid direction id. |
| get_predictions_for_stopA | Fetch the top number of predictions or just the latest one if not specified for buses on a specific stop. This is real-time data and is always live, never cached. |
| get_vehicleA | Fetch a vehicle's live location based on its id. This is real-time data and is always live, never cached. The returned 'pid' field can be passed to get_patterns to draw the vehicle's route shape. |
| get_timeA | Fetch the current BusTime system date and time. Useful for reconciling against prediction timestamps ('prdtm') from get_predictions_for_stop. Always live, never cached. |
| get_directionsA | Fetch the set of directions serviced by the specified route. Use the 'id' field (not the human-readable 'name') from a result as the 'direction' parameter for get_stops_for_route. |
| get_patternsA | Fetch pattern points for a comma-delimited list of pattern ids (pid, max 10), or all active patterns for a single route (rt). Provide exactly one of pid or rt, not both. Useful for drawing a route or vehicle's path on a map. |
| get_locale_listA | Fetch the list of locales (languages) supported by the API. Not currently consumed by other tools here, but useful to validate a 'locale' value before it's added elsewhere. |
| get_detoursA | Fetch active detours in the system. Optionally filter by route (rt) and, if rt is given, by direction. Check this before trusting a get_stops_for_route or get_patterns result is current, since detours can add/remove stops or shift pattern geometry. |
| get_enhanced_detoursA | Fetch enhanced detour data (used by GTFS-RT systems), including affected patterns, trips, and stops. Only returns data when detour support is enabled in BusTime for this API key; may return an 'Unsupported function' error otherwise (this is a CTA-side account limitation, not a bug in this tool). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Most tools target distinct aspects of CTA bus data, but the inclusion of 'add' (add two numbers) is completely unrelated to bus time, creating confusion about the server's purpose and when to use it.
All bus-related tools follow a consistent 'get_<noun>' pattern, but the 'add' tool breaks this pattern entirely, resulting in moderate inconsistency.
With 11 tools, the count is reasonable for a bus transit API. The 'add' tool is unnecessary but does not make the set too large or too small.
The bus tools cover core functionality: routes, directions, stops, predictions, vehicles, time, patterns, detours, and locale. Minor gaps exist (e.g., no route search), but the surface is largely complete for the domain.