Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

Charlotte Area Transit (CATS)

by ajwannversion 2.1.1i★ –iComputer or cloud
Registry nameio.github.ajwann/queenscoach

Install

Overview

Description from the maker (original English)

CATS bus and light rail trip planning, live arrivals, timetables, routes, and service alerts

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on the maker’s server: what you ask it goes through their server.
  • The registry lists no key to fill in.

You need

  • Runs in the cloudNothing to install; it connects over the internet
  • PyPIPython’s uv installed (for the uvx command)

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Works in Claude on the web, desktop and mobile:

  1. Open Settings → Connectors
  2. Press Add custom connector
  3. Paste the address below and press Add
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Add2https://…3
https://queenscoach.adamwanninger.com/mcp

Or run it on your computer

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "queenscoach": {
      "command": "uvx",
      "args": [
        "queenscoach"
      ]
    }
  }
}

Run this in your terminal

claude mcp add --transport http queenscoach https://queenscoach.adamwanninger.com/mcp

Or run it on your computer

claude mcp add queenscoach -- uvx queenscoach

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "queenscoach": {
      "url": "https://queenscoach.adamwanninger.com/mcp"
    }
  }
}

Or run it on your computer

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "queenscoach": {
      "command": "uvx",
      "args": [
        "queenscoach"
      ]
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "queenscoach": {
      "type": "http",
      "url": "https://queenscoach.adamwanninger.com/mcp"
    }
  }
}

Or run it on your computer

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "queenscoach": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "queenscoach"
      ]
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

ChatGPT connects only to servers on the internet:

  1. Open ChatGPT on the web → Settings → Connectors (Apps)
  2. Press Create or Add (some plans need Developer mode under Advanced first)
  3. Paste the address below, give it a name and save
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Create2https://…3
https://queenscoach.adamwanninger.com/mcp

Menu names can differ slightly by plan and over time.

Your choice stays on this device in a cookie; no account needed.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

We have not read this server’s tool list yet; we check endpoints in rotation.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account ajwann, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • … Not checked yet

    Endpoint responds

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    Sign-in with OAuth

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    No hidden instructions in tool descriptions

    Not checked yet; we read the tool list when we check the endpoint

Compared with others in Travel, maps & weatheri

  • More stars than 0% of the other 1718 servers in this category
  • Published to the registry more recently than 38% of the other 1718 servers in this category
  • Basic checks equal to or better than 100% of the other 1718 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Charlotte Area Transit (CATS) safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

Either way works: install it on your computer or connect to the cloud version.

Is it still maintained?

The GitHub repo last changed –, and the latest version (2.1.1) reached the registry 2 months ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.

What can I use instead?

In the same category: Zovo Tip Pool Calculator, Zovo Mind Map, Acosta Curated Travel

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Zovo Tip Pool Calculator

A tip pool calculator and tip out calculator for restaurant, bar, cafe and salon staff.

by theluckystrikeEarlyUpdated today

Runs in the cloud

Zovo Mind Map

Turns an outline or a plan into a clean mind map you can print or download.

by theluckystrikeEarlyUpdated today

Runs in the cloud

Acosta Curated Travel

Search Acosta Curated Travel articles, browse upcoming group trips, and reach Ivone Acosta.

by travelacosta.comEarlyUpdated today

Runs in the cloud✓ travelacosta.com

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

QueensCoach ♔♘

QueensCoach is an MCP server for Charlotte Area Transit System (CATS) buses and light rail, built on the agency's public GTFS schedule and GTFS-Realtime feeds. It plans trips, predicts arrivals, reads the timetable, describes routes, and reports service alerts. It runs over stdio, launched by the MCP client that uses it, or over HTTP with Google OAuth in front of it, for a hosted server. Both transports serve the same tools and resources.

Hosted server

A public instance runs on Google Cloud Run. Sign in with any Google account:

https://queenscoach.adamwanninger.com/mcp

There is zero guarantee of uptime. The hosted server is provided as-is. It may be slow, down, switched off by its spending cap, or retired without notice. For anything you rely on, run your own: over stdio, or on your own Google Cloud project with deploy/GCP.md.

Signing in tells the server your Google account's email address, which is used only to decide whether to admit you, and is never stored. The tokens it issues record your account's opaque Google ID and nothing else about you. A location you share with a tool arrives as an argument to that call, is used to answer it, and is not stored. The privacy policy and terms of service cover the hosted server.

Adding it to Claude

Claude calls a remote MCP server a connector. Custom connectors are available on Claude's paid plans.

  1. Open Settings → Connectors. On the web that's claude.ai/settings/connectors; in the desktop app, Settings then Connectors.
  2. Click Add custom connector at the bottom of the list.
  3. Give it a name, QueensCoach, and paste the URL above as the remote MCP server URL. Leave the advanced OAuth fields empty: this server registers your client automatically.
  4. Click Add, then Connect on the connector that appears. A browser window opens for the Google sign-in; approve it and it closes itself.
  5. In a chat, open the tools menu and check that QueensCoach is enabled. Its seven tools then appear.

The connector belongs to your Claude account, so it follows you across web, desktop, and mobile. To disconnect, remove it from that same Connectors page; that revokes the tokens this server issued.

Adding it to Claude Code
claude mcp add --transport http queenscoach https://queenscoach.adamwanninger.com/mcp

Then run /mcp, pick queenscoach, and choose Authenticate, which opens the same Google sign-in. /mcp shows the connection's state afterwards. A server added this way loads when Claude Code next starts.

Any other client

Any MCP client that supports remote servers over streamable HTTP with OAuth works: give it the same URL and it discovers the rest.

Tools

ToolPurpose
plan_tripTrips between two places by bus and train, with walking and transfers, adjusted by live delays.
get_arrivalsLive predicted arrivals at a named stop, or at the station nearest a location.
get_scheduleThe published timetable at a stop for any date: departures, first and last trips.
get_routeOne route on a date: destinations, stops in order, hours, and how often it runs.
get_service_alertsCurrent and upcoming detours and disruptions, system-wide or for a route, stop, or place.
list_stopsStops and stations with the routes serving each, nearest first from a location.
list_vehiclesGPS positions of buses and trains in service: one by number, a route's, or all of them.

Ask Claude "what's the closest train station to me?", "when's the next train at my stop?", or "how do I get to the airport from here?" and it passes your device's location to the tools. The server never sees a location it isn't handed, so this needs a client that shares the device's location with the model.

plan_trip
ArgumentTypeNotes
origin_stopstringWhere to start: a stop id, code, or name.
origin_latitude, origin_longitudenumberOr start from a location, walking to nearby stops.
destination_stopstringWhere to go: a stop id, code, or name.
destination_latitude, destination_longitudenumberOr finish at a location.
dateYYYY-MM-DDService date in Charlotte (default today).
depart_atHH:MMLeave no earlier than this. Default: now.
arrive_byHH:MMOr arrive no later than this.
max_transfersinteger0 to 3 (default 2).
max_walk_metersintegerLongest walk to the first stop or from the last, 100 to 2000 (default 800).

Returns up to three itineraries, each with walking and riding legs: the route, the vehicle's real destination, where to board and get off, times, the wait at each transfer, and stops travelled. Journeys with more transfers are offered only when they arrive sooner (or, for arrive_by, leave later). For trips starting within three hours of now, rides carry live delays and are marked live. walkingIsAnOption appears when the two places are within the walking limit of each other.

Walking is an estimate: the straight-line distance stretched by 30%, at 4.5 km/h. The feed has no street map, so real walks can be longer. Transfers allow up to 400 m on foot and two minutes of slack.

get_arrivals
ArgumentTypeNotes
stopstringStop id (02400), stop code, or part of a stop name (CTC Station).
latitude, longitudenumberInstead of stop: use the nearest station to this location.
routestringOptional route filter.
modebus \trainOptional filter.
limitintegerMax arrivals (default 10, cap 50).

Give either stop or a location. With a location, the filters choose the station too: mode: train finds the nearest stop a train calls at, not a closer bus stop, and the response carries its metersAway.

Returns minutes away, predicted and scheduled times, schedule deviation, the vehicle number, the platform (stopId), and that vehicle's live position. When a name query is ambiguous, the best match is used and the runners-up are listed under otherStopsMatchingQuery. Current service alerts affecting the stop or its routes are attached as serviceAlerts, in the same shape get_service_alerts returns. For times beyond the next hour or so, use get_schedule.

get_schedule
ArgumentTypeNotes
stopstringStop id, code, or name.
latitude, longitudenumberOr the nearest stop serving the route or mode.
routestringOptional route filter.
modebus \trainOptional filter.
dateYYYY-MM-DDService date (default today).
after, beforeHH:MMTime window. after defaults to now today, or the start of service.
limitintegerMax departures (default 20, cap 100).

Scheduled departures with each trip's route and destination, plus firstDeparture and lastDeparture for the day. A service day runs past midnight, as GTFS does: the last trains of Tuesday leave at 1:31 am on Wednesday, and 25:30 in after or before means 1:30 am that night. Use get_arrivals for live predictions.

get_route
ArgumentTypeNotes
routestringRequired. 9, 501, Blue Line, Airport.
dateYYYY-MM-DDService date (default today).

For each direction: the destination, the stops in order (following the pattern most trips use, with any others summarized), first and last departure, and the typical minutes between trips in the early morning, morning rush, midday, afternoon rush, evening, and late night. Also trips on each of the next seven days and the number of active alerts. A query matching several routes lists them instead.

get_service_alerts
ArgumentTypeNotes
routestringAlerts naming the route or any stop it serves.
stopstringAlerts naming the station or any route serving it.
latitude, longitudenumberAlerts affecting stops within 800 m.

Give at most one; with none, every alert. Ended alerts are left out. Each alert has its headline, description, effect and cause with CATS's detail text, whether it is active or upcoming, its periods (untilFurtherNotice for open-ended ones), and the routes and stops it names.

list_stops
ArgumentTypeNotes
latitude, longitudenumberA location; results are then nearest first, with metersAway.
querystringStop id, stop code, or part of a stop name.
routestringOnly stops this route serves.
modebus \trainOnly stops with that service, e.g. train for the nearest rail station.
limitintegerMax stations (default 10 with a location, 250 without; cap 250).

Each station lists its stopIds, coordinates, modes, and routes (id, number, long name, mode): for example 501 · Light Rail - Lynx Blue Line, 510 · CityLYNX Gold Line, or bus routes like 29. Stops no scheduled trip calls at are left out, and nothing farther than 50 km from the location is returned.

list_vehicles
ArgumentTypeNotes
vehiclestringVehicle number as shown on the bus/train, e.g. 2301, LRV307.
routestringRoute: 9, 501, Blue Line, Mt. Holly Road.
modebus \trainOptional filter.
limitintegerMax vehicles to return (default and cap: 250).

All arguments are optional; with none, every vehicle in service is returned. Each vehicle has position, heading, speed, occupancy (CATS currently reports none), headsign, and the next scheduled stop. matches and countsByMode report the total even when the list is truncated.

Resources

The feeds behind the tools, for clients and models that want the data itself.

URITypeContents
gtfs://staticJSONThe files in the static GTFS archive, their sizes and URIs, and when it was fetched.
gtfs://static/{file}CSVAny table in the archive as CATS publishes it. routes.txt, stops.txt, trips.txt, and stop_times.txt are also listed individually.
gtfs://realtime/vehicle-positionsJSONThe decoded VehiclePositions feed.
gtfs://realtime/trip-updatesJSONThe decoded TripUpdates feed.
gtfs://realtime/alertsJSONThe decoded Alerts feed.

Static tables come from the same cached download the tools use. Realtime resources are the decoded feed entities with their GTFS-Realtime field names, raw ids, and Unix timestamps, without the schedule joins the tools add. Each resource's fetchedAt is Eastern time, like the tools. stop_times.txt is large (about 12 MB in the live feed).

Install

Requires Python 3.11+.

pip install queenscoach

Or run it without installing anything, which is how most MCP clients launch it:

uvx queenscoach

From a clone instead, to hack on it or to run the HTTP transport from source:

python3 -m venv .venv

.venv/bin/pip install . # '.[gcp]' adds the Firestore token store

Transports

Pick one with --transport or QUEENSCOACH_TRANSPORT; the default is stdio.

queenscoach                                  # stdio (default)

queenscoach --transport http --port 8000 # streamable HTTP + Google OAuth

stdio

For a server the client launches itself. No authentication: the client already owns the process.

Register it with Claude Code:

claude mcp add queenscoach -- uvx queenscoach

Or in an

Only the beginning is shown; read the rest in the repo

Ask PopNx