Skip to main content
Glama

transport_gzm

MCP 서버로, 폴란드 실레시아 메트로폴리스 대중교통 운영사인 GZM (Górnośląsko-Zagłębiowska Metropolia) 의 GTFS-RT 실시간 대중교통 피드를 래핑합니다.

AI 에이전트가 다음과 같은 질문에 답할 수 있도록 작고 집중된 도구 세트를 제공합니다:

  • 현재 X 노선에서 운행 중인 버스/트램은 무엇인가요?

  • 차량 Y가 지연되나요? 지금 어디에 있나요?

  • 현재 활성화된 경고(지연, 혼란, 공사)는 무엇인가요?

  • 6호선의 다음 출발이 정류장 Z에 언제 도착하나요?

작동 방식

GZM은 https://gtfsrt.transportgzm.pl:5443/gtfsrt/gzm 에 공개 GTFS-RT 피드를 게시합니다(인증 없음, CC-BY 라이선스). 세 개의 논리적 하위 피드를 노출합니다:

경로

내용

/gtfsrt/gzm/all

전체 번들(세 개의 하위 피드 모두)

/gtfsrt/gzm/vehiclePositions

각 차량의 실시간 GPS 위치

/gtfsrt/gzm/tripUpdates

도착 시간 차이 및 정류장 건너뜀

/gtfsrt/gzm/alerts

서비스 경고(공사, 지연 등)

이 서버는 protobuf를 가져와 디코딩하고, LLM 컨텍스트 창 크기에 맞는 JSON 친화적 구조를 반환하는 9개의 도구로 노출합니다.

정적 GTFS 조인 (중요한 이유)

GZM GTFS-RT 피드는 최소입니다. trip 설명자는 trip_id만 가지며(route_id 없음), 정류장 시간 업데이트는 상대적 지연만 가지며 절대 시간이나 stop_id가 없습니다. "이 버스가 어떤 노선인가" 또는 "다음 트램이 정류장 X에서 언제 출발하나"에 답하기 위해 서버는 추가로 다음을 로드합니다:

  • 정적 GTFSgithub.com/TransportGZM-GTFS-mirror/TransportGZM-GTFS-extended-ver 의 일일 미러(RT 피드와 동일한 ID 공간, 검증됨). 한 번 다운로드하여 GZM_STATIC_TTL_HOURS(기본 24시간) 동안 캐시됩니다.

  • SDIP 실시간 출발rj.transportgzm.pl 뒤에 있는 GZM 자체 승객 정보 시스템으로, 실제 출발 안내판을 지원합니다. 정류장 디렉터리(/api/v2/stops/data/, 약 7,150개의 정류장)는 로드 시 GTFS 정류장과 좌표로 매칭됩니다.

Related MCP server: Wellington Transport Assistant

빠른 시작

Docker로 실행(권장)

docker run -i --rm ghcr.io/wiktor102/transport-gzm:latest

MCP 클라이언트(Claude Desktop, opencode 등)에 연결하세요:

{
  "mcpServers": {
    "transport-gzm": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/wiktor102/transport-gzm:latest"]
    }
  }
}

소스에서 실행

pip install -e .
transport-gzm

…또는 uv를 사용:

uv run --with mcp[cli] --with gtfs-realtime-bindings --with httpx \
  python -m transport_gzm.server

도구

도구

용도

health

피드 가용성 확인 및 피드 나이 보고

feed_summary

현재 피드의 차량, 운행, 경고 수 집계

vehicles

실시간 차량 위치 검색/필터링(노선, 정류장 기준)

vehicle_by_id

단일 차량의 현재 위치 가져오기

trip_updates

도착 예측; 노선, 정류장 또는 운행으로 필터링

next_departures

실시간 정류장별 출발 보드(GZM SDIP, 분 단위)

search_stops

이름으로 정류장 찾기 → rj_stop_id / gtfs_stop_id

alerts

활성 서비스 경고(공사, 지연, 우회)

alert_by_id

ID로 하나의 경고 가져오기

전체 매개변수 문서와 출력 스키마는 docs/tools.md를 참조하세요.

구성

환경 변수

기본값

용도

GZM_FEED_BASE_URL

https://gtfsrt.transportgzm.pl:5443/gtfsrt/gzm

기본 URL 재정의

GZM_HTTP_TIMEOUT

10

HTTP 타임아웃(초)

GZM_CACHE_TTL

10

프로세스 내 피드 캐시 TTL(초)

GZM_MAX_VEHICLES

200

vehicles()의 기본 상한

GZM_MAX_TRIPS

200

trip_updates()의 기본 상한

GZM_MAX_ALERTS

100

alerts()의 기본 상한

GZM_USER_AGENT

transport-gzm-mcp/0.1 (+https://github.com/Wiktor102/transport-gzm)

발신 UA

GZM_STATIC_DATASET_URL

GitHub 미러 ZIP(확장 GTFS)

정적 일정 소스(RT trip-id 공간을 공유해야 함)

GZM_STOP_DIRECTORY_URL

https://rj.transportgzm.pl/api/v2/stops/data/

SDIP 정류장 디렉터리

GZM_SDIP_BASE_URL

https://rj.transportgzm.pl/api/-

실시간 출발 보드 기본 URL

GZM_STATIC_TTL_HOURS

24

정적 GTFS 인덱스 캐시 기간

GZM_COORD_MATCH_TOLERANCE_M

20

rj→GTFS 정류장 매칭 최대 거리

LOG_LEVEL

INFO

DEBUG / INFO / WARNING / ERROR

라이선스

MIT. GTFS-RT 데이터 © Górnośląsko-Zagłębiowska Metropolia, CC-BY 4.0.

Available Tools

8 tools
alert_by_idA

Get a single alert by entity id (e.g. from a previous alerts() result).

ParametersJSON Schema
NameRequiredDescriptionDefault
alert_idYesEntity id of the alert.

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It explains the basic behavior (retrieve a single alert) but does not disclose potential errors, rate limits, or data freshness. For a simple read-only operation, this is adequate but not thorough.

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?

Single sentence with no unnecessary words. Front-loaded with the core action 'Get a single alert by entity id', making it immediately clear.

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 the simple nature (single parameter, no output schema), the description adequately explains what the tool does and how to obtain the input. No major gaps.

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 describes alert_id as 'Entity id of the alert.' The description adds that the id comes from a previous alerts() result, providing contextual meaning beyond the schema's definition.

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?

Description clearly states 'Get a single alert by entity id', specifying the verb 'Get', the resource 'alert', and that it's a single entity. It differentiates from sibling 'alerts' by noting the origin of the id from a previous alerts() result.

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?

Description explicitly suggests when to use this tool: when you have an entity id from a previous alerts() result. This gives clear context, though it does not mention when not to use it or alternatives.

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

alertsA

List active service alerts (planned works, delays, detours, stop closures). Use this for 'is the tram line broken?', 'any works today?', 'why is my bus late?'.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum alerts to return (default 100).
stop_idNoOnly alerts affecting this stop.
route_idNoOnly alerts affecting this route.

TDQS

A4/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 the full burden. It states the tool lists 'active' alerts, which is a behavioral trait. However, it does not disclose further details like real-time nature, performance characteristics, or any side effects, which is acceptable for a simple read-only list operation.

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 sentence plus usage examples, front-loading the core purpose and immediately providing context. Every part is necessary and there is no redundancy or wasted words.

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?

For a simple list tool with three optional parameters and no output schema, the description covers the purpose, usage context, and parameter semantics (via schema). It does not mention ordering or pagination beyond the limit parameter, but these are reasonable defaults. Overall, it is sufficiently complete.

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 100% (all three parameters have descriptions). The tool description adds no additional meaning beyond what the schema already provides, so baseline score of 3 is appropriate.

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 explicitly states the verb 'List' and the resource 'active service alerts', with specific alert types (planned works, delays, detours, stop closures). It clearly distinguishes from sibling tools like alert_by_id, feed_summary, etc., without ambiguity.

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?

The description provides concrete usage examples ('is the tram line broken?') that imply when to use the tool. It does not explicitly exclude alternatives (e.g., alert_by_id for specific alerts), but the context is clear enough for an AI agent to select appropriately.

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

feed_summaryA

Get the current counts of vehicles, trip updates and alerts in the live feed. Cheap; does not return full payloads.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that the call is lightweight and returns only counts, not full data. No side-effects or auth needs mentioned, but sufficient for a simple read operation.

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?

Two sentences, no fluff. Purpose is front-loaded, and additional info about cost and payload is succinctly stated.

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?

For a zero-parameter, no-output-schema tool, the description adequately describes what it does and its performance characteristics. Could mention real-time nature, but not necessary.

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?

No parameters exist, so schema coverage is 100%. The description does not need to add parameter info. Baseline score of 4 is appropriate.

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?

Clearly states it returns counts of vehicles, trip updates, and alerts. Distinguishes from siblings like 'vehicles' and 'alerts' which return full payloads, and 'health' which is about system status.

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?

Explicitly mentions it's 'cheap' and 'does not return full payloads', implying it's for quick summaries. Does not explicitly name alternatives or when-not, but the context is clear.

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

healthA

Check whether the GZM live transit feed is reachable and report how old it is. Call this first if a query seems to return empty results — it can distinguish 'no vehicles right now' from 'upstream is down'.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/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. It clearly indicates that the tool performs a reachability check and reports age, implying no side effects or destructive actions. A small gap: it does not describe the response format, but for a health check this is acceptable.

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?

Two concise sentences that front-load the core purpose and provide actionable usage guidance. Every word adds value; no fluff.

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

Completeness5/5

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

Given the tool's simplicity (no params, no output schema), the description is complete. It clearly states the tool's function, when to use it, and what it can differentiate, fully meeting the needs of the agent.

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 no parameters (0 params, 100% coverage). The description does not need to elaborate on parameters. Baseline of 4 is appropriate as the schema provides no additional meaning.

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 specifies exactly what the tool does: check if the GZM live transit feed is reachable and report its age. It distinguishes this tool's purpose from sibling tools like 'vehicles' or 'next_arrivals' by focusing on feed health rather than transit data.

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

Usage Guidelines5/5

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

Explicitly states when to call this tool: 'Call this first if a query seems to return empty results'. It also explains the diagnostic value: distinguishing 'no vehicles right now' from 'upstream is down', which helps the agent decide next steps.

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

next_arrivalsA

Get upcoming arrivals at a specific stop, across all routes, sorted by predicted arrival time. Equivalent to a digital departure board. Returns the 'minutes_from_now' field already computed for you.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum arrivals to return (default 20).
stop_idYesGTFS stop id, e.g. 's_1234'.
route_idNoOptional: only show arrivals on this route.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description bears full responsibility for behavioral disclosure. It indicates that arrivals are upcoming, sorted, and that the 'minutes_from_now' field is pre-computed. It does not mention destructive behavior (none expected), rate limits, or data freshness, but the core behavior is clearly conveyed. Some minor gaps exist (e.g., whether past arrivals are excluded), but overall transparency is good.

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 with only two sentences. The first sentence delivers the core purpose, sorting, and scope. The second sentence adds a helpful analogy and a key output detail. No information is redundant or extraneous, and the most critical facts are front-loaded.

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 the tool has 3 parameters and no output schema, the description adequately explains the output returns a sorted list with the 'minutes_from_now' field. However, it does not describe the full output structure (e.g., route names, arrival times), which an agent might need for correct handling. The description is sufficient for basic usage but could be more complete about the return format.

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, so the baseline is 3. The description adds value by highlighting the pre-computed 'minutes_from_now' field in the output, but it does not elaborate on parameter usage beyond what the schema already states (e.g., 'stop_id' is a GTFS ID, 'route_id' filters). Thus, the description provides minimal additional semantic context for the 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 verb 'Get', the resource 'upcoming arrivals', and the context 'at a specific stop, across all routes, sorted by predicted arrival time'. It uses a vivid analogy 'Equivalent to a digital departure board', making the purpose immediately understandable. This tool is distinct from siblings like 'trip_updates' or 'alerts', which do not focus on per-stop arrival lists.

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 for quick stop-level arrival lookups via the 'digital departure board' analogy, but it does not explicitly state when to use this tool over alternatives (e.g., 'trip_updates' for trip-level data). There is no mention of prerequisites or situations where the tool should not be used, which leaves the agent without important decision criteria.

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

trip_updatesA

List live trip updates: scheduled vs predicted arrival times and any stop-skips. Use this for 'is line 6 delayed', 'what time does the next bus arrive', or 'is stop X skipped'.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of trips to return (default 200).
stop_idNoFilter to trips that touch this stop.
trip_idNoFilter to one specific trip.
route_idNoFilter by GTFS route id.

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are present, so the description carries full burden. It describes the output but lacks details on data freshness, pagination, or rate limits. The examples hint at real-time data, but behavioral traits are not fully disclosed.

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?

Two sentences with no fluff. The purpose is front-loaded, followed by concrete examples. Every word earns its place.

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 4 optional parameters and no output schema, the description covers the return values (times and skips) and usage scenarios. It could mention sorting or time frame but is sufficient for a list tool.

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 coverage is 100%, and the description adds value by linking parameters to use cases (e.g., 'line 6' implies route_id, 'stop X' implies stop_id). It does not repeat schema but enhances understanding.

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 it lists live trip updates with scheduled vs predicted times and stop-skips. It provides concrete example queries, distinguishing it from sibling tools like alerts or next_arrivals.

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?

Explicit usage examples are given ('is line 6 delayed', etc.), indicating when to use the tool. However, it does not explicitly mention when not to use it or provide alternatives.

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

vehicle_by_idA

Get a single vehicle's current position by its vehicle id or label (e.g. fleet number painted on the bus, or the entity id from a previous vehicles() call).

ParametersJSON Schema
NameRequiredDescriptionDefault
vehicle_idYesVehicle label, internal id, or entity id.

TDQS

A4.1/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 the full burden. It states that it returns current position, but does not disclose error behavior, authentication needs, or rate limits; adequate for a simple read tool.

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 sentence that includes examples, making it slightly longer but still clear and efficiently conveying essential 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 the tool's simplicity (one parameter, no output schema), the description is fairly complete: it explains what is returned and how to identify the vehicle. It could optionally describe the return format, but that is often inferred.

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 schema already describes the parameter as 'Vehicle label, internal id, or entity id.' The description adds value by giving concrete examples (e.g., 'fleet number painted on the bus, or the entity id from a previous vehicles() call'), which helps the agent understand acceptable inputs.

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 explicitly states the verb 'Get' and the resource 'single vehicle's current position', with examples of acceptable identifiers, clearly distinguishing it from siblings like 'vehicles' which returns all vehicles.

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?

The description implies usage when you have a specific vehicle id or label, but does not explicitly state when not to use or name alternatives like 'vehicles' or 'next_arrivals' for broader queries.

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

vehiclesA

List live vehicle positions (buses, trams, trains) currently running. Use this when the user asks 'what's running', 'where is line X', or 'find a bus to Y'. Returns up to limit vehicles, newest first by timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of vehicles to return (default 200).
stop_idNoFilter by the stop the vehicle is currently at, incoming to, or in transit to. Exact match.
route_idNoFilter by GTFS route id (e.g. '6', 'T2', 'M104'). Exact match — case sensitive.

TDQS

A4.1/5.0
Behavior4/5

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

Discloses ordering (newest first) and limit behavior, but lacks details on rate limits, response format, or error handling. No annotations to contradict.

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?

Concise two sentences, front-loaded with purpose and usage. No redundant information.

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?

Covers basic behavior and filtering, but lacks return format details, which is important given no output 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 coverage is 100% so baseline applies. The description adds no additional semantics beyond schema descriptions.

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 tool lists live vehicle positions and gives example queries, distinguishing it from sibling tools like vehicle_by_id.

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?

Provides explicit use cases ('what's running?', 'where is line X') but does not mention when not to use or alternatives.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 8 tool updatesv0.1.0
    • First observedalert_by_id
    • First observedalerts
    • First observedfeed_summary
    • First observedhealth
    • First observednext_arrivals
    • First observedtrip_updates
    • First observedvehicle_by_id
    • First observedvehicles

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a distinct purpose: alerts vs alert_by_id, vehicles vs vehicle_by_id, next_arrivals for stop-specific predictions, trip_updates for delay info, feed_summary for metadata, and health for system status. No two tools overlap in functionality.

Naming Consistency4/5

Tools follow a clear pattern: plural names for list operations (alerts, vehicles, trip_updates) and 'by_id' for single items (alert_by_id, vehicle_by_id). feed_summary and health are unique but descriptive. next_arrivals deviates slightly but remains intuitive.

Tool Count5/5

With 8 tools, the server is well-scoped for a transit data API. It covers all necessary operations without redundancy or bloat, making it efficient for agents to navigate.

Completeness4/5

The tool set covers core real-time transit data: vehicle positions, alerts, trip updates, stop arrivals, and system health. Missing static data like route or stop listings, but for live monitoring, it is sufficiently complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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/Wiktor102/transport-gzm'

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