TfL

Servidor MCP para Transport for London — líneas, viajes, puntos de parada, llegadas, puntos de bicicletas, ocupación, interrupciones en carretera y más a través de stdio

Documentación

tfl-mcp

Servidor MCP para la API unificada de Transport for London: líneas, viajes, puntos de parada, llegadas, puntos de bicicletas, ocupación, interrupciones de carretera y más a través de stdio.

Instalación

bunx @daanrongen/tfl-mcp

Herramientas (80 en total)

DominioHerramientasCobertura
AccidentStatsaccident_statsAccidentes de carretera por año
AirQualityair_qualityPronósticos de contaminación en vivo (NO2, O3, PM10, PM2.5, SO2)
BikePointbike_points_all, bike_point_search, bike_point_by_idDisponibilidad de Santander Cycles
Cabwisecabwise_searchTaxis con licencia y minicabs cerca de una ubicación
Journeyjourney_plan, journey_modesPlanificador de viajes completo (todos los modos)
Line14 herramientasEstado, rutas, interrupciones, llegadas, horarios, secuencias de paradas
Modemode_active_service_types, mode_arrivalsInformación de servicios entre modos
Occupancy5 herramientasAparcamientos, muelles de bicicletas, conectores de carga de vehículos eléctricos
Place7 herramientasBúsqueda, consulta geográfica, calles por código postal, tipos de lugares
Road8 herramientasEstado de TLRN, interrupciones, cierres, obras viales
Search5 herramientasBúsqueda de texto completo en el sitio/datos de TfL
StopPoint17 herramientasBúsqueda, llegadas, interrupciones, aglomeraciones, rutas, paradas de taxis, aparcamientos
Vehicle3 herramientasCumplimiento de ULEZ, recargo por emisiones, seguimiento de llegadas de vehículos

Configuración

Clave de API (opcional pero recomendada)

Regístrese para obtener una clave gratuita en https://api-portal.tfl.gov.uk/. Sin una, las solicitudes están limitadas a ~500/día.

Configuración

Claude Desktop

Edite ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "tfl": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@daanrongen/tfl-mcp"],
      "env": {
        "TFL_API_KEY": "your-key-here"
      }
    }
  }
}

Claude Code CLI

claude mcp add tfl bunx -- @daanrongen/tfl-mcp -e TFL_API_KEY=your-key-here

Desarrollo

bun install
bun run dev        # run with --watch
bun test           # run test suite
bun run build      # bundle to dist/main.js
bun run inspect    # open MCP Inspector in browser

Inspección local

bun run inspect lanza el Inspector MCP contra la compilación local:

bun run build && bun run inspect

Esto abre la interfaz del Inspector en su navegador donde puede llamar a cualquier herramienta de forma interactiva e inspeccionar las formas de solicitud/respuesta.

Planificador de viajes: IDs de ubicación

El modo de fallo más común es pasar un nombre de texto libre a journey_plan, lo que hace que TfL devuelva una respuesta de desambiguación 300. La herramienta maneja esto con elegancia y devuelve IDs de parameterValue sugeridos para reintentar.

Formatos de ID preferidos (de más a menos confiable):

FormatoEjemploNotas
Código ICS1000129Más confiable: use la salida de stoppoint_search
ID de Naptan940GZZLUVICConfiable para estaciones de metro/tren
Código postalN1C4TBSiempre se resuelve sin ambigüedad
Coordenadas51.5308,-0.1238Siempre sin ambigüedad
Texto libreKing's CrossPuede provocar desambiguación

Códigos ICS de estaciones comunes:

EstaciónCódigo ICS
King's Cross St. Pancras1000129
Victoria1000248
Waterloo1000254
London Bridge1000135
Paddington1000184
Liverpool Street1000134
Euston1000078
Canary Wharf1001006
Brixton1000023
Stratford1000222

Arquitectura

src/
├── config.ts           # Effect Config — TFL_API_KEY
├── main.ts             # Entry point — ManagedRuntime + StdioServerTransport
├── domain/
│   ├── TflClient.ts    # Context.Tag service interface
│   └── errors.ts       # TflError, TflDisambiguationError
├── infra/
│   ├── TflClientLive.ts  # Layer.effect — HTTP client with disambiguation handling
│   └── TflClientTest.ts  # In-memory test adapter
└── mcp/
    ├── server.ts       # McpServer wired to ManagedRuntime
    ├── utils.ts        # formatSuccess, formatError, formatDisambiguation
    └── tools/          # One module per TfL domain (13 files)

Licencia

MIT