Anthropic Connectors Directory — Submission Form Content
Prepared content for the Desktop extension submission form.
Server Basics
| Field | Value |
|---|---|
| Name | TfL MCP Server |
| URL / Repository | https://github.com/oneill9/tfl-mcp-server |
| Tagline | Community-built server — real-time London transport data via the TfL Unified API |
| Description | A community-built MCP server that wraps the Transport for London (TfL) Unified API, giving AI assistants like Claude live access to London transport data. Not affiliated with or endorsed by Transport for London. Ask about service status, live arrivals, journey planning, Santander Cycles availability, station crowding, and fares — powered by the publicly available TfL API. |
| Use cases | Check whether a TfL service is running normally; get live arrival times at a London stop; plan a journey between two points; check Santander Cycles docking-station availability; check live station crowding; find fare information between two stops. |
| Category | Transport / Travel |
Connection Details
| Field | Value |
|---|---|
| Transport protocol | MCP 2026-07-28; stdio (Desktop extension / MCPB and default OCI mode) also accepts 2025-era desktop clients, plus modern-only stateless Streamable HTTP at /mcp |
| Auth type | None (no OAuth). Optional TfL API key via TFL_APP_KEY environment variable. |
| Read / Write | Read-only — all 6 tools are read-only queries against the TfL API. No write operations. |
| Packages | tfl-mcp-server.mcpb (Node.js MCPB — primary), @oneill9/tfl-mcp-server (npm / stdio), ghcr.io/oneill9/tfl-mcp-server:latest (OCI / Docker) |
Data & Compliance
| Field | Value |
|---|---|
| Data collection | No analytics or telemetry. Limited operational diagnostics are written to standard error and are not persisted by the server. |
| Data storage | None by the server. No query history or results are persisted between requests; a host may retain standard-error output under its own logging policy. |
| Third-party connections | TfL Unified API (api.tfl.gov.uk). Queries are forwarded to TfL in real time. See TfL's privacy policy. |
| Health data access | No. |
| Data retention | None by the server. The server holds no state between requests. |
| Privacy policy URL | https://raw.githubusercontent.com/oneill9/tfl-mcp-server/main/PRIVACY.md |
Full Tool List
| Tool name (ID) | Human-readable name | Description |
|---|---|---|
service_status |
Service Status | Get the current operational status and disruptions for TfL transport modes (e.g. tube, dlr, overground). |
arrivals |
Stop Arrivals | Get live arrival predictions at any TfL stop by searching its name. |
journey |
Journey Planner | Plan a journey between two points using the TfL Journey Planner, combining multiple modes. |
bike_points |
Santander Cycles Docking Stations | List all Santander Cycles docking stations with current bike and empty dock availability. |
crowding |
Station Crowding | Get live crowding data for a TfL station by name as a percentage of the typical baseline. |
fares |
Fare Finder | Get fare information between two named TfL stops, including pay-as-you-go and cash prices. |
Working Use Case Examples
These examples are verified by node/test/contract.test.ts, which spawns the built server as a real subprocess over stdio — the same way Claude Desktop connects. node/test/http.test.ts verifies the stateless Streamable HTTP transport. The official conformance fixture exercises the production TfL registrations and shared modern-only HTTP adapter while adding test-only diagnostics required by the referee's hard-coded probes; those diagnostics are never exposed by production.
Example 1: Check tube line status
Prompt: "Is the Central line running normally?"
Tool call: service_status with {"modes": "tube"}
Expected output: The Central line's current status (e.g. "Central: Good Service" or "Central: Minor Delays — reason…"). Verified by serviceStatusWithoutKey().
Example 2: Get arrivals for a stop
Prompt: "When is the next bus from Oxford Circus?"
Tool call:
1. arrivals with {"stopName": "oxford circus"} → internally resolves the name and returns live arrival predictions sorted by time.
Verified by arrivalsWithoutKey().
Example 3: Plan a journey
Prompt: "How do I get from Pimlico to Tower Bridge?"
Tool call: journey with {"from": "51.4952,-0.1441", "to": "51.5179,-0.0816"}
Expected output: One or more journey options with duration and step-by-step legs (e.g. "Journey 1 (25 min): Walk to Pimlico (3 min), Take Victoria line to Green Park (5 min)…"). Verified by journeyWithoutKey().
Submission Path
Desktop extension form: http://clau.de/desktop-extention-submission
Rationale: the server is distributed as a Node.js MCPB bundle (primary) and an OCI image. Both support stdio, the standard Desktop extension pattern; the OCI image also supports opt-in stateless Streamable HTTP at /mcp. No OAuth is needed for the local MCPB submission path.