Skip to main content
Glama
mcpflow

Singapore LTA MCP Server

by mcpflow

Singapore LTA MCP Server

An MCP server for Singapore's Land Transport Authority (LTA) DataMall API, providing real-time access to transportation information including bus arrivals, traffic conditions, and train service updates.

Installing via Smithery

To install Singapore LTA MCP Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @arjunkmrm/mcp-sg-lta --client claude

Tools

bus_arrival

Get real-time bus arrival information for specific bus stops.

Inputs:

  • busStopCode (string, required): The unique 5-digit bus stop code

  • serviceNo (string, optional): Specific bus service number to filter results

station_crowding

Get real-time crowding levels at MRT/LRT stations (Updates every 10 minutes).

Inputs:

  • trainLine (string, required): Code of train network line

    • Supported values: CCL, CEL, CGL, DTL, EWL, NEL, NSL, BPL, SLRT, PLRT, TEL

train_alerts

Get real-time train service alerts including disruptions and shuttle services.

Inputs: None required

carpark_availability

Get real-time availability of parking lots for HDB, LTA, and URA carparks (Updates every minute).

Inputs: None required

travel_times

Get estimated travel times on expressway segments (Updates every 5 minutes).

Inputs: None required

traffic_incidents

Get current road incidents including accidents, roadworks, and heavy traffic (Updates every 2 minutes).

Inputs: None required

station_crowd_forecast

Get forecasted MRT/LRT station crowdedness levels in 30-minute intervals.

Inputs:

  • trainLine (string, required): Code of train network line

    • Supported values: CCL, CEL, CGL, DTL, EWL, NEL, NSL, BPL, SLRT, PLRT, TEL

Related MCP server: Singapore Location Intelligence MCP

Configuration

Getting an API Key

  1. Register for an account on LTA DataMall

  2. Subscribe to the API services

  3. Obtain your API key from the account dashboard

Usage with Claude Desktop

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "lta": {
        "command": "npx", 
        "args": [
          "-y", 
          "arjunkmrm/mcp-sg-lta"
        ],
        "env": {
          "LTA_API_KEY": "YOUR-API-KEY"
        }
    }
  }
}

Available Tools

7 tools
bus_arrivalA

Get real-time bus arrival information for a specific bus stop and optionally a specific service number. Returns estimated arrival times, bus locations, and crowding levels.

ParametersJSON Schema
NameRequiredDescriptionDefault
busStopCodeYesThe unique 5-digit bus stop code
serviceNoNoOptional bus service number to filter results

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses the return content (estimated arrival times, bus locations, crowding levels) and labels it as real-time. No annotations exist, so the description carries full burden; it provides enough behavior context without contradictions.

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 efficiently convey the tool's purpose and return values, with no redundant or unnecessary 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?

With no output schema, the description explains the return values (arrival times, locations, crowding), making it sufficiently complete for an agent to understand the tool's output.

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?

Input schema covers 100% of parameters with descriptions matching the tool description. The description adds no additional parameter semantics beyond what the schema already provides, meeting the baseline for high schema coverage.

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 retrieves real-time bus arrival information for a specific stop and optionally a specific service number. It distinguishes itself from sibling tools like carpark_availability and train_alerts, which cover different domains.

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 use when needing bus times at a stop, and sibling tool names clearly differentiate domains. However, no explicit when-to-use or when-not-to-use guidance is provided.

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

carpark_availabilityA

Get real-time availability of parking lots for HDB, LTA, and URA carparks. Updates every minute.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

Description mentions updates every minute, implying freshness, but lacks details on permissions, rate limits, or return format. With no annotations, more transparency would be beneficial.

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 front-loading the core purpose and update frequency. No unnecessary words.

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?

Simple tool with no parameters, but no output schema means the agent must infer return format. Description states 'availability' but not what that entails (e.g., number of lots). Could be more complete.

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%. Baseline of 4 is appropriate; no additional param info needed.

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 the tool gets real-time parking availability for specific carpark types (HDB, LTA, URA), using a specific verb and resource. It distinguishes from sibling tools which focus on public transport.

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?

No explicit guidance on when to use vs alternatives, but the context of carpark availability and sibling tools focused on public transport makes it implied. No exclusions mentioned.

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

station_crowd_forecastC

Get forecasted MRT/LRT station crowdedness levels in 30-minute intervals.

ParametersJSON Schema
NameRequiredDescriptionDefault
trainLineYesCode of train network line (CCL, CEL, CGL, DTL, EWL, NEL, NSL, BPL, SLRT, PLRT, TEL)

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 must disclose behavior. It only states 'get forecasted levels' without mentioning mutation, authorization needs, rate limits, data freshness, or output format. This is insufficient for a read operation with no safety indicators.

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 front-loading key information (verb, resource, interval). No wasted words, but could be improved by clarifying the input scope.

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

Completeness2/5

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

Given no output schema and no annotations, the description should explain that the forecast covers all stations on the specified line or what the output contains. The current description lacks completeness for an effective agent invocation.

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% (the single parameter 'trainLine' has enums and description). The description does not add any additional parameter meaning beyond the schema, achieving the baseline score.

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 forecasted' and the resource 'MRT/LRT station crowdedness levels', with specific time granularity '30-minute intervals'. It distinguishes from the sibling tool 'station_crowding' which likely provides current crowding. However, it does not clarify that the input is a train line, not a specific station, which may cause slight confusion.

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?

There is no guidance on when to use this tool versus alternatives like 'station_crowding' (current) or 'travel_times'. The description does not indicate prerequisites or scenarios where this forecast is appropriate, leaving the agent to infer usage.

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

station_crowdingA

Get real-time MRT/LRT station crowdedness level for a particular train network line. Updates every 10 minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault
trainLineYesCode of train network line (CCL, CEL, CGL, DTL, EWL, NEL, NSL, BPL, SLRT, PLRT, TEL)

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries full transparency burden. It discloses the update interval (10 minutes) and confirms real-time nature. No destructive behavior or auth needs are relevant, so this is sufficient.

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 wasted words. Purpose is front-loaded and immediate. Every sentence 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 low complexity (single enum param, no output schema), the description covers core function well. Missing output format is a minor gap but not critical for tool selection.

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% with parameter description listing all enum codes. The description adds no additional semantics beyond what the schema already provides, meeting baseline.

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 the verb 'Get' and resource 'real-time MRT/LRT station crowdedness level' for a specific train line, distinguishing it from siblings like station_crowd_forecast (future prediction) and bus_arrival.

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?

Description implies usage for real-time crowding by line and mentions update frequency, but does not explicitly state when to use this tool over siblings like station_crowd_forecast or train_alerts.

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

traffic_incidentsA

Get current road incidents including accidents, roadworks, and heavy traffic. Updates every 2 minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, but description adds useful behavioral detail: it updates every 2 minutes. Discloses no destructive actions, which is fine for a read-only tool. Lacks output format details.

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 wasted words, front-loaded with key information. Very concise and effective.

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?

No output schema, and description does not mention return format or structure. While adequate for a simple tool, an agent might need to know what fields are returned. Sibling tools may have more structured outputs, so this is a gap.

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 (0 params), baseline is 4. Description adds no parameter info, but schema coverage is 100% trivially.

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 it gets current road incidents with examples (accidents, roadworks, heavy traffic), distinguishing from sibling tools for other transport modes.

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 implies usage for road incidents and mentions updates every 2 minutes, providing context. However, lacks explicit when-not or alternative tool references, though siblings are distinct.

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

train_alertsA

Get real-time train service alerts including service disruptions and shuttle services. Updates when there are changes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It mentions 'Updates when there are changes' but does not specify polling behavior, impact (e.g., read-only), rate limits, or whether it modifies any data. The description lacks important safety context for a real-time data 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 a single sentence that is concise and front-loaded with the key information. Every word contributes to the purpose, and there is no wasted text.

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 tool with no parameters and no output schema, the description adequately explains its purpose and that it provides real-time updates. However, it could be slightly more complete by explicitly stating it is a read-only operation, but the current version is sufficient for the tool's simplicity.

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?

There are no parameters, so the input schema effectively describes everything. The description adds no parameter information, but none is needed. The baseline for zero parameters is 4, and schema coverage is trivially 100%.

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 uses a specific verb ('Get') and identifies the resource ('real-time train service alerts including service disruptions and shuttle services'). It clearly distinguishes from sibling tools which cover buses, carpark, station crowding, traffic incidents, and travel times, making it unambiguous that this tool is for train alerts.

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. For example, it doesn't mention when to prefer this over station_crowd_forecast for train-related updates, or any conditions that would make this tool inappropriate.

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

travel_timesA

Get estimated travel times on expressway segments. Updates every 5 minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It reveals a specific behavioral trait (updates every 5 minutes) but omits other useful details like real-time vs. historical nature or coverage limitations.

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, front-loaded with key action and resource, no redundant words. Every sentence adds value.

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 zero parameters and no output schema, the description is adequate but could be more complete by mentioning the output format (e.g., time range) or specific expressways. It provides minimal but sufficient context for a simple 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?

Input schema has zero parameters, so schema coverage is vacuously 100%. Baseline for 0 params is 4. The description adds 'expressway segments' as context, but since no parameters exist, no further parameter semantics are needed.

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 'estimated travel times on expressway segments', and a distinct feature 'Updates every 5 minutes'. This differentiates it from sibling tools like bus_arrival and carpark_availability.

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 explicit guidance on when to use this tool versus alternatives such as traffic_incidents or train_alerts. The description only states what the tool does without contextual cues for selection.

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. 7 tool updatesv1.0.0
    • First observedbus_arrival
    • First observedcarpark_availability
    • First observedstation_crowd_forecast
    • First observedstation_crowding
    • First observedtraffic_incidents
    • First observedtrain_alerts
    • First observedtravel_times

TDQS

A3.8/5.0
Disambiguation5/5

Each tool targets a distinct domain (bus arrivals, carpark availability, MRT crowding, traffic incidents, train alerts, travel times) with no functional overlap, making it easy for an agent to select the right tool.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with descriptive noun combinations (e.g., bus_arrival, carpark_availability), ensuring predictability and clarity.

Tool Count5/5

With 7 tools, the server covers key real-time transport data domains (bus, carpark, MRT, traffic, train, expressway) without being too sparse or overwhelming.

Completeness4/5

The tool set provides broad coverage of real-time transport data, though it lacks tools for route planning or fare information, which are secondary to the real-time focus.

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/mcpflow/mcp-sg-lta'

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