onebusaway-mcp-server
Server Details
Real-time transit stops, routes, arrivals, vehicle positions, and schedules via OneBusAway APIs.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- cyanheads/onebusaway-mcp-server
- GitHub Stars
- 1
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.3/5 across 15 of 15 tools scored. Lowest: 3.6/5.
Each tool targets a distinct query type: location-based find, name-based search, specific entity retrieval, and listings. Overlapping purposes like find_routes vs search_routes are clearly differentiated by search criteria.
All tools follow the onebusaway_ prefix with consistent verb_noun pattern: get_ for single entities, get_schedule_for_ for schedules, list_ for enumerations, find_ for location, search_ for name. Naming is predictable and logical.
15 tools cover the full spectrum of transit queries (agencies, routes, stops, trips, blocks, alerts, vehicles, schedules) without bloat. Each tool serves a clear purpose within the domain.
The tool set provides comprehensive read-only coverage for a transit system: agency listings, route/stop discovery by various criteria, schedules, real-time arrivals, vehicle positions, trip status, and alerts. No obvious gaps for common use cases.
Available Tools
15 toolsonebusaway_find_routesFind Routes Near LocationRead-onlyInspect
Find transit routes near a location, optionally filtered by name or number. Returns routes with IDs, short names, and descriptions. Use routeId values to fetch schedules, vehicles, or stop sequences.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude of the search center, in [-90, 90]. | |
| lon | Yes | Longitude of the search center, in [-180, 180]. | |
| query | No | Filter by route name or number (e.g. "44" or "Link Light Rail"). | |
| radius | No | Search radius in meters. Must be positive; capped at 1600m. Defaults to 500m. Ignored when latSpan and lonSpan are both set. | |
| latSpan | No | Optional bounding-box height in degrees, as an alternative to radius. Takes effect only when lonSpan is also set, in which case radius is ignored. | |
| lonSpan | No | Optional bounding-box width in degrees, as an alternative to radius. Takes effect only when latSpan is also set, in which case radius is ignored. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Number of routes returned. |
| query | No | Route name/number filter applied to the search, if any. |
| notice | No | Guidance when no routes matched — e.g. try a larger radius or different query. |
| routes | Yes | Routes found near the specified location. |
| limitExceeded | Yes | True if more routes exist beyond the returned set; narrow the radius or set latSpan/lonSpan to see all. |
onebusaway_find_stopsFind Stops Near LocationRead-onlyInspect
Find bus stops near a location. Returns stops within a radius, each with ID, name, direction, served routes, and wheelchair boarding status. Use stopId values from results to fetch real-time arrivals with onebusaway_get_arrivals. Optionally filter by stop code (the number printed on the stop sign, e.g. "75403").
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude of the search center, in [-90, 90]. | |
| lon | Yes | Longitude of the search center, in [-180, 180]. | |
| query | No | Optional stop code filter (the number printed on the stop sign, e.g. "75403"). When provided, returns only stops matching this code within the radius. | |
| radius | No | Search radius in meters. Must be positive; capped at 1600m, beyond which results degrade. Defaults to 300m. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Number of stops returned. |
| query | No | Stop code filter applied to the search, if any. |
| stops | Yes | Stops within the search radius. |
| notice | No | Guidance when results are empty or truncated — e.g. how to narrow the radius or verify the stop code. |
| limitExceeded | Yes | True if more stops exist beyond the returned set; narrow the radius to see all. |
onebusaway_get_alertGet Service Alert DetailRead-onlyInspect
Fetch full detail for a service alert (situation) by ID. Returns the summary, description, reason (e.g. detour, construction), affected stops and routes, consequence description, and active time windows. Situation IDs appear in onebusaway_get_arrivals responses under situationIds and situations[].id.
| Name | Required | Description | Default |
|---|---|---|---|
| situationId | Yes | Situation/alert ID from onebusaway_get_arrivals (situations[].id or arrivals[].situationIds[]). |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Situation ID. |
| url | Yes | URL for more information about this alert, or null. |
| reason | Yes | Reason code from TPEG: equipmentReason, environmentReason, personnelReason, miscellaneousReason, securityAlert. Null when not provided. |
| affects | Yes | Stops, routes, trips, or agencies affected by this alert. |
| summary | Yes | Short summary of the service alert. |
| severity | Yes | Severity level as reported by the agency, or null. |
| description | Yes | Longer description of the alert, or null. |
| consequences | Yes | Operational consequences of this alert. |
| activeWindows | Yes | Time windows when this alert is active. |
| consequenceMessage | Yes | Human-readable consequence description (e.g. "Detour in effect"), or null. |
onebusaway_get_arrivalsGet Real-Time ArrivalsRead-onlyInspect
Real-time arrivals and departures at a stop. Returns predicted arrival times, schedule deviation (how many seconds late/early), vehicle positions, and any active service alerts. The predicted boolean on each arrival indicates whether GPS tracking backs the estimate — predicted=false means schedule-only. Use tripId from results for follow-up onebusaway_get_trip calls. Stop IDs use agency-prefixed format: {agencyId}_{localId} (e.g. "1_75403").
| Name | Required | Description | Default |
|---|---|---|---|
| stopId | Yes | Agency-prefixed stop ID (e.g. "1_75403" for Metro Transit stop 75403). Use onebusaway_find_stops or onebusaway_search_stops to discover IDs. | |
| minutesAfter | No | Include arrivals expected within the next N minutes. Defaults to 35. | |
| minutesBefore | No | Include arrivals that departed up to this many minutes ago. Defaults to 5. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Number of arrivals in the time window. |
| notice | No | Guidance when no arrivals were found — e.g. try expanding the time window or check for service alerts. |
| stopId | Yes | The queried stop ID. |
| arrivals | Yes | Arrivals and departures at this stop within the requested time window. |
| stopName | Yes | Stop name. |
| situations | Yes | Active service alerts referenced by arrivals at this stop. |
| currentTime | Yes | Server time as Unix milliseconds, for computing countdown timers. |
| queriedStop | Yes | Stop ID queried. |
| windowMinutes | Yes | Time window used for the arrivals query. |
onebusaway_get_blockGet Block ScheduleRead-onlyInspect
Fetch the full-day block schedule for a vehicle by block ID. A block is the ordered sequence of trips a single vehicle makes in one service day. Returns all trips in order with their stop times. Useful for 'when will this bus return?' and fleet tracking. Block IDs appear in onebusaway_get_trip responses under the schedule block field; obtain a tripId from onebusaway_get_arrivals first.
| Name | Required | Description | Default |
|---|---|---|---|
| blockId | Yes | Block ID from a trip record. Obtain a tripId from onebusaway_get_arrivals, then call onebusaway_get_trip to get the blockId. |
Output Schema
| Name | Required | Description |
|---|---|---|
| trips | Yes | All trips in this block in order. |
| blockId | Yes | Block ID. |
| activeServiceIds | Yes | Service calendar IDs active for this block today. |
| inactiveServiceIds | Yes | Service calendar IDs not active for this block today. |
onebusaway_get_routeGet Route DetailsRead-onlyInspect
Fetch details for a specific route by ID. Returns short name, description, agency, route type, and schedule URL. Route IDs use agency-prefixed format: {agencyId}_{localId} (e.g. "1_100259").
| Name | Required | Description | Default |
|---|---|---|---|
| routeId | Yes | Agency-prefixed route ID (e.g. "1_100259"). Use onebusaway_find_routes or onebusaway_search_routes to discover IDs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Agency-prefixed route ID. |
| url | Yes | Agency schedule page URL, or null. |
| type | Yes | GTFS route type: 0=tram, 1=subway, 2=rail, 3=bus, 4=ferry, 5=cable_car. |
| color | Yes | Route brand color hex (without #), or null. |
| agencyId | Yes | Agency ID that operates this route. |
| longName | Yes | Full route name. |
| shortName | Yes | The number or short name displayed on vehicles (e.g. "44"). |
| agencyName | Yes | Agency name that operates this route. |
| description | Yes | Route description. |
onebusaway_get_schedule_for_routeGet Route ScheduleRead-onlyInspect
Full-day schedule for a route — all trips, stop sequences, and departure times for the specified date (defaults to today). Returns up to all trips for the route. For live predictions, use onebusaway_get_arrivals at specific stops instead.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ISO 8601 date (e.g. "2026-05-23"). Defaults to today. | |
| routeId | Yes | Agency-prefixed route ID (e.g. "1_100259"). Use onebusaway_find_routes or onebusaway_search_routes to discover IDs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | No | Date parameter used for the schedule request, if specified. |
| trips | Yes | All trips for this route on this date, with their stop sequences. |
| notice | No | Guidance when no trips were found — e.g. no service on weekends or holiday schedule in effect. |
| routeId | Yes | The queried route ID. |
| tripCount | Yes | Number of trips for this route on this date. |
| queriedRoute | Yes | Route ID queried. |
| serviceDateMs | Yes | Service date as Unix milliseconds. |
| routeShortName | Yes | Route short name. |
onebusaway_get_schedule_for_stopGet Stop ScheduleRead-onlyInspect
Full-day departure schedule for a stop. Lists every departure by route and direction for the specified date (defaults to today). Useful for planning or when real-time data isn't needed. For live predictions, use onebusaway_get_arrivals instead.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ISO 8601 date (e.g. "2026-05-23"). Defaults to today in the agency's timezone. | |
| stopId | Yes | Agency-prefixed stop ID (e.g. "1_75403"). Use onebusaway_find_stops or onebusaway_search_stops to discover IDs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | No | Date parameter used for the schedule request, if specified. |
| notice | No | Guidance when no routes were found — e.g. no service on weekends or holiday schedule in effect. |
| routes | Yes | All routes with departures from this stop on this date. |
| stopId | Yes | The queried stop ID. |
| stopName | Yes | Stop name. |
| routeCount | Yes | Number of routes with departures from this stop on this date. |
| queriedStop | Yes | Stop ID queried. |
| serviceDateMs | Yes | Service date as Unix milliseconds (start of service day). |
onebusaway_get_stopGet Stop DetailsRead-onlyInspect
Fetch details for a specific stop by ID. Returns the stop's name, coordinates, direction, served routes, and wheelchair accessibility. Stop IDs use agency-prefixed format: {agencyId}_{localId} (e.g. "1_75403" for Metro Transit stop 75403).
| Name | Required | Description | Default |
|---|---|---|---|
| stopId | Yes | Agency-prefixed stop ID (e.g. "1_75403" for Metro Transit stop 75403, "40_100239" for Sound Transit). Use onebusaway_find_stops or onebusaway_search_stops to discover IDs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Agency-prefixed stop ID. |
| lat | Yes | Latitude of the stop. |
| lon | Yes | Longitude of the stop. |
| code | Yes | The stop code printed on the sign. |
| name | Yes | Stop name. |
| routeIds | Yes | IDs of routes that serve this stop. Use with onebusaway_get_arrivals or onebusaway_get_schedule_for_stop. |
| direction | Yes | Compass direction of travel at this stop (e.g. "NW"). |
| wheelchairBoarding | Yes | Wheelchair boarding status. |
onebusaway_get_tripGet Trip StatusRead-onlyInspect
Real-time status and stop sequence for a trip. Returns vehicle position, schedule deviation, current phase, and remaining stops. Use tripId from onebusaway_get_arrivals to look up a specific vehicle's progress.
| Name | Required | Description | Default |
|---|---|---|---|
| tripId | Yes | Trip ID from an arrivals response or schedule lookup. | |
| serviceDateMs | No | Service date as Unix milliseconds (midnight local time). Only needed for trips from a previous service day. Omit to use today. | |
| includeSchedule | No | Whether to include the full stop sequence with times. Defaults to true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | Real-time status of the trip. |
| tripId | Yes | The queried trip ID. |
| blockId | Yes | Block ID grouping this trip with the others the same vehicle runs back-to-back. Pass to onebusaway_get_block for the full block schedule. Null when the trip has no block. |
| schedule | Yes | Full stop sequence with times, or null if includeSchedule=false. |
| situations | Yes | Active situation IDs affecting this trip. |
| tripHeadsign | Yes | Destination sign text. |
| routeShortName | Yes | Route short name (e.g. "44"). |
onebusaway_get_vehiclesGet Real-Time Vehicle PositionsRead-onlyInspect
Real-time positions of all active vehicles for an agency. Optionally filter to a single route (client-side). Returns GPS coordinates, heading, schedule deviation, and current trip. Useful for "where are all the buses on route X right now?" Use agencyId values from onebusaway_list_agencies.
| Name | Required | Description | Default |
|---|---|---|---|
| routeId | No | Optional agency-prefixed route ID to filter results to one route. Filtering is client-side — all agency vehicles are fetched first. | |
| agencyId | Yes | Agency ID (e.g. "1" for Metro Transit, "40" for Sound Transit). Use onebusaway_list_agencies to discover IDs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Number of vehicles returned after any route filter. |
| notice | No | Guidance when no vehicles were found — e.g. the route may not be currently active, or the agency may not have real-time data. |
| routeId | No | Route ID filter applied client-side, if any. |
| agencyId | Yes | Agency ID queried. |
| vehicles | Yes | Active vehicles for the agency, optionally filtered by route. |
| limitExceeded | Yes | True if the upstream capped the vehicle list — some vehicles were omitted. This endpoint has no pagination to retrieve them. |
onebusaway_list_agenciesList Transit AgenciesRead-onlyInspect
List all transit agencies served by this OneBusAway instance. Returns agency IDs, names, contact info, timezone, and geographic coverage center. Agency IDs are needed for onebusaway_list_routes_for_agency and onebusaway_get_vehicles.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Number of transit agencies returned. |
| notice | No | Guidance when no agencies were returned. |
| agencies | Yes | All agencies served by this OneBusAway instance. |
| limitExceeded | Yes | True if the upstream capped the agency list — some agencies were omitted. This endpoint has no pagination to retrieve them. |
onebusaway_list_routes_for_agencyList Routes for AgencyRead-onlyInspect
List all routes operated by an agency. Returns route IDs, short names, and descriptions. Use to enumerate an agency's full service before searching for a specific route. Get agencyId values from onebusaway_list_agencies.
| Name | Required | Description | Default |
|---|---|---|---|
| agencyId | Yes | Agency ID (e.g. "1" for Metro Transit, "40" for Sound Transit). Use onebusaway_list_agencies to discover IDs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Number of routes returned for this agency. |
| notice | No | Guidance when no routes were found — verify the agency ID with onebusaway_list_agencies. |
| routes | Yes | All routes operated by this agency. |
| agencyId | Yes | Agency ID queried. |
| limitExceeded | Yes | True if the upstream capped the route list — some routes were omitted. This endpoint has no pagination to retrieve them. |
onebusaway_search_routesSearch Routes by Name or NumberRead-onlyInspect
Search for routes by name or number. Returns matching routes with IDs. Use to resolve a route short name (e.g. "44") to a route ID for schedule or vehicle lookups with onebusaway_get_vehicles or onebusaway_get_schedule_for_route.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Route name or number (e.g. "44", "Link", or "RapidRide"). | |
| maxCount | No | Maximum number of results to return. A positive integer, at most 100. Defaults to 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Number of routes returned. |
| query | Yes | Route name/number query sent to the API. |
| notice | No | Guidance when no routes matched — e.g. try onebusaway_find_routes with coordinates, or onebusaway_list_routes_for_agency. |
| routes | Yes | Routes matching the search query. |
| limitExceeded | Yes | True if more routes match than were returned; raise maxCount or refine the query to see all. |
onebusaway_search_stopsSearch Stops by Name or CodeRead-onlyInspect
Search for stops by name or code. Returns matching stops with IDs and coordinates. Use to resolve a human-readable stop name or number to a stop ID for arrivals lookups with onebusaway_get_arrivals.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Stop name fragment or stop code (e.g. "University Way" or "75403"). | |
| maxCount | No | Maximum number of results to return. A positive integer, at most 100. Defaults to 10. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Number of stops returned. |
| query | Yes | Search query sent to the API. |
| stops | Yes | Stops matching the search query. |
| notice | No | Guidance when no stops matched — e.g. try a different name fragment or use onebusaway_find_stops with coordinates. |
| limitExceeded | Yes | True if more stops match than were returned; raise maxCount or refine the query to see all. |
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!