protogrid

Search / io.github.cyanheads/onebusaway-mcp-server

onebusaway-mcp-server

R0· no sign-in

Real-time transit stops, routes, arrivals, vehicle positions, and schedules via OneBusAway APIs.

v0.2.1 · active · repository · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality84good
Trust94of 100
Uptime, 30 days100%
Latency p50196 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "onebusaway-mcp-server": {
      "type": "http",
      "url": "https://onebusaway.caseyjhand.com/mcp"
    }
  }
}
claude mcp add --transport http onebusaway-mcp-server https://onebusaway.caseyjhand.com/mcp
[mcp_servers.onebusaway-mcp-server]
url = "https://onebusaway.caseyjhand.com/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "onebusaway-mcp-server": {
      "type": "remote",
      "url": "https://onebusaway.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "onebusaway-mcp-server": {
      "type": "http",
      "url": "https://onebusaway.caseyjhand.com/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=onebusaway-mcp-server&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vb25lYnVzYXdheS5jYXNleWpoYW5kLmNvbS9tY3AifQ%3D%3D"
}
{
  "servers": {
    "onebusaway-mcp-server": {
      "type": "http",
      "url": "https://onebusaway.caseyjhand.com/mcp"
    }
  }
}
{
  "mcpServers": {
    "onebusaway-mcp-server": {
      "httpUrl": "https://onebusaway.caseyjhand.com/mcp"
    }
  }
}
extensions:
  "onebusaway-mcp-server":
    enabled: true
    name: "onebusaway-mcp-server"
    type: streamable_http
    uri: "https://onebusaway.caseyjhand.com/mcp"
    timeout: 300

Quality 84 / 100good

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene86 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations16 of 16 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: onebusaway_list_agencies (destructiveHint, idempotentHint); onebusaway_find_routes (destructiveHint, idempotentHint, openWorldHint); onebusaway_search_stops (destructiveHint, idempotentHint, openWorldHint); …
  • pass
    tools.token_costabout 3,530 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability75 · weight 15
  • warn
    stability.changes6 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15

16 tools, about 3,530 tokens to load them all · tool set 4da6f2f9b313 · tools last changed 2026-09-25 · checked 2026-10-20 13:49 UTC

Tool changes

  • onebusaway_get_schedule_for_routechangedinput schema
  • onebusaway_get_schedule_for_stopchangedinput schema
  • onebusaway_get_blockchangeddescription
    before

    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.

    after · 92% of words in common

    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.

  • onebusaway_get_tripchangedinput schema
  • onebusaway_get_stop_contextadded

    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").

  • onebusaway_get_arrivalschangedinput schema, output schema

Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 94 / 100

provenance80
liveness100
freshness100
hygiene100

+repository +namespace-matches-repo +reachable +uptime-100% +updated-11d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Dependencies

@cyanheads/[email protected] npmthis version is not known to the dependency resolver

@cyanheads/[email protected] npmthis version is not known to the dependency resolver

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://onebusaway.caseyjhand.com/mcp streamable-httpnoneyes100%196 ms2026-07-282026-10-20
packageregistryversionruntimesecrets
@cyanheads/onebusaway-mcp-servernpm0.2.1npx
@cyanheads/onebusaway-mcp-servernpm0.2.1npx

Tools (16)

onebusaway_find_routesread-onlyFind 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.
onebusaway_find_stopsread-onlyFind 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").
onebusaway_get_alertread-onlyFetch 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.
onebusaway_get_arrivalsread-onlyReal-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").
onebusaway_get_blockread-onlyFetch 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.
onebusaway_get_routeread-onlyFetch 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").
onebusaway_get_schedule_for_routeread-onlyFull-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.
onebusaway_get_schedule_for_stopread-onlyFull-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.
onebusaway_get_stopread-onlyFetch 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).
onebusaway_get_stop_contextread-onlyEverything 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").
onebusaway_get_tripread-onlyReal-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.
onebusaway_get_vehiclesread-onlyReal-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.
onebusaway_list_agenciesread-onlyList 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.
onebusaway_list_routes_for_agencyread-onlyList 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.
onebusaway_search_routesread-onlySearch 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.
onebusaway_search_stopsread-onlySearch 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.

Schemas: list_tools.

Similar MCP servers

More from io.github.cyanheads

And 140 more from this publisher.

Official server.json
{
  "name": "io.github.cyanheads/onebusaway-mcp-server",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://onebusaway.caseyjhand.com/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.2.1",
  "packages": [
    {
      "version": "0.2.1",
      "transport": {
        "type": "stdio"
      },
      "identifier": "@cyanheads/onebusaway-mcp-server",
      "runtimeHint": "npx",
      "registryType": "npm",
      "registryBaseUrl": "https://registry.npmjs.org",
      "environmentVariables": [
        {
          "name": "ONEBUSAWAY_API_KEY",
          "format": "string",
          "default": "TEST",
          "description": "OneBusAway API key. TEST works on the Puget Sound instance for development."
        },
        {
          "name": "ONEBUSAWAY_BASE_URL",
          "format": "string",
          "default": "https://api.pugetsound.onebusaway.org",
          "description": "Base URL for the OneBusAway instance. Defaults to Puget Sound."
        },
        {
          "name": "ONEBUSAWAY_RATE_LIMIT_REQUESTS",
          "format": "string",
          "default": "20",
          "description": "Upstream requests the pacer allows per window."
        },
        {
          "name": "ONEBUSAWAY_RATE_LIMIT_WINDOW_MS",
          "format": "string",
          "default": "60000",
          "description": "Width of the pacer's sliding rate window, in milliseconds."
        },
        {
          "name": "ONEBUSAWAY_RATE_LIMIT_MAX_WAIT_MS",
          "format": "string",
          "default": "45000",
          "description": "Longest a call may wait in the pacer queue, in milliseconds. Keep it under the SDK client's 60 s request timeout."
        },
        {
          "name": "MCP_LOG_LEVEL",
          "format": "string",
          "default": "info",
          "description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warning')."
        }
      ]
    },
    {
      "version": "0.2.1",
      "transport": {
        "url": "http://localhost:3010/mcp",
        "type": "streamable-http"
      },
      "identifier": "@cyanheads/onebusaway-mcp-server",
      "runtimeHint": "npx",
      "registryType": "npm",
      "registryBaseUrl": "https://registry.npmjs.org",
      "environmentVariables": [
        {
          "name": "MCP_TRANSPORT_TYPE",
          "value": "http",
          "format": "string",
          "description": "Selects the HTTP transport."
        },
        {
          "name": "ONEBUSAWAY_API_KEY",
          "format": "string",
          "default": "TEST",
          "description": "OneBusAway API key. TEST works on the Puget Sound instance for development."
        },
        {
          "name": "ONEBUSAWAY_BASE_URL",
          "format": "string",
          "default": "https://api.pugetsound.onebusaway.org",
          "description": "Base URL for the OneBusAway instance. Defaults to Puget Sound."
        },
        {
          "name": "ONEBUSAWAY_RATE_LIMIT_REQUESTS",
          "format": "string",
          "default": "20",
          "description": "Upstream requests the pacer allows per window."
        },
        {
          "name": "ONEBUSAWAY_RATE_LIMIT_WINDOW_MS",
          "format": "string",
          "default": "60000",
          "description": "Width of the pacer's sliding rate window, in milliseconds."
        },
        {
          "name": "ONEBUSAWAY_RATE_LIMIT_MAX_WAIT_MS",
          "format": "string",
          "default": "45000",
          "description": "Longest a call may wait in the pacer queue, in milliseconds. Keep it under the SDK client's 60 s request timeout."
        },
        {
          "name": "MCP_HTTP_HOST",
          "format": "string",
          "default": "127.0.0.1",
          "description": "The hostname for the HTTP server."
        },
        {
          "name": "MCP_HTTP_PORT",
          "format": "string",
          "default": "3010",
          "description": "The port to run the HTTP server on."
        },
        {
          "name": "MCP_HTTP_ENDPOINT_PATH",
          "format": "string",
          "default": "/mcp",
          "description": "The endpoint path for the MCP server."
        },
        {
          "name": "MCP_AUTH_MODE",
          "format": "string",
          "default": "none",
          "description": "Authentication mode to use: 'none', 'jwt', or 'oauth'."
        },
        {
          "name": "MCP_LOG_LEVEL",
          "format": "string",
          "default": "info",
          "description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warning')."
        }
      ]
    }
  ],
  "repository": {
    "url": "https://github.com/cyanheads/onebusaway-mcp-server",
    "source": "github"
  },
  "description": "Real-time transit stops, routes, arrivals, vehicle positions, and schedules via OneBusAway APIs."
}