TfL

Servidor MCP para Transport for London — linhas, trajetos, pontos de parada, chegadas, pontos de bicicleta, ocupação, interrupções nas vias e mais via stdio

Documentação

tfl-mcp

Servidor MCP para a API Unificada de Transporte de Londres — linhas, jornadas, pontos de parada, chegadas, pontos de bicicleta, ocupação, interrupções rodoviárias e muito mais via stdio.

Instalação

bunx @daanrongen/tfl-mcp

Ferramentas (80 no total)

DomínioFerramentasCobertura
AccidentStatsaccident_statsAcidentes rodoviários por ano
AirQualityair_qualityPrevisões de poluição ao vivo (NO2, O3, PM10, PM2.5, SO2)
BikePointbike_points_all, bike_point_search, bike_point_by_idDisponibilidade de Santander Cycles
Cabwisecabwise_searchTáxis licenciados e minicabs próximos a um local
Journeyjourney_plan, journey_modesPlanejador de jornadas completo (todos os modos)
Line14 ferramentasStatus, rotas, interrupções, chegadas, horários, sequências de paradas
Modemode_active_service_types, mode_arrivalsInformações de serviço entre modos
Occupancy5 ferramentasEstacionamentos, docks de bicicletas, conectores de carregamento EV
Place7 ferramentasBusca, consulta geográfica, ruas por CEP, tipos de lugares
Road8 ferramentasStatus TLRN, interrupções, fechamentos, obras rodoviárias
Search5 ferramentasBusca de texto completo no site/dados da TfL
StopPoint17 ferramentasBusca, chegadas, interrupções, lotação, rotas, pontos de táxi, estacionamentos
Vehicle3 ferramentasConformidade ULEZ, sobretaxa de emissões, rastreamento de chegada de veículos

Configuração

Chave de API (opcional, mas recomendada)

Registre-se para obter uma chave gratuita em https://api-portal.tfl.gov.uk/. Sem uma, as solicitações são limitadas a ~500/dia.

Configuração

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

Desenvolvimento

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

Inspeção local

bun run inspect inicia o Inspetor MCP contra a compilação local:

bun run build && bun run inspect

Isso abre a interface do Inspetor no seu navegador, onde você pode chamar qualquer ferramenta interativamente e inspecionar os formatos de solicitação/resposta.

Planejador de jornadas — IDs de localização

O modo de falha mais comum é passar um nome de texto livre para journey_plan, o que faz a TfL retornar uma resposta de desambiguação 300. A ferramenta lida com isso de forma graciosa e retorna IDs sugeridos de parameterValue para tentar novamente.

Formatos de ID preferidos (do mais ao menos confiável):

FormatoExemploNotas
Código ICS1000129Mais confiável — use a saída de stoppoint_search
ID Naptan940GZZLUVICConfiável para estações de metrô/trem
CEPN1C4TBSempre resolve sem ambiguidade
Coordenadas51.5308,-0.1238Sempre sem ambiguidade
Texto livreKing's CrossPode acionar desambiguação

Códigos ICS de estações comuns:

EstaçãoCódigo ICS
King's Cross St. Pancras1000129
Victoria1000248
Waterloo1000254
London Bridge1000135
Paddington1000184
Liverpool Street1000134
Euston1000078
Canary Wharf1001006
Brixton1000023
Stratford1000222

Arquitetura

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)

Licença

MIT