traintrack-mcp

traintrack-mcp

MCP server for Indian Railways data, enabling AI agents to search trains, get schedules, live status, PNR info, and more without an API key.

Category
Visit Server

README

TrainTrack MCP

An MCP server for TrainTrack that gives AI agents access to Indian Railways train search, schedules, live status, trains between stations, station data, and PNR status.

It uses the MCP stdio transport, requires no API key, and talks to https://traintrack.stupidlabs.lol/ by default. TrainTrack uses unofficial NTES/Indian Railways data, which may occasionally be delayed, incomplete, or unavailable. Confirm time-sensitive journey details through official railway channels.

Requirements

  • Node.js 18 or newer
  • An MCP-compatible client

Installation

After the package is published:

npm install --global traintrack-mcp

To run it directly from a source checkout:

npm install
npm start

MCP client configuration

No environment variables are required for the hosted TrainTrack API.

Claude Desktop, Claude Code, Cline, and compatible clients

Add this to the client's MCP configuration:

{
  "mcpServers": {
    "traintrack": {
      "command": "npx",
      "args": ["-y", "traintrack-mcp"]
    }
  }
}

Codex

Add this to ~/.codex/config.toml:

[mcp_servers.traintrack]
command = "npx"
args = ["-y", "traintrack-mcp"]
tool_timeout_sec = 60

OpenCode

Add this to ~/.config/opencode/opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "traintrack": {
      "type": "local",
      "command": ["npx", "-y", "traintrack-mcp"],
      "enabled": true
    }
  }
}

Configuration

Environment variable Default Description
TRAINTRACK_BASE_URL https://traintrack.stupidlabs.lol TrainTrack deployment to use. http and https URLs are supported, including deployments under a path.
TRAINTRACK_TIMEOUT_MS 30000 Positive request timeout in milliseconds.

For example:

{
  "mcpServers": {
    "traintrack": {
      "command": "npx",
      "args": ["-y", "traintrack-mcp"],
      "env": {
        "TRAINTRACK_BASE_URL": "https://trains.example.com/"
      }
    }
  }
}

Tools

Tool Inputs What it returns
search_trains query Trains matching a name, number, or text
get_train_info train_number Train identity, endpoints, and running instances
get_train_schedule train_number, optional date Scheduled stops, times, running days, and coordinates
get_train_live_status train_number, optional date Live stops, delays, platforms, current reported position, and route geometry
find_trains_between_stations from, to, optional sort Direct trains between two station codes
get_train_exceptions train_number Exceptional service information such as cancellations or diversions
get_pnr_status pnr Booking, passenger, train, and chart status
get_station_coordinates code Bundled station name and coordinates
search_stations query, optional limit Stations matching a name or code
track_trains train_numbers Batched live tracking for up to 10 trains
check_traintrack_health none Public API availability and service status

Dates use DD-MMM-YYYY, for example 26-Jul-2026. Train numbers contain 4–6 digits, station codes contain 1–10 letters or digits, and a PNR contains exactly 10 digits.

Rate limits

TrainTrack applies these default limits per client IP and per endpoint. This MCP server does not add another rate limiter. An upstream 429 response is returned to the MCP client as a tool error with its HTTP status, response details, and X-Request-ID when available.

Operation Default upstream limit
Train search 60/minute
Train information 30/minute
Train schedule 20/minute
Live train status 12/minute
Trains between stations 20/minute
Train exceptions 20/minute
PNR status 2/minute
Station coordinates 120/minute
Station search 120/minute
Batched live tracking 6/minute
Health check 120/minute

The hosted service also protects its railway-data provider from overload, so temporary 502 errors can occur even before a client endpoint limit is reached. Wait briefly before retrying a 429 or 502 response.

Cache and data freshness

Caching happens in TrainTrack, not in this MCP process. The MCP tools return the upstream response unchanged, including its cached field. A response with "cached": true came from an earlier identical request or was shared with a simultaneous identical request; it does not mean the data was just refreshed.

Data Maximum default cache window
Live running status 45 seconds
Train exceptions/service updates 5 minutes
Train information 30 minutes
Current running instance 30 minutes
Trains between stations 30 minutes
Train search 12 hours
Train schedules 12 hours

PNR results are never stored in the result cache. Identical simultaneous PNR requests may still share one in-flight lookup. Treat PNRs as sensitive travel information and avoid putting real values in shared logs, screenshots, or telemetry.

See the hosted TrainTrack API documentation for the full API behavior.

Development

npm install
npm run check
npm test

The project uses ESM throughout and relies on Node's built-in Fetch API.

Author

Nitin Bansal (freakynit)nitinbansal85@gmail.com

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured