
arjunkmrm-sg-bus-test
ai.smithery/arjunkmrm-sg-bus-test
Get real-time bus arrival times for any Singapore bus stop by code, with optional service filterin…
Documentation
Singapore Bus Arrival MCP Server
An MCP (Model Context Protocol) server that provides real-time bus arrival information for Singapore using the LTA DataMall API.
Features
- Get real-time bus arrival times for any Singapore bus stop
- Filter by specific bus service number (optional)
- Shows next 3 buses with:
- Estimated arrival time in minutes
- Bus capacity status (Seats/Standing Available/Limited Standing)
- Bus type (Single/Double Deck/Bendy)
- Wheelchair accessibility
- Operator information
Prerequisites
-
LTA DataMall API Key: You need to register for a free API key from LTA DataMall:
- Go to LTA DataMall
- Create an account and request for API access
- Copy your API key (AccountKey)
-
Node.js: Version 18 or higher
Installation
# Install dependencies
npm install
Usage
Development Mode
npm run dev
The server will start on http://localhost:3000
Testing the Tool
You can test the bus arrival tool using curl:
# Initialize the connection with your API key
curl -X POST "http://127.0.0.1:3000/mcp?ltaApiKey=YOUR_API_KEY_HERE&debug=false" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{"tools":{}},"clientInfo":{"name":"test-client","version":"1.0.0"}}}'
# Send initialized notification
curl -X POST "http://127.0.0.1:3000/mcp?ltaApiKey=YOUR_API_KEY_HERE" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"notifications/initialized"}'
# Get bus arrival for a specific bus stop (e.g., 83139)
curl -X POST "http://127.0.0.1:3000/mcp?ltaApiKey=YOUR_API_KEY_HERE" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"get-bus-arrival","arguments":{"busStopCode":"83139"}}}'
# Get arrival for a specific bus service at a bus stop
curl -X POST "http://127.0.0.1:3000/mcp?ltaApiKey=YOUR_API_KEY_HERE" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":6,"method":"tools/call","params":{"name":"get-bus-arrival","arguments":{"busStopCode":"83139","serviceNo":"15"}}}'
Replace YOUR_API_KEY_HERE
with your actual LTA DataMall API key.
Configuration
The server requires the following configuration:
ltaApiKey
(required): Your LTA DataMall API key (AccountKey)debug
(optional, default: false): Enable debug logging
API Reference
Tool: get-bus-arrival
Get real-time bus arrival information for a specific bus stop.
Parameters:
busStopCode
(required): Bus stop reference code (e.g., "83139")serviceNo
(optional): Specific bus service number to filter (e.g., "15")
Example Response:
📍 Bus Stop: 83139
⏰ Updated: 10/7/2025, 2:30:00 PM
🚌 Service 15 (GAS)
Next: 3 min 🟢 (SEA) | Single Deck ♿
2nd: 8 min 🟡 (SDA) | Double Deck
3rd: 15 min 🟢 (SEA) | Single Deck
🚌 Service 175 (SMRT)
Next: 5 min 🟢 (SEA) | Double Deck
2nd: 12 min 🟢 (SEA) | Double Deck
3rd: No data
🟢 Seats Available | 🟡 Standing Available | 🔴 Limited Standing | ♿ Wheelchair Accessible
Finding Bus Stop Codes
To find bus stop codes:
- Use the LTA DataMall Bus Stops API:
https://datamall2.mytransport.sg/ltaodataservice/BusStops
- Check physical bus stop signs - the code is usually displayed
- Use third-party apps like SG BusLeh or transit apps
Deployment
Deploy to Smithery
- Push your code to GitHub
- Go to smithery.ai/new
- Connect your repository
- Smithery will handle the deployment
Build for Production
npm run build
Data Update Frequency
The LTA DataMall Bus Arrival API updates every 20 seconds with real-time information.
Operators
- SBST: SBS Transit
- SMRT: SMRT Corporation
- TTS: Tower Transit Singapore
- GAS: Go-Ahead Singapore
License
ISC
No installation packages available.