io. github. cyanheads/ onebusaway-mcp-server
by cyanheads · remote · local (npm) · no sign-in to list tools · v0.2.1 · published by GitHub user cyanheads
Real-time transit stops, routes, arrivals, vehicle positions, and schedules via OneBusAway APIs.
16 tools: 16 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads16Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http onebusaway https://onebusaway.caseyjhand.com/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
16 tools
Only reads 16Claude Code: allow
onebusaway_find_routesFind transit routes near a location, optionally filtered by name or number.No findings
Why it is in this group
- The name "onebusaway_find_routes" says "find": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
onebusaway_find_stopsFind bus stops near a location.No findings
Why it is in this group
- The name "onebusaway_find_stops" says "find": a word for reading.
Description, as the server wrote it 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").
Annotations the server declares
- readOnlyHint: true
onebusaway_get_alertFetch full detail for a service alert (situation) by ID.No findings
Why it is in this group
- The name "onebusaway_get_alert" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
onebusaway_get_arrivalsReal-time arrivals and departures at a stop.No findings
Why it is in this group
- The name "onebusaway_get_arrivals" says "get": a word for reading.
Description, as the server wrote it 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").
Annotations the server declares
- readOnlyHint: true
onebusaway_get_blockFetch the full-day block schedule for a vehicle by block ID.No findings
Why it is in this group
- The name "onebusaway_get_block" says "get": a word for reading.
Description, as the server wrote it 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 as blockId in onebusaway_get_trip responses; obtain a tripId from onebusaway_get_arrivals first.
Annotations the server declares
- readOnlyHint: true
onebusaway_get_routeFetch details for a specific route by ID.No findings
Why it is in this group
- The name "onebusaway_get_route" says "get": a word for reading.
Description, as the server wrote it 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").
Annotations the server declares
- readOnlyHint: true
onebusaway_get_schedule_for_routeFull-day schedule for a route — all trips, stop sequences, and departure times for the specified date (defaults to today).No findings
Why it is in this group
- The name "onebusaway_get_schedule_for_route" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
onebusaway_get_schedule_for_stopFull-day departure schedule for a stop.No findings
Why it is in this group
- The name "onebusaway_get_schedule_for_stop" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
onebusaway_get_stopFetch details for a specific stop by ID.No findings
Why it is in this group
- The name "onebusaway_get_stop" says "get": a word for reading.
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: true
onebusaway_get_stop_contextEverything happening at a stop in one call: the stop's details, its real-time arrivals, and full detail for every service alert on the stop or on any arrival in the window.No findings
Why it is in this group
- The name "onebusaway_get_stop_context" says "get": a word for reading.
Description, as the server wrote it Everything happening at a stop in one call: the stop's details, its real-time arrivals, and full detail for every service alert on the stop or on any arrival in the window. Returns what onebusaway_get_stop, onebusaway_get_arrivals, and one onebusaway_get_alert call per alert would, from a single upstream request — arrivals in the onebusaway_get_arrivals shape, alerts in the onebusaway_get_alert shape. The stop omits its served-route list; use onebusaway_get_stop for routeIds. Stop IDs use agency-prefixed format: {agencyId}_{localId} (e.g. "1_75403").
Annotations the server declares
- readOnlyHint: true
onebusaway_get_tripReal-time status and stop sequence for a trip.No findings
Why it is in this group
- The name "onebusaway_get_trip" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
onebusaway_get_vehiclesReal-time positions of all active vehicles for an agency.No findings
Why it is in this group
- The name "onebusaway_get_vehicles" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
onebusaway_list_agenciesList all transit agencies served by this OneBusAway instance.No findings
Why it is in this group
- The name "onebusaway_list_agencies" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
onebusaway_list_routes_for_agencyList all routes operated by an agency.No findings
Why it is in this group
- The name "onebusaway_list_routes_for_agency" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: false
onebusaway_search_routesSearch for routes by name or number.No findings
Why it is in this group
- The name "onebusaway_search_routes" says "search": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
onebusaway_search_stopsSearch for stops by name or code.No findings
Why it is in this group
- The name "onebusaway_search_stops" says "search": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.2.1. Values in angle brackets are yours to fill in.
claude mcp add --transport http onebusaway https://onebusaway.caseyjhand.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__onebusaway__onebusaway_list_agencies",
"mcp__onebusaway__onebusaway_find_stops",
"mcp__onebusaway__onebusaway_find_routes",
"mcp__onebusaway__onebusaway_search_stops",
"mcp__onebusaway__onebusaway_search_routes",
"mcp__onebusaway__onebusaway_get_stop",
"mcp__onebusaway__onebusaway_get_route",
"mcp__onebusaway__onebusaway_list_routes_for_agency",
"mcp__onebusaway__onebusaway_get_arrivals",
"mcp__onebusaway__onebusaway_get_stop_context",
"mcp__onebusaway__onebusaway_get_alert",
"mcp__onebusaway__onebusaway_get_trip",
"mcp__onebusaway__onebusaway_get_block",
"mcp__onebusaway__onebusaway_get_vehicles",
"mcp__onebusaway__onebusaway_get_schedule_for_stop",
"mcp__onebusaway__onebusaway_get_schedule_for_route"
],
"ask": [],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as onebusaway. Review it before you use it.
