World Train Map Atlas — the world's legendary train routes, as open data
MCP serverDev toolsAtlas gives your AI a world railway atlas, so it can answer questions about train travel anywhere. Once added, your AI can point you to notable train routes, find night trains, and tell you how long rail journeys take.
Use World Train Map Atlas — the world's legendary train routes, as open data in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add World Train Map Atlas — the world's legendary train routes, as open data and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use World Train Map Atlas to search routes
No key or account is asked for. Not verified by us yet: Ahel has not run a call through it.
Details
Available today. Use it from your connected AI after setup.
No key or account is asked for. Not verified by us yet: Ahel has not run a call through it.
Add atlas, then ask your AI about train travel, such as which night trains run between two places or how long a rail journey takes.
What your AI can do with it
- Look up notable train routes around the world
- Find night trains between destinations
- Check journey times for rail routes
Install World Train Map Atlas — the world's legendary train routes, as open data
The server’s own address, for the clients that take one directly. Or connect Ahel once and every client you use reads it from one address, with the account kept on Ahel rather than in each client’s config.
Claude Code
claude mcp add --transport http --scope user world-train-map-atlas-the-world 'https://trainrouter.com/mcp'Run it once in your project, then open /mcp to approve any sign-in the server asks for.
Claude Desktop
https://trainrouter.com/mcpAdd a custom connector in Settings, paste this address, and approve the sign-in.
Cursor
cursor://anysphere.cursor-deeplink/mcp/install?name=world-train-map-atlas-the-world&config=eyJ1cmwiOiJodHRwczovL3RyYWlucm91dGVyLmNvbS9tY3AifQ==Open the link and Cursor adds the server at that address.
ChatGPT
https://trainrouter.com/mcpIn Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.
Codex
codex mcp add world-train-map-atlas-the-world --url 'https://trainrouter.com/mcp'Run it once, then sign in with codex mcp login world-train-map-atlas-the-world if the server asks for an account.
From the project's README
As published by flightmussy/trainrouter-atlas in README.md.
961 train routes · 118 countries · ≈ 432,800 km of route, every route with its key facts and its geometry, 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) and the scenic lines people fly in just to ride (Glacier Express, Bernina Express, the Jacobite).
🗺️ 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. Nothing you already had configured has broken. 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.
Which version holds what
Several different route counts are in circulation for this atlas, so here is the honest map of them.
| Where | Routes | Cut | Note |
|---|---|---|---|
| The live site | 1,338 | today | worldtrainmap.com, always the newest |
| The MCP server | 1,247 | 11 August 2026 | deployed separately from the site, so it lags it a little |
data/ in this repo, and Hugging Face | 961 | 23 July 2026 | what you get by cloning or downloading here |
| Zenodo (the citable DOI) | 744 | 12 July 2026 | release v1.1.0, the last tagged one |
Why the download is behind the site, and it is deliberate. Since late July the route geometry has been progressively re-traced from OpenStreetMap railway relations, which makes it a derivative of OSM data under ODbL, while this package is licensed CC BY 4.0 throughout. Publishing a refresh before the licence is split per route would ship a licence violation with our name on it, so the exporter is blocked until that work lands. See Sources, accuracy & provenance below. If you want something fresher than the July cut without waiting, the MCP server is the closest available.
Files
| File | Contents |
|---|---|
data/routes.csv | One row per route, all facts, no geometry |
data/routes.json | Same records with structured country objects |
data/routes.geojson | LineString per route (lon/lat waypoints) plus all facts as properties |
Schema
| Field | Type | Notes |
|---|---|---|
id | string | Stable slug, e.g. glacier-express |
name | string | Route/service name |
from, to | string | Terminus cities |
category | enum | In this cut: high-speed · classic · night · scenic · luxury. The live atlas adds mountain and heritage |
train | string | Rolling stock, e.g. e320 · Class 374 |
operator | string | Operating company |
distance_km | number | Route length |
top_speed_kmh | number | Service top speed |
duration | string | Published journey time, e.g. 2 h 16 min |
opened | number | Year the line/service entered service |
pax_per_year | number|null | Approx. annual ridership where published, which is rare: 80 of the 961 rows carry one |
countries_iso / countries | string | |-separated, in travel order (CSV); structured objects in JSON |
highlight | string | One-line description of what makes the route legendary |
fame_rank | number | 1 = most famous (the atlas's own renown ranking) |
url | string | The route's page. These were written before the rename and still read trainrouter.com, which redirects to the same path on worldtrainmap.com; they will be rewritten in the next release |
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")
gdf.plot(column="category", figsize=(16, 8))
Sources, accuracy & provenance
- Provenance changed in late July 2026 — this section was updated 2026-07-31 to say so. The atlas started fully hand-built, and the facts still are: compiled from public references, not from any licensed dataset, so the CC BY 4.0 licence on the facts is the author's to grant.
- Geometry: hand-traced originally, OSM-traced increasingly. Each route's
LineStringbegan as hand-placed[lon, lat]waypoints following the corridor at map scale. From 23 July 2026 onward, alignments have progressively been re-traced from OpenStreetMap railway ways via Overpass so the lines sit on real track. The files currently indata/are the 23 July refresh: nearly all of their geometry is still the hand-traced kind, but a handful of corridors (Brenner, Oslo–Göteborg, Oslo–Stockholm, Pustertalbahn) are already OSM-traced, and those lines are © OpenStreetMap contributors, ODbL — as any OSM-derived geometry must be. An earlier version of this README said the geometry was "not extracted from OSM or any geodata source"; that was true when written (v1.0, 12 July) and is no longer true, which is why this notice exists. The next release will mark the split per route: facts CC BY 4.0, geometry ODbL. On the live site that re-tracing has since gone much further, which is why the site's routes and this package's routes are no longer the same lines. - Facts are approximate published values: distance, top speed, journey time, operator, opening year and approximate ridership are compiled from public references (operators' own figures, timetables, press material, encyclopaedic articles). Individual facts like these aren't copyrightable; the licence covers the curated compilation. 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. OSM © OpenStreetMap contributors — which, per the provenance note above, now also covers the OSM-traced route lines themselves.
License & attribution
- Facts (every non-geometry field in
data/): CC BY 4.0, free to use, share and adapt, with attribution to World Train Map. A link tohttps://worldtrainmap.com(or the specific route page inurl) satisfies attribution. (full notice) - Geometry (
LineStringcoordinates): hand-traced lines as above (CC BY 4.0); OSM-traced lines © OpenStreetMap contributors, ODbL 1.0. If you reuse the geometry wholesale, treat it as ODbL and credit OpenStreetMap, which is the safe default, and will be made explicit per route in the next release. - Code (the MCP server in
mcp/): MIT.
Also available on
- Hugging Face: huggingface.co/datasets/Flightmussy/trainrouter-atlas, kept byte for byte in step with
data/here - Kaggle: kaggle.com/datasets/flightmussy/world-train-routes, the two fact files only, because Kaggle allows a dataset one licence label and the geometry is part ODbL
- Zenodo (archived, DOI): doi.org/10.5281/zenodo.21322030, the concept DOI, which always resolves to the latest published release (today, v1.1.0)
The Kaggle mirror is new, and it is worth saying why it did not exist before: every earlier version of this README, and the site's own dataset page, linked one at kaggle.com/datasets/albanius/.... That account name has never been ours, and the same wrong id was hard-coded into the mirror-sync workflow, so the link was dead from the day it was written and the automation could not have fixed it. Both are corrected.
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
Updating
The data is generated from the atlas source by an exporter that is currently blocked on purpose, pending the split-licence work described above. That block is why data/ has not moved since 23 July and why the last release is still v1.1.0. Once it is unblocked, new versions land here first, and 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/, so it is well ahead of the files here, though it is redeployed on its own schedule and can sit a little behind the site itself. Itsatlas_statstool reports exactly what it is serving.
Tools it offers (7)
What this server listed when Ahel dialed its public endpoint in Sep 2026, with no key and no account of yours. The names are the server’s own.
search_routesget_routefamous_routesroutes_in_countrynight_trainscity_pairatlas_stats
Signals
- GitHub stars
- 4
- Last commit
- Sep 2026
Advanced
- Delivery
- atlas MCP server → your Ahel connector (mcp.ahel.ai) → your AI.
- Item type
- mcp-server
- Key
com-trainrouter-atlas- Source
- github.com/flightmussy/trainrouter-atlas
- Hosted endpoint
https://trainrouter.com/mcp
github.com/flightmussy/trainrouter-atlas