TrainRouter Atlas
You can use this MCP server to explore the World Train Map atlas through route search, detailed route records, famous-route lists, country listings, night-train listings, European city-pair journey estimates, and atlas coverage stats.
Search every route by free text (name, city, train, operator, country), with optional country/category filters; omit the query to browse all routes by renown.
Fetch a full route record by exact id, including distance, duration, speed, operator, rolling stock, opening year, ridership, story, sights, photo, and URL; unknown ids return close-match suggestions.
List the most famous train routes in renown order.
List all routes crossing a given country, plus that country’s hub URL when available.
List night/sleeper routes, optionally filtered by a city endpoint.
Get city-to-city European journey estimates, including fastest/typical duration, direct service, changes, operators, guide URL, and nearby legendary routes; these are planning estimates, not live times.
Get one-call atlas statistics and browse links.
The server serves facts only, no geometry.
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
World Train Map Atlas — the world's legendary train routes, as open data
1,538 train routes · 120 countries · ≈ 531,400 km of route, every route with its key facts and its line, from worldtrainmap.com, the interactive world railway map.
High-speed spines (Eurostar, TGV, Shinkansen, AVE), classic long-distance runs (Trans-Siberian, California Zephyr), night trains (Nightjet, the Ghan), the scenic lines people fly in just to ride (Glacier Express, Bernina Express, the Jacobite), and the heritage and mountain railways around them.
🗺️ Explore it interactively: worldtrainmap.com
🤖 Use it from an AI assistant: free MCP server at https://worldtrainmap.com/mcp (how to connect), or run it from this repo: npm install && npm start (mcp/)
The site was renamed. It was TrainRouter at
trainrouter.comuntil 11 August 2026 and is now World Train Map atworldtrainmap.com. The old domain redirects path for path, so old links still work, andhttps://trainrouter.com/mcpstill answers directly rather than redirecting, because JSON-RPC clients do not follow redirects. The repository, the Zenodo DOI and the MCP registry name (com.trainrouter/atlas) keep their old identifiers on purpose: renaming them would break more than it would tidy.
Two licences
Since the 8 November 2026 cut (release v1.2.0) the files carry two licences, because the lines and the facts come from different places:
File | What it holds | Licence |
| One row per route, all facts, no geometry | CC BY 4.0, credit World Train Map |
| The same records, with structured country objects | CC BY 4.0, credit World Train Map |
| A | |
| The licence notice for the three files, written by the exporter |
The lines are derived from OpenStreetMap: 1,396 of the 1,538 are drawn node for node from OSM route relations, 26 are snapped onto the OSM rail graph by map matching, and the other 116 have no record of their origin, which is not evidence that they are ours, so they are treated as derived too. The whole GeoJSON is therefore ODbL, including the facts repeated in its properties; the same facts stay CC BY 4.0 in the CSV and JSON. If you only need the facts, use those two files and the ODbL never applies.
Related MCP server: db-fahrplan-mcp
Which version holds what
Where | Routes | Cut | Note |
The live site | 1,538 | 8 November 2026 | worldtrainmap.com, always the newest |
| 1,538 | 8 November 2026 | the same routes as the live site that day |
Zenodo (the citable DOI) | 1,538 | 8 November 2026 | release v1.2.0 |
The MCP server | 1,516 | 7 October 2026 | deployed separately from the site, so it lags it a little; its |
Earlier releases (v1.0.0 and v1.1.0 on 12 July, the 23 July cut of 961 routes) labelled every file CC BY 4.0. The 12 July lines were hand-placed, but the 23 July cut already held a handful of corridors traced from OpenStreetMap (Brenner, Oslo–Göteborg, Oslo–Stockholm, the Pustertalbahn), and those lines were ODbL all along; this release is the first that says so file by file.
Schema
Field | Type | Notes |
| string | Stable slug, e.g. |
| string | Route/service name |
| string | Terminus cities |
| enum |
|
| string | Rolling stock, e.g. |
| string | Operating company |
| number | Route length |
| number|null | Service top speed, where a credible figure exists (1,262 of 1,538 rows) |
| string | Published journey time, e.g. |
| number | Year the line/service entered service |
| number|null | Approx. annual ridership where published, which is rare: 89 of the 1,538 rows carry one |
| string |
|
| string | One-line description of what makes the route notable |
| number | 1 = most famous (the atlas's own renown ranking) |
| string | The route's page on worldtrainmap.com |
Three more properties, in routes.geojson only:
Field | Type | Notes |
| string|null |
|
| string|null |
|
| string |
|
The GeoJSON FeatureCollection also carries license and attribution members, so the credit travels with the file.
Quick start
import pandas as pd
routes = pd.read_csv("data/routes.csv")
routes.nsmallest(10, "fame_rank")[["name", "from", "to", "distance_km"]]
import geopandas as gpd
gdf = gpd.read_file("data/routes.geojson") # ODbL: credit © OpenStreetMap contributors
gdf.plot(column="category", figsize=(16, 8))Sources, accuracy & provenance
Facts are compiled from public references, not from any licensed dataset: operators' own figures, timetables, press material and encyclopaedic articles. A few distance and top-speed figures were measured on OpenStreetMap track instead; they are a small, insubstantial extract of the OpenStreetMap database. Individual facts like these aren't copyrightable; the licence covers the curated compilation.
Geometry began as hand-placed waypoints in July 2026 and has since been redrawn from OpenStreetMap: from route relations where mappers describe the service, and by map matching onto the OSM rail graph where they do not. Each feature says which, where a record exists.
Facts are approximate published values: distance, top speed, journey time, operator, opening year and ridership. Good for exploration and visualization, not operations.
Curated, not exhaustive: the world's notable routes, not every line on earth. Route names and the one-line
highlights are the author's own wording.Deliberately excluded (they live only on the site, to keep provenance clean): per-route stories and sights, photos (Wikimedia Commons, separately licensed), and the city-to-city journey guides (derived from public schedule feeds).
Basemap ≠ data: the interactive site renders these routes over OpenFreeMap (OpenStreetMap) tiles; those tiles are not part of this dataset.
License & attribution
Facts (
data/routes.csv,data/routes.json): CC BY 4.0. Credit World Train Map; a link tohttps://worldtrainmap.com, or to the route page inurl, satisfies it.Lines (
data/routes.geojson): ODbL 1.0, © OpenStreetMap contributors. A database you derive from it and use publicly must be offered under the ODbL too; a map or image made from it needs the credit "© OpenStreetMap contributors". (full notice)Code (the MCP server in
mcp/): MIT.
Also available on
Hugging Face: huggingface.co/datasets/Flightmussy/trainrouter-atlas, the three files of
data/, under the same two licencesKaggle: kaggle.com/datasets/flightmussy/world-train-routes, the two fact files only, because Kaggle allows a dataset one licence label and the lines are ODbL
Zenodo (archived, DOI): doi.org/10.5281/zenodo.21322030, the concept DOI, which always resolves to the latest published release. Zenodo allows one licence label per record, so from v1.2.0 the record is labelled ODbL, which covers the whole archive; the fact files inside it are also CC BY 4.0
Until 24 August 2026 this README and the site linked a Kaggle mirror at kaggle.com/datasets/albanius/.... That account name has never been ours and the link was dead from the day it was written; the mirror above is the real one.
Citing
World Train Map Atlas: the world's legendary train routes (2026). worldtrainmap.com. DOI: 10.5281/zenodo.21322030. https://github.com/Flightmussy/trainrouter-atlas. Route lines © OpenStreetMap contributors, ODbL.
Updating
The files are generated from the atlas source by the site's exporter, which writes routes.csv, routes.json, routes.geojson and data/LICENSE together, so the notice cannot drift from the files. New versions land here first; publishing a GitHub release mints a fresh Zenodo DOI and pushes the mirrors via sync-mirrors.yml, whose jobs each skip themselves when their API token is not configured.
Also in this repo
mcp/— source of the World Train Map MCP server (live athttps://worldtrainmap.com/mcp, listed in the Official MCP Registry ascom.trainrouter/atlas), which serves the atlas as tools for Claude and other MCP clients. It is deployed from the site's own atlas rather than fromdata/, and it serves facts only, no geometry. Itsatlas_statstool reports exactly what it is serving.
Available Tools
7 toolsatlas_statsAtlas coverage statsARead-onlyIdempotentInspect
One-call snapshot of what the World Train Map atlas covers: total route count, countries, combined length in km, the category list, number of city-pair guides, data snapshot date, and direct URLs to the main browse pages (world map, all routes, Europe/USA maps, night trains, scenic, by-country, city-to-city). Takes no parameters. Call it to learn what this server can answer, to cite dataset totals, or to link a browse page — it returns no individual routes; use search_routes or famous_routes for those.
Inputs: no named parameters.
city_pairCity-to-city by trainARead-onlyIdempotentInspect
Journey facts between two cities (European coverage): fastest and typical duration, whether direct trains run, fewest changes, operators and the guide URL — plus legendary atlas routes on that corridor. Direction-insensitive. Figures are sampled from public schedule data, not live times — treat as planning estimates. An uncovered pair returns an error with a search_routes tip.
Inputs: to (required), from (required).
famous_routesMost famous train routesARead-onlyIdempotentInspect
The world's most famous train journeys in World Train Map's renown order (rank 1 = most famous: Trans-Siberian, Glacier Express, Orient Express lineage, Shinkansen…), as compact facts with id and URL per route. Best first call for bucket-list and "greatest train trips" questions; use search_routes to find something specific, get_route for full detail on one route.
Inputs: limit.
get_routeGet one route in fullARead-onlyIdempotentInspect
Full record for one atlas route by exact id: distance, fastest time, top speed, operator, rolling stock, opening year, ridership, story, on-route sights, photo and page URL, plus country-hub links. An unknown id returns up to 5 close-match suggestions instead of failing. Use search_routes first when you only have a name or city.
Inputs: id (required).
night_trainsNight trains / sleepersARead-onlyIdempotentInspect
Sleeper routes from the atlas, sorted by renown — all of them by default, or only those starting or ending in a given city — with the per-city night-train guide URL when one exists. Use for overnight and sleeper questions; city_pair for concrete A-to-B times; search_routes for other route categories.
Inputs: city.
routes_in_countryTrain routes in a countryARead-onlyIdempotentInspect
Every atlas route crossing one country, sorted by renown, plus that country's worldtrainmap.com hub URL when it exists. An unrecognised country returns an error, not an empty list. Use for "trains in X" questions; use search_routes to combine a country with text or category filters, night_trains for sleepers only.
Inputs: country (required).
search_routesSearch train routesARead-onlyIdempotentInspect
Free-text search over every route in the World Train Map atlas — matches route name, cities, train name, operator and countries, with optional category/country filters. Accent-insensitive; every word of the query must match. Returns compact per-route facts with id and worldtrainmap.com URL, sorted by renown with route-name matches first; with no query it lists the whole atlas by renown. Use get_route with a returned id for full detail, famous_routes for a ready-made top list, city_pair for A-to-B journey times.
Inputs: limit, query, country, category.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Each tool has a clearly distinct core purpose (text search, id lookup, curated famous list, country listing, sleeper listing, city-pair lookup, dataset stats). There is mild overlap between the curated lists (famous_routes, night_trains, routes_in_country) and search_routes with filters, but the descriptions explicitly tell the agent when to prefer each. An agent should reliably pick the right tool.
All names use consistent snake_case and are immediately readable. The convention mixes verb-first (search_routes, get_route) with resource-first (famous_routes, night_trains, city_pair, atlas_stats), but the split is predictable enough that it does not impede selection.
Seven tools is well-scoped for a read-only train-atlas server: one search, one detail fetch, three curated browsing views, one corridor lookup and one metadata snapshot. No tool feels redundant or missing at this granularity.
The surface covers the main discovery paths — free-text search, exact detail, famous routes, country browse, sleeper browse, city pairs and dataset stats — which is strong CRUD-equivalent coverage for a read-only atlas. Minor gaps remain (no standalone category-browse tool, no operator/rolling-stock filter, no related-route traversal), but agents can work around them via search_routes filters.
Maintenance
Related MCP Connectors
Read-only MCP server for wafergraph.com's semiconductor & AI supply-chain data: 30 tools, no auth.
Free, read-only MCP subset of x402 Toolbox's cheap data endpoints, free via MCP.
Query OpenStreetMap with Overpass QL, find water and food stops along routes, and check weather at arrival time. Free API key: 500 requests/day, including commercial use. [Setup and examples](https://geo.runningcat.dev/mcp?utm_source=glama&utm_medium=referral&utm_campaign=mcp_directory).
OpenStreetMap Overpass MCP — programmatic queries against the OSM database
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that exposes the Deutsche Bahn public transport API to any MCP-compatible client (Claude Desktop, Cursor, Cline, Continue, etc.). Five tools cover station search, departures, journey planning, trip details, and nearby stations.61MIT
- AlicenseAqualityDmaintenanceAn (unofficial) MCP server for the Deutsche Bahn Timetables API — station search, planned departures, and real-time changes (delays, platform changes, cancellations) as tools for Claude and other MCP clients.42MIT
- AlicenseNot gradedqualityDmaintenanceRead-only MCP server that queries Russian Railways (ticket.rzd.ru) for train schedules, car types, prices, and seat availability. It provides official RZD links for manual booking but does not log in, book, or pay.56 npm2MIT
- AlicenseAqualityBmaintenanceA read-only MCP server for OpenStreetMap offering geocoding, routing, route optimization, isochrones, and POI search—requiring no API key and built for AI travel planning.11972 npm6MIT