prt-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@prt-mcpwhen is the next bus at stop 20001?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
prt-mcp
MCP server exposing Pittsburgh Regional Transit (PRT) TrueTime operations as typed tools for agent clients.
What this implements
MCP
toolsfor core TrueTime queries:prt_get_routesprt_get_directionsprt_get_stopsprt_get_vehiclesprt_get_predictionsprt_get_patternsprt_get_service_bulletins
MCP
resources:prt://capabilities(discoverability for clients)
MCP
prompts:transit-arrival-workflow
Related MCP server: gtfs-pro-mcp
Source references used for design
MCP protocol/spec and server guidance:
modelcontextprotocol.io docs + specification (JSON-RPC, capabilities, safety)
MCP reference implementations:
modelcontextprotocol/servers(everything,fetch,filesystem)
MCP SDK patterns:
modelcontextprotocol/typescript-sdk
PRT data/API entry points:
PRT Developer Resources
TrueTime account/API key workflow
TrueTime v3 endpoint behavior from public community codebases:
juctaposed/bustimePGHaidan2312/prt-api
Prerequisites
Node 20+ (Node 22 recommended)
A PRT TrueTime API key
Configuration
Copy env template:
cp .env.example .envSet:
PRT_TRUETIME_API_KEY(required)Optional tuning:
PRT_TRUETIME_BASE_URLPRT_REQUEST_TIMEOUT_MSPRT_MAX_RETRIESPRT_USER_AGENT
Optional HTTP mode security:
HOST(default:127.0.0.1)PORT(default:3000)MCP_ALLOWED_HOSTS(comma-separatedHostallowlist)MCP_ALLOWED_ORIGINS(comma-separated browserOriginallowlist)MCP_AUTH_TOKEN(Bearer token expected on/mcp)MCP_RATE_LIMIT_WINDOW_MSMCP_RATE_LIMIT_MAX
Run
npm install
npm run build
npm startFor local development:
npm run devFor hosted HTTP mode (remote MCP endpoint):
npm run build
PORT=3000 HOST=0.0.0.0 MCP_AUTH_TOKEN=change-me npm run start:httpHealth check:
curl http://localhost:3000/healthzMCP endpoint:
POST /mcpGET /mcp(SSE stream)DELETE /mcp(close session if stateful)Include
Authorization: Bearer <MCP_AUTH_TOKEN>if auth is enabled.
Alternate SSE endpoint for clients that expect /sse:
POST /sseGET /sse(SSE stream)DELETE /sse(close session if stateful)
Example MCP client config (stdio)
{
"mcpServers": {
"prt": {
"command": "node",
"args": ["/ABSOLUTE/PATH/prt-mcp/dist/index.js"],
"env": {
"PRT_TRUETIME_API_KEY": "YOUR_KEY"
}
}
}
}Hosting options
You now have two transport modes:
Local stdio (
npm start)
Best for Claude Desktop / local agent tools.Remote Streamable HTTP (
npm run start:http)
Best for hosting on Render/Railway/Fly.io/a VM.
Minimal production checklist:
Set
PRT_TRUETIME_API_KEYin host environment variables.Use Node 20+ runtime.
Expose the
PORTyour host provides.Keep at least one health check path (
/healthz).Set
MCP_AUTH_TOKEN.Set
MCP_ALLOWED_HOSTSandMCP_ALLOWED_ORIGINSfor your deployment.Restrict inbound access (IP allowlist, auth gateway, or private network).
Example Render/Railway start command:
npm run build && npm run start:httpDocker
Build image:
docker build -t prt-mcp:latest .Run container:
docker run --rm -p 3000:3000 -e PRT_TRUETIME_API_KEY=YOUR_KEY prt-mcp:latestImplementation best practices applied
Input validation with
zodon every tool schemaFail-fast config checks (missing key)
Retry + timeout behavior to handle unstable upstream API responses
Uniform structured + text output for deterministic agent parsing
Tool execution failures returned as MCP
isErrorresultsTool annotations (
readOnlyHint,idempotentHint,openWorldHint) for client safety hintsHTTP hardening: auth token, origin checks, host allowlist support, and rate limiting
Strict TypeScript + minimal surface area
No secrets in source; env-only configuration
Notes
TrueTime key acquisition is account-gated by PRT.
API responses can differ by data feed (
Port Authority Bus,Light Rail).Some endpoints require additional filters (
rt,stpid,pid).
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/aaronbiscotti/prt-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server