Skip to main content
Glama
mirodn

mcp-server-public-transport

mcp-server-public-transport

Ein MCP-Server, der Echtzeitdaten des öffentlichen Nahverkehrs in ganz Europa bereitstellt.

Über

mcp-server-public-transport ist ein Model Context Protocol (MCP)-kompatibler lokaler Server, der Zugriff auf Daten des öffentlichen Nahverkehrs in ganz Europa bietet. Derzeit integriert er APIs aus Großbritannien, der Schweiz, Norwegen, Belgien sowie Berlin/Brandenburg und ermöglicht es Ihnen, Zugverbindungen, Live-Abfahrten und Busstandorte abzurufen.

Related MCP server: BVG MCP Server

Status der Funktionsimplementierung

Unterstützte Länder

Land

API-Basis-URL

Status

Großbritannien

https://transportapi.com

Schweiz

https://transport.opendata.ch

Belgien

https://api.irail.be

Norwegen

https://api.entur.io

Berlin/Brandenburg

https://v6.vbb.transport.rest

Funktionen nach Land

Funktion

API-Pfad

Status

Großbritannien

Live-Abfahrten

/uk/train/station_timetables/{station_code}.json

Schweiz

Verbindungen suchen

/connections

Bahnhofssuche

/locations

Abfahrtstafel

/stationboard

Bahnhöfe in der Nähe

/locations?x={lon}&y={lat}

Belgien

Live-Abfahrten

/departures

Bahnhofssuche

/stations

Bahnhöfe in der Nähe

/stations/nearby

Norwegen

Ortssuche

/geocoder/v1/autocomplete

Live-Abfahrten

GraphQL: stopPlace(id) { estimatedCalls(...) }

Reiseplanung

GraphQL: trip(from, to, dateTime, numTripPatterns, ...)

Nächstgelegene Haltestellen

GraphQL: nearest(latitude, longitude, maximumDistance, ...)

Berlin/Brandenburg

Ortssuche

/locations

Live-Abfahrten

/stops/:id/departures

Live-Ankünfte

/stops/:id/arrivals

Reiseplanung

/journeys

Bahnhöfe in der Nähe

/locations/nearby

Einrichtung

Umgebungsvariablen

Setzen Sie die folgenden Umgebungsvariablen:

UK_TRANSPORT_APP_ID=your_uk_app_id
UK_TRANSPORT_API_KEY=your_uk_api_key

Verwendung mit Claude Desktop

Fügen Sie dies zu Ihrer claude_desktop_config.json hinzu:

{
  "mcpServers": {
    "mcp-server-public-transport": {
      "command": "uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/mcp-server-public-transport",
        "run",
        "server.py"
      ],
      "env": {
        "UK_TRANSPORT_APP_ID": "your-uk-app-id",
        "UK_TRANSPORT_API_KEY": "your-uk-api-key"
      }
    }
  }
}

Ersetzen Sie /ABSOLUTE/PATH/TO/PARENT/FOLDER/mcp-server-public-transport durch den tatsächlichen Pfad, unter dem Sie das Repository geklont haben.

Hinweis: Möglicherweise müssen Sie den vollständigen Pfad zur uv-Executable im Befehlsfeld angeben. Diesen erhalten Sie unter MacOS/Linux mit which uv oder unter Windows mit where uv.

Entwicklung

Entwicklungsumgebung einrichten

  1. Repository klonen

git clone https://github.com/mirodn/mcp-server-public-transport.git
cd mcp-server-public-transport
  1. Abhängigkeiten installieren

uv sync
  1. Umgebungsvariablen setzen

cp .env.example .env
  1. Server ausführen

uv run server.py

Tests ausführen

Das Projekt verwendet pytest für Tests, wobei die folgenden Befehle verfügbar sind:

# Run all tests
make test

Code-Qualität

# Run linting
make lint

# Run code formatting
make format

Kontinuierliche Integration

Das Projekt enthält einen GitHub Actions-Workflow (.github/workflows/test.yml), der automatisch:

  • Tests auf Python 3.10, 3.11 und 3.12 ausführt

  • Linting-Prüfungen mit ruff durchführt

  • Bei jedem Push und Pull Request auf den main-Branch ausgeführt wird

Die CI-Pipeline stellt die Code-Qualität und Kompatibilität über die unterstützten Python-Versionen sicher, bevor Änderungen zusammengeführt werden.

Mitwirken

Beiträge sind willkommen! Bitte zögern Sie nicht, einen Pull Request einzureichen.

Das Paket wird automatisch auf PyPI bereitgestellt, wenn project.version in pyproject.toml aktualisiert wird. Folgen Sie für die Versionierung semver.

Lizenz

MIT-Lizenz

Available Tools

13 tools
be_get_departuresB

Get live departure board for a Belgian train station.

ParametersJSON Schema
NameRequiredDescriptionDefault
stationYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'live departure board,' implying real-time data, but fails to detail critical aspects like rate limits, authentication needs, data freshness, error handling, or response format. This leaves significant gaps in understanding the tool's operational behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It is appropriately sized for the tool's complexity, making it easy to parse quickly.

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 moderate complexity (2 parameters, no annotations, but with an output schema), the description is minimally complete. It states what the tool does but lacks details on usage, behavior, and parameters. The presence of an output schema reduces the need to explain return values, but overall, the description leaves gaps in operational context.

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 description does not add meaning beyond the input schema, which has 0% description coverage. It implies parameters for station and possibly limit (via 'board'), but offers no specifics on station format (e.g., codes, names) or limit usage. With two parameters and low schema coverage, the description compensates minimally, meeting the baseline for adequate but incomplete parameter context.

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 verb ('Get') and resource ('live departure board for a Belgian train station'), making the purpose specific and understandable. However, it does not explicitly differentiate from sibling tools like 'be_search_connections' or 'ch_get_departures', which might offer similar functionality for different regions or contexts.

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?

The description provides no guidance on when to use this tool versus alternatives, such as 'be_search_connections' for route planning or 'ch_get_departures' for Swiss stations. It lacks explicit context, prerequisites, or exclusions, leaving usage decisions ambiguous.

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

be_get_vehicleA

Get details about a specific Belgian train vehicle by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
vehicle_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Get details,' which suggests a read-only operation, but does not disclose any behavioral traits such as error handling, rate limits, authentication needs, or what 'details' include. This leaves significant gaps in understanding how the tool behaves beyond its basic purpose.

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

Conciseness5/5

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

The description is a single, efficient sentence that is front-loaded with the tool's purpose. There is no wasted language, and it directly communicates the essential information without unnecessary elaboration, making it highly concise and well-structured.

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 that there is an output schema (which should cover return values), the description does not need to explain outputs. However, with no annotations and low schema coverage, it lacks details on behavioral aspects like error cases or usage context. It is minimally adequate but has clear gaps in providing a complete understanding of the tool's operation and constraints.

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

Parameters4/5

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

The input schema has 0% description coverage, so the description must compensate. It adds meaning by specifying that the parameter 'vehicle_id' refers to a 'Belgian train vehicle ID,' which clarifies the semantics beyond the schema's generic 'Vehicle Id' title. However, it does not provide format examples or constraints, leaving some ambiguity.

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

Purpose5/5

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

The description clearly states the specific action ('Get details') and resource ('Belgian train vehicle by its ID'), distinguishing it from siblings like be_get_departures or be_search_stations that handle different operations. It precisely identifies what the tool does without being vague or tautological.

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

Usage Guidelines3/5

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

The description implies usage when details about a specific Belgian train vehicle are needed, but it does not explicitly state when to use this tool versus alternatives like be_search_connections or ch_get_departures. No exclusions or clear context for tool selection are provided, leaving usage somewhat inferred.

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

be_search_connectionsB

Search train connections in Belgium between two stations. Powered by iRail API for real-time routes and schedules.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYes
destinationYes
resultsNo
dateNo
timeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'real-time routes and schedules' but lacks critical details: whether this is a read-only operation, potential rate limits, authentication requirements, error handling, or data freshness. For a search tool with real-time data, this is insufficient.

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

Conciseness5/5

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

The description is concise and front-loaded: the first sentence states the core purpose, and the second adds API context. Both sentences earn their place with no wasted words, making it easy for an agent to parse quickly.

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 5 parameters with 0% schema coverage and an output schema exists, the description is moderately complete. It covers the basic purpose but misses parameter details and behavioral context. The output schema may handle return values, but without annotations, the description should do more to explain operational aspects like data sources or limitations.

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?

Schema description coverage is 0%, so the description must compensate. It implies parameters for origin and destination stations but doesn't explain the 'results', 'date', or 'time' parameters. The mention of 'real-time routes and schedules' hints at date/time relevance but doesn't clarify format or defaults. Baseline is 3 as it adds minimal value beyond the schema.

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 tool's purpose: 'Search train connections in Belgium between two stations.' It specifies the verb ('search'), resource ('train connections'), and geographic scope ('Belgium'). However, it doesn't explicitly differentiate from sibling tools like 'be_get_departures' or 'ch_search_connections' beyond the geographic distinction.

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?

The description provides no guidance on when to use this tool versus alternatives. It mentions the iRail API but doesn't specify use cases, prerequisites, or comparisons to sibling tools like 'be_get_departures' (which might focus on departures from a single station) or 'ch_search_connections' (for Switzerland).

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

be_search_stationsB

Search for Belgian train stations by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure but offers minimal information. It states it's a search operation but doesn't describe what results look like, whether there are rate limits, authentication requirements, or how results are sorted/filtered. The agent would need to guess about these important behavioral aspects.

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

Conciseness5/5

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

The description is extremely concise - a single sentence that communicates the core purpose without any wasted words. It's front-loaded with the essential information and doesn't include unnecessary details or explanations.

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?

For a simple search tool with 1 parameter and an output schema, the description is minimally adequate but lacks important context. The existence of an output schema means return values are documented elsewhere, but the description doesn't address behavioral aspects like result format, limitations, or error conditions that would help the agent use it effectively.

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 description mentions searching 'by name' which adds context about the 'query' parameter's purpose, but with 0% schema description coverage and only 1 parameter, this provides limited additional value. The baseline for 0 parameters would be 4, but with 1 parameter and minimal semantic explanation, a score of 3 reflects adequate but not comprehensive parameter guidance.

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') and resource ('Belgian train stations by name'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'ch_search_stations' or 'no_search_places' beyond specifying the Belgian geographic scope.

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?

The description provides no guidance on when to use this tool versus alternatives like 'be_search_connections' or 'ch_search_stations'. It mentions the Belgian scope but doesn't explain why one would choose this over other search tools or what specific use cases it addresses.

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

ch_get_departuresC

Get departure board for a Swiss train station with real-time information.

ParametersJSON Schema
NameRequiredDescriptionDefault
stationYes
limitNo
datetimeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions 'real-time information' which hints at freshness, but doesn't disclose critical behavioral traits like rate limits, authentication needs, error conditions, pagination, or what happens when station names are ambiguous. For a read operation with real-time data, this leaves significant gaps.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose. Every word earns its place: 'Get' (action), 'departure board' (resource), 'Swiss train station' (scope), 'real-time information' (key feature). No wasted words or redundancy.

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 has an output schema (which handles return values), the description's main gaps are in parameter semantics and behavioral transparency. For a read-only tool with real-time data, the description is minimally viable but lacks details on parameter usage and operational constraints, making it incomplete for confident agent use.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate but adds no parameter information. It doesn't explain what format 'station' expects (e.g., station code, name), what 'limit' controls, or how 'datetime' should be formatted. With 3 parameters (1 required) and zero schema descriptions, this is inadequate.

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 ('Get departure board') and resource ('Swiss train station'), and specifies the data includes 'real-time information'. It distinguishes from siblings by specifying 'Swiss' (vs. 'be', 'no', 'uk' prefixes), but doesn't explicitly differentiate from similar departure tools like 'be_get_departures' or 'no_stop_departures' beyond the geographic scope.

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?

The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools for departures (be_get_departures, no_stop_departures, uk_live_departures), there's no indication of when this Swiss-specific tool is preferred over others, nor any prerequisites or constraints mentioned.

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

ch_nearby_stationsC

Find nearby Swiss train stations based on coordinates (latitude, longitude).

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeYes
longitudeYes
distanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool 'finds' stations, implying a read-only operation, but doesn't cover aspects like rate limits, authentication needs, output format, or error handling. The description is minimal and lacks essential behavioral context for a tool with parameters.

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

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It is front-loaded with the core purpose, making it easy to scan and understand quickly. Every part of the sentence contributes directly to the tool's function.

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 moderate complexity (3 parameters, no annotations, but with an output schema), the description is incomplete. It covers the basic purpose but lacks usage guidelines, parameter details, and behavioral context. The output schema may handle return values, but the description doesn't provide enough context for effective tool selection and invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for undocumented parameters. It mentions 'coordinates (latitude, longitude)' but doesn't explain the 'distance' parameter or its default value. The description adds minimal semantic value beyond the schema, failing to clarify parameter roles or usage.

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 verb 'find' and the resource 'nearby Swiss train stations', specifying the geographic scope (Swiss) and the input basis (coordinates). It distinguishes from siblings like 'be_search_stations' or 'no_nearest_stops' by emphasizing proximity and Swiss context, though it doesn't explicitly compare them.

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?

The description provides no guidance on when to use this tool versus alternatives such as 'ch_search_stations' or 'no_nearest_stops'. It mentions coordinates as input but doesn't specify use cases, prerequisites, or exclusions, leaving the agent to infer usage from the name and parameters alone.

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

ch_search_connectionsA

Search for train connections in Switzerland between two stations. Uses transport.opendata.ch API to provide real-time connection data including departure times, duration, platforms, and transfers.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYes
destinationYes
limitNo
dateNo
timeNo
is_arrival_timeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses the API source (transport.opendata.ch) and data types (real-time, including specific fields), which is useful context. However, it doesn't mention rate limits, authentication needs, error handling, or pagination behavior, leaving gaps for a search tool.

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

Conciseness5/5

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

The description is efficiently structured in two sentences: the first states purpose and scope, the second adds API details and data specifics. Every sentence adds value with no wasted words, making it easy to parse and front-loaded with key information.

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

Completeness4/5

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

Given 6 parameters with 0% schema coverage and an output schema (which reduces need to explain returns), the description provides good context on what the tool does and data included. However, it lacks details on parameter usage, behavioral constraints, and sibling differentiation, leaving minor gaps for full agent understanding.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It doesn't explicitly explain parameters, but it implies 'origin' and 'destination' as stations and mentions data types like 'departure times' and 'duration', which relate to 'date', 'time', and 'limit'. This adds some meaning beyond the bare schema, though not comprehensive for all 6 parameters.

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

Purpose5/5

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

The description clearly states the specific action ('Search for train connections'), resource ('between two stations in Switzerland'), and scope ('real-time connection data including departure times, duration, platforms, and transfers'). It distinguishes from siblings by specifying Switzerland and the transport.opendata.ch API, unlike generic connection tools.

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

Usage Guidelines3/5

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

The description implies usage context (Switzerland, train connections) but doesn't explicitly state when to use this tool versus alternatives like 'ch_search_stations' or 'ch_get_departures'. No exclusions or prerequisites are mentioned, leaving some ambiguity about tool selection.

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

ch_search_stationsC

Search for Swiss train stations by name or location.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
typeNostation

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool is for searching, implying a read-only operation, but doesn't cover critical aspects like authentication needs, rate limits, pagination, error handling, or response format. For a search tool with zero annotation coverage, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence: 'Search for Swiss train stations by name or location.' It is front-loaded with the core purpose and wastes no words, making it highly concise and well-structured for quick understanding.

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 moderate complexity (2 parameters, 1 required) and the presence of an output schema, the description is minimally adequate. It covers the basic purpose but lacks details on usage context, parameter meanings, and behavioral traits. With no annotations and low schema coverage, it doesn't fully compensate for these gaps, though the output schema may help with return values.

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

Parameters2/5

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

Schema description coverage is 0%, meaning the input schema provides no descriptions for parameters. The description mentions searching 'by name or location,' which hints at the 'query' parameter's purpose but doesn't explain the 'type' parameter or its default value 'station.' It adds minimal semantic value beyond the schema, failing to compensate for the low coverage.

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 tool's purpose: 'Search for Swiss train stations by name or location.' It specifies the verb ('Search'), resource ('Swiss train stations'), and scope ('by name or location'). However, it doesn't explicitly differentiate from sibling tools like 'ch_nearby_stations' or 'be_search_stations', which prevents a score of 5.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'ch_nearby_stations' for location-based searches or 'be_search_stations' for Belgian stations, nor does it specify prerequisites or exclusions. This leaves the agent with minimal context for tool selection.

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

no_nearest_stopsB

Find nearest StopPlaces for a coordinate (lat, lon) within a radius in meters.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYes
lonYes
radiusNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the core functionality but lacks details on permissions, rate limits, error handling, or response format. The description doesn't contradict annotations (none exist), but fails to provide sufficient behavioral context for safe and effective use.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every element ('Find nearest StopPlaces', 'coordinate (lat, lon)', 'within a radius in meters') contributes directly to understanding the tool's function.

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 4 parameters with 0% schema coverage and no annotations, but with an output schema present, the description is moderately complete. It covers the basic purpose and key parameters but lacks behavioral details and parameter explanations. The output schema reduces the need to describe return values, but the description should do more to compensate for the sparse schema.

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?

Schema description coverage is 0%, so the description must compensate. It mentions parameters 'lat', 'lon', and 'radius' by context, but doesn't explain their semantics beyond the basic purpose. It omits 'limit' entirely. The description adds some value by clarifying the coordinate-based search, but doesn't fully compensate for the schema's lack of descriptions.

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 verb 'Find' and the resource 'nearest StopPlaces for a coordinate', specifying the action and target. It distinguishes from siblings like 'no_search_places' by focusing on proximity rather than general search, but doesn't explicitly contrast with 'ch_nearby_stations' which might serve a similar function in another context.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention siblings like 'no_search_places' for broader searches or 'ch_nearby_stations' for similar functionality in a different region, leaving the agent to infer usage based on tool names alone.

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

no_search_placesC

Autocomplete search across stops/addresses/POIs in Norway via Entur Geocoder.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
langNoen
sizeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'Autocomplete search' but doesn't specify if this is read-only, has rate limits, requires authentication, or details the output format. For a search tool with zero annotation coverage, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It front-loads the key action and resource, making it easy to parse quickly, which is ideal for 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 has an output schema, the description doesn't need to explain return values. However, with 3 parameters, 0% schema coverage, and no annotations, the description is incomplete—it lacks parameter details and behavioral context, making it only minimally adequate.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for undocumented parameters. It doesn't explain any parameters (text, lang, size), such as what 'text' should contain, language options for 'lang', or the meaning of 'size'. This fails to add meaning beyond the bare schema.

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 ('Autocomplete search') and target resources ('stops/addresses/POIs in Norway via Entur Geocoder'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'no_nearest_stops' or 'no_stop_departures', which might also involve Norwegian stops, so it misses full sibling distinction.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention scenarios like real-time vs. static data, geocoding vs. trip planning, or comparisons to siblings such as 'be_search_connections' or 'ch_search_stations', leaving the agent with no usage context.

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

no_stop_departuresB

Upcoming departures for a StopPlace ID (e.g., 'NSR:StopPlace:58368').

ParametersJSON Schema
NameRequiredDescriptionDefault
stop_place_idYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. While it implies a read-only operation (retrieving departures), it doesn't mention any constraints like rate limits, authentication requirements, time windows, or what happens when no departures exist. The example ID format is helpful but insufficient for full behavioral understanding.

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

Conciseness5/5

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

The description is extremely concise - a single sentence that communicates the core purpose efficiently. It's front-loaded with the main functionality and includes a helpful example without unnecessary elaboration. Every word earns its place.

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 has an output schema (which reduces the need to describe return values) but no annotations, the description is minimally adequate. It covers the basic purpose and provides an example ID format, but doesn't address the tool's relationship to similar sibling tools or provide behavioral context that would be important for an AI agent to use it effectively.

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?

With 0% schema description coverage, the description provides minimal parameter information. It mentions the StopPlace ID parameter and provides an example format, which adds some value beyond the bare schema. However, it doesn't explain the 'limit' parameter at all, leaving half the parameters undocumented. The baseline would be lower without the example format.

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 tool's purpose: retrieving upcoming departures for a specific StopPlace ID. It provides a specific verb ('Upcoming departures') and resource ('StopPlace ID'), but doesn't explicitly differentiate from sibling tools like 'be_get_departures' or 'ch_get_departures' that might serve similar functions in different contexts.

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?

The description provides no guidance on when to use this tool versus alternatives. With multiple departure-related sibling tools (be_get_departures, ch_get_departures, uk_live_departures), there's no indication of what distinguishes this tool's scope, region, or use case from those alternatives.

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

no_tripC

Door-to-door trip planning between two StopPlaces (NSR IDs).

ParametersJSON Schema
NameRequiredDescriptionDefault
from_idYes
to_idYes
date_timeNo
resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'door-to-door trip planning' but doesn't clarify if this includes real-time data, estimated times, cost, accessibility options, or error handling. For a trip planning tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core functionality without any wasted words. It's appropriately sized for the tool's complexity.

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 has an output schema (which should cover return values), no annotations, and low schema coverage, the description is incomplete. It lacks details on behavioral traits, parameter meanings, and usage context, but the presence of an output schema mitigates some gaps, making it minimally adequate.

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

Parameters2/5

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

The schema description coverage is 0%, meaning parameters are undocumented in the schema. The description mentions 'two StopPlaces (NSR IDs)', which hints at 'from_id' and 'to_id', but doesn't explain what NSR IDs are, their format, or the optional 'date_time' and 'results' parameters. It adds minimal value beyond the schema.

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 tool's purpose as 'door-to-door trip planning between two StopPlaces (NSR IDs)', which specifies the verb ('trip planning'), resource ('StopPlaces'), and scope ('door-to-door'). However, it doesn't explicitly differentiate from sibling tools like 'be_search_connections' or 'ch_search_connections', which may offer similar functionality.

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?

The description provides no guidance on when to use this tool versus alternatives like 'be_search_connections' or 'ch_search_connections', nor does it mention prerequisites or exclusions. It only states what the tool does, not when it's appropriate.

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

uk_live_departuresA

Get live departure information for a UK train station using its CRS code (e.g., 'PAD' for London Paddington, 'MAN' for Manchester Piccadilly). Uses the TransportAPI station timetables endpoint with live data.

ParametersJSON Schema
NameRequiredDescriptionDefault
station_codeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses the data source ('TransportAPI station timetables endpoint with live data'), which adds context, but lacks details on rate limits, error handling, or response format, leaving behavioral gaps.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, followed by parameter guidance and implementation detail in two efficient sentences, with no redundant information.

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

Completeness4/5

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

Given 1 parameter, no annotations, and an output schema (which handles return values), the description is mostly complete for a simple lookup tool. It covers purpose and parameter use but lacks behavioral details like error cases.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It explains the parameter 'station_code' as a CRS code with examples ('PAD', 'MAN'), adding meaning beyond the schema's generic 'Station Code' title, though it could detail format constraints.

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

Purpose5/5

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

The description clearly states the specific action ('Get live departure information'), resource ('for a UK train station'), and key constraint ('using its CRS code'), with examples provided. It distinguishes from siblings by specifying UK focus and live data, unlike generic departure tools.

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

Usage Guidelines4/5

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

It explicitly states when to use this tool (for UK train stations with CRS codes and live data), but does not mention when not to use it or name specific alternatives among the sibling tools, which include other departure-related tools.

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

TDQS

A3.5/5.0
Disambiguation4/5

Tools are clearly distinguished by country prefix (be_, ch_, no_, uk_) and specific functions like departures, connections, stations, and trips, with minimal overlap. However, some tools like be_get_departures and uk_live_departures serve similar purposes across different regions, which could cause minor confusion if an agent doesn't prioritize the country prefix.

Naming Consistency4/5

Naming follows a consistent pattern of country prefix + verb_noun (e.g., be_get_departures, ch_search_connections), with all tools using snake_case. Minor deviations include no_nearest_stops (using 'nearest' instead of 'search' or 'get') and no_trip (using a noun instead of verb_noun), but overall the convention is predictable and readable.

Tool Count5/5

With 13 tools, the count is well-scoped for a public transport server covering multiple countries (Belgium, Switzerland, Norway, UK). Each tool earns its place by providing distinct functionality per region, such as departures, connections, station searches, and trip planning, without being overly bloated or sparse.

Completeness4/5

The toolset offers comprehensive coverage for public transport queries across four countries, including core operations like searching stations, getting departures, and planning connections. Minor gaps exist, such as no tool for vehicle details outside Belgium or real-time alerts, but agents can work around these with the available tools for most common use cases.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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/mirodn/mcp-server-public-transport'

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