railinfo-mcp
🚄 RailInfo MCP Server
An integration-ready Model Context Protocol (MCP) server providing real-time Indian Railways information. It gives AI models (like ChatGPT or Claude) the ability to fetch live train running status, station schedules, route maps, crossings, and upcoming train arrivals/departures with high accuracy.
🌟 Features & Tools
1. Live Train Status (get_live_train_status)
Get the current running status of any Indian Railways train.
Flexible Date Resolution: Supports querying by keywords like
"today","yesterday", or specific dates (e.g.,"03-June-2026").Target Station Focus: Query a train relative to a specific station (e.g.,
"When will 12357 reach Varanasi (BSB)?").Remaining Track Distance: Calculates track distance remaining and number of stops to go.
Physical GPS Distance: Calculates straight-line physical distance to the station using the Haversine formula based on active GPS coordinates.
Remaining Stops Table: Lists upcoming stops with expected arrival time, platform, delay, and current status.
2. Live Station Departures (get_trains_at_station)
Get all trains arriving or departing at a station in the next 2 or 4 hours (matching NTES departures board).
Hybrid Search Algorithm: Merges static scheduled timetables with active live trains operating within a 120 km radius of the station. This ensures delayed or rescheduled trains are never missed.
Multi-Instance Handling: Disambiguates between yesterday's delayed train and today's on-time train running concurrently.
3. Train Crossings & Radar (get_train_crossings_and_radar)
Get a "radar view" along a train's active route.
Oncoming Crossings: Lists oncoming trains scheduled to pass by on opposing tracks.
Section Traffic (Radar): Identifies other trains running directly ahead or behind in the same block section. Helpful for predicting signal-related delays.
4. Trains Between Stations (get_trains_between_stations)
Find all upcoming trains running from a source station (e.g., ALJN) to a destination station (e.g., NDLS).
Live Schedule Aggregator: Fetches live departure/arrival times, delay status, and platform numbers at both stations.
5. Train Timetable (get_train_timetable)
Fetch the complete scheduled route/timetable of any train.
Full Stops List: Lists every single scheduled stop along the route, showing scheduled arrival/departure times, distance (km), platform number, and live expected arrival/departure times if running.
6. Train Route Map (get_train_route_map)
Get the precise geographic coordinates of a train's entire route.
Station Coordinates: Look up latitude/longitude for every stop on the train's route.
Map Integration: Generates clickable Google Maps links for every station to plot or visualize the path.
7. Trains Approaching Station (Radar) (get_trains_approaching_station)
Get active, live trains physically approaching a station within a specified radius (default 50 km, max 600 km).
Spatial Tracking: Tracks live coordinates of active trains approaching the station.
Smart Filter: Automatically ignores trains that have already departed or are moving away from the station.
8. Train Speed and Tracking Source (get_train_speed)
Get the current speed and GPS tracking information of an active train.
Live Speedometer: Returns speed in km/h.
Locomotive Information: Returns locomotive number and connection status.
Data Freshness and Source: Exposes data source (GPS vs NTES) and data age.
🛠️ Configuration
The server reads configuration from a .env file at the root.
Create a .env file (copied from .env.example):
CACHE_TIME=60
RAIL_API_BASE_URL=https://api.example.comCACHE_TIME: Cache TTL in seconds for API responses.RAIL_API_BASE_URL: The base URL for the rail status API source.
🚀 Installation & Build
Install Dependencies:
npm installBuild the Server:
npm run buildRunning the Server (Locally):
Stdio Mode (Standard MCP):
npx tsx src/server.tsSSE Mode (HTTP Server):
npx tsx src/http-server.tsStreamable Mode (SSE HTTP Server):
npx tsx src/http-streamable.ts
🐳 Docker Deployment
The repository includes a multi-stage Dockerfile and .dockerignore for production deployment.
Build Docker Image:
docker build -t railinfo-mcp .Run Container:
docker run -d --name railinfo-mcp -p 3000:3000 --env-file .env railinfo-mcp
🔌 MCP Client Integration
To integrate this server with Claude Desktop or other MCP clients, add it to your configuration file (e.g., ~/Library/Application Support/Claude/claude_desktop_config.json):
Stdio Transport (Local Node Execution)
{
"mcpServers": {
"railinfo-mcp": {
"command": "node",
"args": ["/path/to/your/project/railinfo-mcp/dist/server.js"],
"env": {
"RAIL_API_BASE_URL": "https://api.example.com",
"CACHE_TIME": "60"
}
}
}
}SSE Transport (HTTP Proxy)
If running the server in SSE mode on a VPS under a domain, connect via:
{
"mcpServers": {
"railinfo-mcp-sse": {
"url": "https://your-domain.com/mcp"
}
}
}🗣️ Sample Prompts
Ask your AI assistant questions using the following formats:
Live Train Status & Coordinates
📌 "Where is train 12302 today?"
📌 "When will train 12357 reach Prayagraj Jn (PRYJ)?"
📌 "Get the route map coordinates for train 12951 starting today."
Train Radar & Crossings
📌 "What trains are crossing or running ahead of train 12302?"
Timetable & Route Lookups
📌 "Show me the full schedule and route timetable of train 12302."
Station boards & Train Search
📌 "Show me upcoming trains at New Delhi (NDLS) in the next 2 hours."
📌 "Find trains running between Kanpur Central (CNB) and New Delhi (NDLS) starting in the next 4 hours."
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/AquibFaiyaz/railinfo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server