Metro MCP
🚇 Metro MCP
Servidor del Protocolo de Contexto de Modelo para sistemas de tránsito de EE. UU. (Metro de DC y Metro de Nueva York)
Un servidor unificado remoto del Protocolo de Contexto de Modelo (MCP) que admite múltiples sistemas de tránsito de EE. UU. Actualmente admite el Metro de Washington DC (WMATA) y el Metro de Nueva York (MTA). Diseñado para una integración perfecta con clientes compatibles con MCP como Claude Desktop, Cursor, Codex y cualquier cliente que admita servidores MCP HTTP Streamable.
Enlaces rápidos: Inicio rápido • Lo que puedes hacer • Transit Board • Despliegue • Integración con clientes MCP
Lo que puedes hacer
Haz preguntas en lenguaje natural sobre el Metro de DC o el Metro de Nueva York en Claude Desktop o en cualquier cliente compatible con MCP:
🚆 Información de tránsito en tiempo real
Washington DC:
"¿Cuándo es el próximo tren de la Línea Roja en Dupont Circle?"
"¿Qué rutas de autobús están disponibles?"
"Encuentra paradas de autobús cerca de Dupont Circle"
"¿Dónde están todos los autobuses 30N ahora mismo?"
"¿Cuándo es el próximo autobús en la parada 1001195?"
"Muéstrame todos los trenes que están circulando actualmente en el sistema Metro"
"¿Hay retrasos en la Línea Azul ahora mismo?"
"¿Están funcionando todos los ascensores en Union Station?"
Nueva York:
"¿Cuándo es el próximo tren 1 en Times Square?"
"¿Hay retrasos en la línea A/C?"
"¿Qué trenes llegan a Grand Central?"
"¿Qué es el tren A y a dónde va?"
"¿A qué estaciones cercanas puedo caminar desde Times Square?"
"¿Cuánto tiempo se tarda en caminar entre los andenes de Times Square?"
🗺️ Información de estaciones y navegación
Washington DC:
"¿Dónde está la estación Smithsonian del Metro?"
"Muéstrame todas las estaciones de la Línea Verde"
Nueva York:
"¿Dónde está la estación Union Square?"
"Muéstrame las 496 estaciones del Metro de Nueva York"
"¿Qué estaciones conectan con Times Square?"
"Explica la diferencia entre trenes expresos y locales"
♿ Accesibilidad
Washington DC (interrupciones de ascensores):
"¿Hay alguna interrupción de ascensores entre aquí y el Aeropuerto Nacional?"
"¿Qué estaciones del Metro de DC tienen ascensores funcionando ahora mismo?"
🔔 Monitoreo de servicio
Ambas ciudades:
"¿Hay retrasos de tránsito ahora mismo en Nueva York?"
"¿Está funcionando normalmente la Línea Naranja del Metro de DC?"
"Compara la calidad del servicio entre el Metro de DC y el Metro de Nueva York"
📊 Información del sistema
Washington DC:
Lista completa de todas las estaciones del Metro con coordenadas
Información sobre las seis líneas del Metro (Roja, Azul, Naranja, Plateada, Verde, Amarilla)
Nueva York:
Cobertura completa: Las 496 estaciones del Metro de Nueva York con coordenadas
Información de transbordos: Tiempos de caminata entre estaciones conectadas (87 estaciones con transbordos)
Descripciones de rutas: Patrones de servicio detallados para las 29 rutas (expreso vs. local, horarios de operación)
Claridad de andenes: Explica los andenes direccionales (por ejemplo, "127N" = dirección norte en Times Square)
Related MCP server: marta-mcp
Inicio rápido
Usar el servidor público
La forma más rápida de empezar es usar la instancia alojada:
Abre tu cliente MCP
Añade esta URL:
https://metro-mcp.anuragd.me/mcpHaz clic en "Conectar" y autoriza mediante GitHub
Empieza a hacer preguntas sobre el Metro de DC o el Metro de Nueva York
Desplegar el tuyo propio
¿Quieres ejecutar tu propia instancia? Consulta la sección Despliegue a continuación.
Despliegue
Requisitos previos
Clave de API de WMATA (obligatoria)
Cuenta de Cloudflare (el plan gratuito funciona)
Bun para la gestión de paquetes
Node.js para Wrangler y el pool de pruebas de Workerd Vitest; Bun sigue siendo el único gestor de paquetes y propietario del archivo de bloqueo
Aplicación OAuth de GitHub (para autenticación)
Configuración del entorno
Instala exactamente lo que registra bun.lock:
bun install --frozen-lockfilePara el desarrollo local, crea una aplicación OAuth de GitHub dedicada cuyo callback sea exactamente http://localhost:8787/callback. Luego copia la plantilla canónica .dev.vars.example, reemplaza cada marcador replace-with-... y arranca Wrangler:
cp .dev.vars.example .dev.vars
bun run devMantén juntos el origen http://localhost:8787 de la plantilla, las listas de permitidos de host/origen localhost, el callback y los valores ENVIRONMENT=development. En el modo local predeterminado de Wrangler, el enlace OAUTH_KV configurado usa almacenamiento local no productivo bajo .wrangler; no lee ni escribe el espacio de nombres de producción o vista previa desplegado. No añadas --remote para el desarrollo local normal.
Crea un espacio de nombres de Proveedor OAuth para cada entorno desplegado y coloca su ID en el enlace OAUTH_KV correspondiente:
bunx wrangler kv namespace create OAUTH_KV
bunx wrangler kv namespace create OAUTH_KV_previewLa producción y la vista previa también deben usar aplicaciones OAuth de GitHub distintas. Configura cada callback como ${MCP_PUBLIC_ORIGIN}/callback; nunca reutilices la aplicación de producción o el OAuth KV para la vista previa. Cada entorno establece:
MCP_PUBLIC_ORIGIN,MCP_ALLOWED_HOSTNAMESyMCP_ALLOWED_ORIGIN_HOSTNAMESOAUTH_REDIRECT_URIy elGITHUB_CLIENT_IDpúblico de GitHub del entornoENVIRONMENT(production,previewodevelopment)OAUTH_KV, apuntando al espacio de nombres dedicado del entorno
Establece los secretos de producción de forma interactiva. MCP_REQUEST_STATE_KEY es una clave estable específica del entorno de 32 bytes o más, utilizada solo para el estado MRTR firmado. JWT_SECRET permanece temporalmente para el puente heredado de audiencia /mcp.
bunx wrangler secret put MCP_REQUEST_STATE_KEY
bunx wrangler secret put GITHUB_CLIENT_SECRET
bunx wrangler secret put WMATA_API_KEY
bunx wrangler secret put JWT_SECRETEstablece los mismos cuatro nombres de secretos de forma independiente para la vista previa; los entornos Wrangler con nombre no heredan los secretos de producción:
bunx wrangler secret put MCP_REQUEST_STATE_KEY --env preview
bunx wrangler secret put GITHUB_CLIENT_SECRET --env preview
bunx wrangler secret put WMATA_API_KEY --env preview
bunx wrangler secret put JWT_SECRET --env previewWrangler debe incluir tanto nodejs_compat como global_fetch_strictly_public. Valida ambas formas antes de cualquier despliegue aprobado:
bunx wrangler deploy --dry-run --outdir /tmp/metro-mcp-production
bunx wrangler deploy --dry-run --env preview --outdir /tmp/metro-mcp-previewIntegración con clientes MCP
Claude
Usa el endpoint canónico HTTP Streamable en Claude Code:
claude mcp add --transport http metro-mcp https://metro-mcp.anuragd.me/mcpLuego abre /mcp, selecciona metro-mcp y completa el inicio de sesión y el consentimiento de GitHub. Los usuarios de Claude.ai/Desktop pueden añadir la misma URL como conector personalizado remoto donde su plan y la política del espacio de trabajo lo permitan.
Codex
codex mcp add metro-mcp --url https://metro-mcp.anuragd.me/mcp
codex mcp login metro-mcp --scopes transit:readEl mcp-config.json incluido muestra la configuración genérica equivalente de HTTP remoto. Los tokens de acceso y actualización permanecen en el almacén de credenciales del cliente; no los pegues en la configuración del proyecto.
Compatibilidad de transporte
Las solicitudes MCP
2026-07-28no tienen estado y no requiereninitialize.Las herramientas, recursos y avisos ordinarios siguen disponibles para clientes MCP 2025 sin estado.
POST /sseyOPTIONS /sseson alias de URL reescritos a/mcpcanónico antes de la autorización.El HTTP+SSE heredado se elimina.
GETyDELETEen/sseo/mcp, las URL de mensajes de sesión y/sse/devuelven405.La audiencia y el descubrimiento de OAuth siempre usan
https://metro-mcp.anuragd.me/mcp;/ssenunca es un recurso OAuth.
Endpoints OAuth
El Proveedor OAuth de Workers implementa OAuth 2.1 con PKCE:
Descubrimiento:
/.well-known/oauth-authorization-serverRegistro: CIMD primero, con
/registercomo respaldo temporal de Registro Dinámico de ClientesAutorización:
/authorize(integración OAuth de GitHub)Token:
/token(intercambio de código de autorización con verificación PKCE)Callback:
/callback(callback OAuth de GitHub)
Los clientes reciben una pantalla de consentimiento explícita de transit:read. Los permisos están vinculados al recurso canónico /mcp; los tokens de acceso duran como máximo 60 minutos, los tokens de actualización duran como máximo 30 días y rotan al usarse, y los tokens de portador se aceptan solo en el encabezado Authorization. El respaldo de DCR se retira el 2027-06-30.
La versión 5.0 requiere reautorización para tokens sin audiencia, tokens vinculados a /sse y clientes registrados en el antiguo almacén DCR. Los JWT heredados compatibles vinculados a /mcp dejan de funcionar en la fecha anterior entre su caducidad incorporada y 2026-11-30T00:00:00Z.
Ciudades compatibles
El servidor admite actualmente estos sistemas de tránsito:
Ciudad | Sistema | Datos en tiempo real | Alertas de servicio | Estado de ascensores |
Washington DC | WMATA (Metro) | ✅ | ✅ | ✅ |
Nueva York | MTA (Metro) | ✅ | ✅ | ❌ |
Herramientas MCP disponibles
El servidor expone las siguientes herramientas a través del protocolo MCP:
Herramienta | Descripción | Ciudades compatibles |
| Obtén predicciones de llegada de trenes en tiempo real para una estación | DC, NYC |
| Busca estaciones por nombre o código | DC, NYC |
| Obtén todas las estaciones de una línea específica | DC, NYC |
| Consulta las interrupciones y avisos de servicio actuales | DC, NYC |
| Obtén una lista completa de todas las estaciones con coordenadas | DC, NYC |
| Obtén conexiones de transbordo y tiempos de caminata entre estaciones cercanas | Solo NYC |
| Obtén información detallada de la ruta (expreso/local, patrones de servicio, horarios) | Solo NYC |
| Encuentra interrupciones de ascensores y escaleras mecánicas | Solo DC |
| Obtén predicciones de llegada de autobuses en tiempo real (ID de parada de 7 dígitos) | Solo DC |
| Obtén la lista de todas las rutas de autobús disponibles | Solo DC |
| Busca paradas de autobús por ubicación u obtén todas las paradas | Solo DC |
| Obtén las posiciones en vivo de todos los autobuses (opcionalmente filtrar por ruta) | Solo DC |
| Obtén las posiciones en vivo de todos los trenes del sistema | Solo DC |
Total: 13 herramientas MCP (11 principales + 2 nuevas específicas de NYC)
MCP Apps: Transit Board
Las 13 herramientas anteriores hacen referencia a una única MCP App Transit Board autocontenida. Un host compatible con Apps puede representar cada resultado como una vista dedicada de llegadas, servicio, estación/red, ruta o vehículo. Los hosts sin soporte de Apps reciben el mismo texto de respaldo content y el contrato structuredContent; la mejora no añade herramientas ni cambia las llamadas de tránsito.
La aplicación compilada está confirmada en public/apps/transit-board.html. Ese recurso público contiene solo código de aplicación: no incluye ningún resultado de tránsito, identidad, token, secreto o valor de configuración. La vista en sandbox no realiza ninguna solicitud de red directa del navegador, no usa almacenamiento del navegador y no solicita permisos del navegador. La actualización es la única interacción con el servidor y pasa a través del host a la herramienta permitida de origen con sus argumentos originales.
Compila y ejecuta la suite de aceptación local determinista de Apps con:
bun run build:apps
bun run test:appsConsulta docs/mcp-apps-verification.md para conocer el límite exacto del host, las trece asignaciones de vistas, la cobertura de Chromium y la distinción entre la representación de Apps y la aceptación del cliente de respaldo. Para esta versión, Codex valida el descubrimiento de MCP y los resultados de herramientas ordinarias como cliente de respaldo; no se afirma la representación de Apps en línea en Codex.
Detalles técnicos
Protocolo MCP
Versión: MCP
2026-07-28, con compatibilidad estándar sin estado de MCP 2025Transporte: Streamable HTTP sin estado a través de un servidor SDK v2 nuevo para cada solicitud. Se admiten respuestas JSON y SSE con ámbito de solicitud; no se anuncian sesiones de protocolo, reanudabilidad ni push del servidor.
Autenticación: El Proveedor OAuth de Cloudflare Workers gestiona el descubrimiento, la validación CIMD/DCR, PKCE, identificadores de emisor RFC 9207, vinculación de recursos RFC 8707, metadatos de recursos protegidos RFC 9728, rotación de refresco, revocación y almacenamiento de tokens del Proveedor.
Forma de los resultados de las herramientas: Cada herramienta emite
structuredContent(objeto tipado que coincide conoutputSchema) junto con elcontent[0].textheredado (JSON serializado) para compatibilidad hacia atrás.Anotaciones de herramientas: Cada herramienta declara
readOnlyHint,idempotentHint,openWorldHintpara que los clientes puedan mostrar acciones seguras.Capacidades expuestas:
tools— 13 herramientas de consulta de tránsito (DC + NYC)resources— tres plantillas de URItransit://(estaciones, rutas, incidentes)prompts— tres plantillas predefinidas (service-briefing, commute-planner, accessibility-check)Entrada MRTR — los clientes modernos reciben
input_requiredpara estaciones ambiguas; los clientes MCP 2025 reciben guía de reintento determinista con IDs de estación exactosNotificaciones de progreso: se emiten para
get_all_stationscuando el cliente opta por ello medianteparams._meta.progressToken
APIs de tránsito
WMATA (Metro de DC):
El servidor interactúa con las API REST oficiales de WMATA. Visite la documentación para desarrolladores de WMATA para más detalles:
Predicciones de estación: Información de llegada de trenes en tiempo real
Información de estación: Nombres, códigos y ubicaciones de estaciones
Incidentes: Interrupciones de servicio y avisos
Averías de ascensores/escaleras: Información de accesibilidad
MTA (Metro de NYC):
El servidor utiliza feeds GTFS-Realtime de la MTA. Puntos finales de API públicos (sin necesidad de clave API):
Feeds en tiempo real: Formato Protocol Buffers con intervalos de actualización de 30 segundos
8 feeds separados: Cubren todas las líneas de metro (1-7, A/C/E, B/D/F/M, etc.)
Extensiones NYCT: IDs de trenes, asignaciones de vías e información de dirección
Alertas de servicio: Incrustadas en entidades de alerta GTFS-Realtime
Alojamiento
Plataforma: Cloudflare Workers
Activos estáticos:
public/se despliega a través de Cloudflare Workers Static Assets y se vincula comoenv.ASSETS; el Worker sirve primero las rutas de API/OAuth/MCP, luego delega las solicitudes de página de inicio, documentación, imágenes e iconos al enlace de activos.Almacenamiento:
Cloudflare KV
OAUTH_KVespecífico del entorno — concesiones, tokens y registros del Proveedor OAuthSin almacenamiento de sesión de protocolo activo. La exportación antigua
MetroMcpAgenty la migración originalv1permanecen inactivas solo para reversión.
Runtime: Aislamientos V8 con despliegue global en el borde
Estructura del código fuente
El código base está organizado para soporte de tránsito multi-ciudad con una separación clara de responsabilidades:
src/
├── index.ts # Outer route normalization and Provider composition
├── public-handler.ts # /info, OAuth UI, and static assets
├── route-normalizer.ts # Exact /mcp admission and /sse URL alias
├── oauth/ # Provider configuration, GitHub consent, legacy bridge
├── mcp/ # Stateless server factory, tools, resources, and prompts
├── mcp-agent.ts # Inactive 4.x rollback class only
└── transit/ # WMATA and MTA clients with request cancellationDecisiones clave de arquitectura:
Abstracción de tránsito: La interfaz común
TransitAPIClientpermite agregar fácilmente nuevas ciudades (BART, MBTA, etc.)Enrutamiento por ciudad: Un solo servidor maneja todas las ciudades mediante el parámetro
cityen las llamadas a herramientas MCPRespuestas normalizadas: Todos los clientes de tránsito devuelven tipos estandarizados
TransitStation,TransitPredictionyTransitIncidentExtensibilidad: Agregar una nueva ciudad solo requiere implementar la clase cliente abstracta
Verificación y reversión
Ejecute la suite local completa con bun run test. El ejecutor de conformidad autenticado requiere un token de acceso del Proveedor de corta duración obtenido por el operador en el entorno del proceso; nunca almacena el token ni lo coloca en argumentos de comando:
export MCP_CONFORMANCE_TARGET_URL=https://metro-mcp-preview.anuragd.me/mcp
export MCP_CONFORMANCE_ALLOW_REMOTE=1
read -rsp 'Short-lived MCP token: ' MCP_CONFORMANCE_TOKEN && export MCP_CONFORMANCE_TOKEN
./scripts/run-conformance.sh
unset MCP_CONFORMANCE_TOKENConsulte docs/mcp-2026-verification.md para el registro de aceptación del protocolo central y docs/mcp-apps-verification.md para el límite del navegador Transit Board.
La reversión restaura la versión anterior del Worker y sus enlaces anteriores. No elimine el espacio de nombres del Objeto Durable original MetroMcpAgent ni agregue una migración de eliminación durante la ventana de estabilización; el estado de la sesión del protocolo es desechable, pero conservar la clase y la migración original v1 mantiene posible la reversión.
Revertir Transit Board elimina los metadatos/recursos de Apps, el código fuente del navegador y las dependencias de compilación, dejando sin cambios los proveedores de tránsito, OAuth, enrutamiento, enlaces y la versión.
Contribuciones
¡Las contribuciones son bienvenidas! Siéntase libre de:
Reportar errores o solicitar funciones a través de GitHub Issues
Enviar solicitudes de extracción con mejoras
Compartir comentarios sobre la implementación de MCP
Licencia
Licencia MIT: consulte el archivo LICENSE para más detalles.
Hecho con ❤️ para la comunidad del Metro de Washington DC
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.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceMCP server that provides tools for querying live transit data (stops, departures, routes, vehicles, alerts) from any WP GTFS Pro site, enabling AI assistants to answer rider questions.14GPL 2.0
- AlicenseAqualityAmaintenanceMCP server for Atlanta MARTA real-time transit data, enabling queries about train arrivals and bus positions via natural language.4MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for Japanese public transit journey planning with interactive map UI, enabling station search, route planning, and departure lookups via natural language.MIT
- FlicenseNot gradedqualityCmaintenanceAn MCP server that provides real-time Hong Kong public transport ETA information.
Related MCP Connectors
SEPTA MCP — Philadelphia SEPTA real-time transit (www3.septa.org/api, keyless)
Amtrak MCP — live Amtrak train tracking via the community Amtraker API
MBTA MCP — Boston real-time transit via the MBTA v3 API (api-v3.mbta.com)
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/Aarekaz/metro-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server