Skip to main content
Glama
alisonborba

mcp-tfl-journey

by alisonborba

TFL Journey MCP Server

πŸš‡ A Model Context Protocol (MCP) server for Transport for London journey data. Get real-time routes, alerts, and disruptions via AI assistants like Claude.

Quick Start

# Demo mode (limited requests)
TFL_API_KEY="6674e72d9f3d4678a3539ffbb24d5c92" npx mcp-tfl-journey

# With your own API key
TFL_API_KEY="your-api-key" npx mcp-tfl-journey

Get your free API key: https://api-portal.tfl.gov.uk/signup

Related MCP server: TFL MCP Server for Poke

Claude Configuration

Add to your Claude MCP config:

{
  "mcpServers": {
    "tfl-journey": {
      "command": "npx",
      "args": ["mcp-tfl-journey"],
      "env": {
        "TFL_API_KEY": "6674e72d9f3d4678a3539ffbb24d5c92"
      }
    }
  }
}

Features

  • πŸ” Journey Search: Find routes between TFL stations

  • 🚨 Real-time Alerts: Get service alerts and disruptions

  • πŸ“ Stop Points: Detailed station information

  • πŸ“Š Journey Summaries: Duration, timing, and statistics

Usage

The search_journey tool accepts:

  • from: Source station code (e.g., "9400ZZLUKSX" for Kings Cross)

  • to: Destination station code (e.g., "9400ZZLULVT" for Liverpool Street)

Local Development

npm install
export TFL_API_KEY="your-api-key"
npm start

Station Codes

Code

Station

9400ZZLUKSX

Kings Cross

9400ZZLULVT

Liverpool Street

9400ZZLUPAD

Paddington

9400ZZLUVIC

Victoria

Available Tools

1 tool
search_journeyC

Search for journey information between two TfL stations

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesFrom station code (e.g., 9400ZZLUKSX)
toYesTo station code (e.g., 9400ZZLULVT)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations available, the description is the sole source of behavioral information. It implies a read-only search operation but fails to disclose any side effects, authentication requirements, rate limits, data freshness, or return format. A more thorough disclosure is expected for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that directly conveys the core function. There is no wasted content, though it could be slightly more informative without harming conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (two required string parameters, no output schema), the description is minimally adequate. However, it omits output details, error handling, and any context about the results, which might be needed for complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, providing examples for 'from' and 'to' station codes. The description adds little beyond restating the schema ('between two TfL stations'), so it meets the baseline without adding extra meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('search for journey information') and the resources ('between two TfL stations'), making the tool's purpose immediately understandable. However, it lacks specificity about what 'journey information' includes (e.g., routes, timings, fares), which could be improved.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, nor any conditions or prerequisites. The description simply states the function without context for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.1/5.0
Disambiguation5/5

With only one tool, there is no possibility of confusion or overlap. The tool's purpose is unique.

Naming Consistency5/5

The single tool uses a clear verb_noun pattern (search_journey), establishing a consistent naming convention by default.

Tool Count2/5

One tool is too few for a journey planning domain, which typically requires multiple operations like station lookup or route details.

Completeness2/5

The tool surface is severely limited, covering only journey search and missing other essential TfL operations such as station information or service status updates.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

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/alisonborba/mcp-tfl-journey'

If you have feedback or need assistance with the MCP directory API, please join our Discord server