Singapore LTA DataMall MCP Server
平台与服务by hithereiamaliff
访问新加坡实时公共交通信息,包括巴士到站、列车服务提醒和车站拥挤度,并可查询停车位、路况事件及预测客流。
什么是 Singapore LTA DataMall MCP Server?
访问新加坡实时公共交通信息,包括巴士到站、列车服务提醒和车站拥挤度,并可查询停车位、路况事件及预测客流。
核心功能 (7 个工具)
bus_arrivalGet 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.
station_crowdingGet real-time MRT/LRT station crowdedness level for a particular train network line. Updates every 10 minutes.
train_alertsGet real-time train service alerts including service disruptions and shuttle services. Updates when there are changes.
carpark_availabilityGet real-time availability of parking lots for HDB, LTA, and URA carparks. Updates every minute.
travel_timesGet estimated travel times on expressway segments. Updates every 5 minutes.
traffic_incidentsGet current road incidents including accidents, roadworks, and heavy traffic. Updates every 2 minutes.
station_crowd_forecastGet forecasted MRT/LRT station crowdedness levels in 30-minute intervals.
README
Singapore LTA DataMall MCP Server
🚌 Access Singapore's real-time transport data through AI assistants — bus arrivals, train crowding, traffic incidents, and more!
This is an enhanced fork of arjunkmrm/lta-mcp, rebuilt for self-hosted VPS deployment with zero-friction onboarding — no API key required to get started!
✨ Features
- 🔑 No API Key Required — Start using immediately with the server's default quota
- 🌐 Remote Access — Connect from any MCP client via HTTPS (not just local stdio)
- 🚀 One-Line Setup — Just add the URL to your MCP client config
- 📊 Real-Time Data — Bus arrivals, train crowding, traffic incidents, carpark availability
- 🔄 Auto-Deployment — Push to GitHub, automatically deploys to VPS
🚀 Quick Start
Step 1: Add to Your MCP Client
Copy this configuration to your MCP client (Claude Desktop, Cursor, Windsurf, etc.):
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"lta-datamall": {
"transport": "streamable-http",
"url": "https://mcp.techmavie.digital/ltadatamallsg/mcp"
}
}
}
Cursor/Windsurf (MCP settings):
{
"lta-datamall": {
"transport": "streamable-http",
"url": "https://mcp.techmavie.digital/ltadatamallsg/mcp"
}
}
Step 2: Start Asking!
Once configured, you can ask your AI assistant things like:
- "When is the next bus arriving at Marsiling Mall?" (the AI will look up the bus stop code automatically)
- "When is bus 143 arriving at bus stop 83139?"
- "How crowded is the North-South Line right now?"
- "Are there any train service disruptions?"
- "Show me traffic incidents on the expressways"
- "What's the carpark availability near Orchard?"
🔑 Using Your Own API Key (Optional)
By default, this server uses a shared LTA DataMall API key for convenience. To avoid rate limiting during heavy usage, you can register your own key via the MCP Key Service:
- Visit mcpkeys.techmavie.digital and register your LTA DataMall API key
- You'll receive a
usr_XXXXXXXXkey - Use it in your MCP client config:
{
"mcpServers": {
"lta-datamall": {
"transport": "streamable-http",
"url": "https://mcp.techmavie.digital/ltadatamallsg/mcp/usr_YOUR_KEY_HERE"
}
}
}
Alternatively, use the query parameter format: /mcp?api_key=usr_YOUR_KEY_HERE
Note: Registering an LTA API key is optional even with the key service — you can register without one and still use the server's default quota.
How to Get Your Own LTA DataMall API Key
- Visit LTA DataMall
- Click "Request for API Access" and fill in the provided form, then hit Submit button.
- Once approved, find your API key in the email sent to you.
- Register it at mcpkeys.techmavie.digital
🛠️ Available Tools
This MCP server provides 8 tools for accessing Singapore transport data:
| Tool | Description | Update Frequency |
|---|---|---|
bus_stop_search | Look up bus stop codes by name, road, or landmark | Cached (24h) |
bus_arrival | Real-time bus arrival times, locations & crowding | Real-time |
station_crowding | MRT/LRT station crowdedness levels | Every 10 min |
station_crowd_forecast | Predicted station crowding (30-min intervals) | Periodic |
train_alerts | Service disruptions & shuttle bus info | On change |
carpark_availability | HDB, LTA & URA carpark lot availability | Every 1 min |
travel_times | Expressway travel time estimates | Every 5 min |
traffic_incidents | Accidents, roadworks & heavy traffic | Every 2 min |
Tool Details
🔍 bus_stop_search
Search for bus stop codes by name, road, or landmark. Use this to find the 5-digit bus stop code needed for bus_arrival.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | ✅ | Search query (e.g., "Marsiling Mall", "Orchard", "Victoria St") |
limit | number | ❌ | Max results to return (default: 10, max: 20) |
The bus stop database (~5,500 stops) is loaded on first search and cached for 24 hours.
🚌 bus_arrival
Get real-time bus arrival information for any bus stop in Singapore.
| Parameter | Type | Required | Description |
|---|---|---|---|
busStopCode | string | ✅ | 5-digit bus stop code (e.g., "83139") |
serviceNo | string | ❌ | Filter by specific bus service (e.g., "143") |
🚇 station_crowding
Check how crowded MRT/LRT stations are right now.
| Parameter | Type | Required | Description |
|---|---|---|---|
trainLine | enum | ✅ | Train line code (see below) |
📈 station_crowd_forecast
Get predicted crowding levels for the next few hours.
| Parameter | Type | Required | Description |
|---|---|---|---|
trainLine | enum | ✅ | Train line code (see below) |
Supported Train Lines:
| Code | Line Name |
|---|---|
NSL | North-South Line |
EWL | East-West Line |
NEL | North-East Line |
CCL | Circle Line |
DTL | Downtown Line |
TEL | Thomson-East Coast Line |
BPL | Bukit Panjang LRT |
SLRT | Sengkang LRT |
PLRT | Punggol LRT |
CEL | Circle Line Extension |
CGL | Changi Airport Branch |
🚨 train_alerts
Get current train service alerts (no parameters required).
🅿️ carpark_availability
Get real-time carpark availability across Singapore (no parameters required).
⏱️ travel_times
Get estimated travel times on expressways (no parameters required).
🚧 traffic_incidents
Get current road incidents (no parameters required).
🔄 What's Changed from Original
This fork introduces major improvements over the original repository:
| Aspect | Original | This Fork |
|---|---|---|
| Hosting | Smithery cloud | Self-hosted VPS |
| Transport | stdio (local only) | Streamable HTTP (remote) |
| API Key | Required | Optional (server default) |
| Deployment | Manual | Auto via GitHub Actions |
| SDK Version | 0.5.0 | 1.11.0+ |
Key Changes
-
New HTTP Server (
src/http-server.ts)- Express-based server with Streamable HTTP transport
- Session management for concurrent users
- Health check endpoint for monitoring
-
Zero-Friction Onboarding
- Server provides default API quota
- Users can start immediately without registration
- Optional personal API key via MCP Key Service
-
Bus Stop Search (
src/bus-stops-cache.ts)- Look up bus stop codes by name, road, or landmark
- Lazy-loaded cache of all ~5,500 Singapore bus stops
- No more web searching for bus stop codes
-
MCP Key Service Integration (
src/utils/key-service.ts)- Centralized credential management via
usr_xxxkeys - Per-request server/transport isolation for key-service users
- 60-second cache with request deduplication
- Centralized credential management via
-
Production Infrastructure
- Docker + Docker Compose configuration
- Nginx reverse proxy setup
- GitHub Actions auto-deployment
- Health checks and graceful shutdown
- Firebase analytics with dashboard
🖥️ API Endpoints
| Endpoint | Method | Description |
|---|---|---|
/ | GET | Server information and available tools |
/health | GET | Health check (for monitoring) |
/mcp | POST | MCP protocol endpoint (server default key) |
/mcp/:userKey | POST | MCP protocol endpoint (key-service auth) |
/analytics | GET | Usage analytics (JSON) |
/analytics/dashboard | GET | Analytics dashboard (HTML) |
/.well-known/mcp/server-card.json | GET | Smithery server discovery |
/.well-known/mcp-config | GET | MCP client configuration schema |
🏠 Self-Hosting Guide
Want to host your own instance? Here's what you need:
Prerequisites
- VPS with Docker & Docker Compose
- Nginx with SSL (Let's Encrypt)
- Your own LTA DataMall API key
Deployment Files
| File | Purpose |
|---|---|
Dockerfile | Container build configuration |
docker-compose.yml | Docker orchestration |
deploy/nginx-mcp.conf | Nginx reverse proxy config |
.github/workflows/deploy-vps.yml | Auto-deployment workflow |
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
LTA_API_KEY | ✅ | — | Your LTA DataMall API key |
KEY_SERVICE_URL | ❌ | — | MCP Key Service resolve endpoint (enables /mcp/:userKey route) |
KEY_SERVICE_TOKEN | ❌ | — | Bearer token for key service (unique per server) |
PORT | ❌ | 8080 | Server port |
HOST | ❌ | 0.0.0.0 | Server host |
GitHub Secrets (for auto-deployment)
Set these in your repository settings:
VPS_HOST— Your VPS IP addressVPS_USERNAME— SSH usernameVPS_SSH_KEY— Private SSH keyVPS_PORT— SSH port (usually 22)LTA_API_KEY— Your LTA DataMall API keyKEY_SERVICE_URL— MCP Key Service resolve endpoint (optional)KEY_SERVICE_TOKEN— Bearer token for key service (optional)
📄 License
MIT License — See LICENSE file for details.
🙏 Credits
- Original MCP server by @arjunkmrm
- Data provided by LTA DataMall
- Enhanced by @hithereiamaliff
常见问题
Singapore LTA DataMall MCP Server 是什么?
访问新加坡实时公共交通信息,包括巴士到站、列车服务提醒和车站拥挤度,并可查询停车位、路况事件及预测客流。
Singapore LTA DataMall MCP Server 提供哪些工具?
提供 7 个工具,包括 bus_arrival、station_crowding、train_alerts 等。
相关 Skills
MCP构建
by anthropics
聚焦高质量 MCP Server 开发,覆盖协议研究、工具设计、错误处理与传输选型,适合用 FastMCP 或 MCP SDK 对接外部 API、封装服务能力。
✎ 想让 LLM 稳定调用外部 API,就用 MCP构建:从 Python 到 Node 都有成熟指引,帮你更快做出高质量 MCP 服务器。
Slack动图
by anthropics
面向Slack的动图制作Skill,内置emoji/消息GIF的尺寸、帧率和色彩约束、校验与优化流程,适合把创意或上传图片快速做成可直接发送的Slack动画。
✎ 帮你快速做出适配 Slack 的动图,内置约束规则和校验工具,少踩上传与播放坑,做表情包和演示都更省心。
MCP服务构建器
by alirezarezvani
从 OpenAPI 一键生成 Python/TypeScript MCP server 脚手架,并校验 tool schema、命名规范与版本兼容性,适合把现有 REST API 快速发布成可生产演进的 MCP 服务。
✎ 帮你快速搭建 MCP 服务与后端 API,脚手架完善、扩展顺手,尤其适合想高效验证服务能力的开发者。
相关 MCP Server
Slack 消息
编辑精选by Anthropic
Slack 是让 AI 助手直接读写你的 Slack 频道和消息的 MCP 服务器。
✎ 这个服务器解决了团队协作中需要 AI 实时获取 Slack 信息的痛点,特别适合开发团队让 Claude 帮忙汇总频道讨论或发送通知。不过,它目前只是参考实现,文档有限,不建议在生产环境直接使用——更适合开发者学习 MCP 如何集成第三方服务。
by netdata
io.github.netdata/mcp-server 是让 AI 助手实时监控服务器指标和日志的 MCP 服务器。
✎ 这个工具解决了运维人员需要手动检查系统状态的痛点,最适合 DevOps 团队让 Claude 自动分析性能数据。不过,它依赖 NetData 的现有部署,如果你没用过这个监控平台,得先花时间配置。
by d4vinci
Scrapling MCP Server 是专为现代网页设计的智能爬虫工具,支持绕过 Cloudflare 等反爬机制。
✎ 这个工具解决了爬取动态网页和反爬网站时的头疼问题,特别适合需要批量采集电商价格或新闻数据的开发者。不过,它依赖外部浏览器引擎,资源消耗较大,不适合轻量级任务。