Moscow Transport MCP

An MCP server that fuses three transit sources, Mosgortrans, the Moscow region RNIS system and Yandex Transport, reconciling arrival predictions

MCP server

Low risk

We rate an entry low when it mostly gives the agent instructions and reference material.

Why this level

  • Only reads public transit data and performs no actions on the user's behalf
All reasons and checks
Russian stack

zavorateam/moscow-transport-mcp

Install

Manual install

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Install dependencies in a virtual environment.

This is third-party code. Review the repository files before installing.

What it does

The server works both as an MCP over stdio and as a FastAPI REST API, combining Moscow and Moscow region passenger transit data from three independent sources: the official Mosgortrans stop_v2 and qr-stop API with a local registry of over 12,500 stops, the Moscow region's RNIS system with direct access to vehicle telemetry, and Yandex Transport via its Masstransit API. Eight tools cover searching stops by name, coordinates or bounding box, live arrival boards, precise ETA for a specific bus with source reconciliation, searching vehicles on the map by filters like air conditioning or low floor, route details, a vehicle dossier by plate number, and system status. The server picks the correct platform at multi-platform stops and reconciles official arrival times against a vehicle's actual position, without dropping data when some fields are missing.

Who it is for. For developers of transit and logistics apps in Moscow and the region who want one reliable source instead of juggling three different APIs.

Good fit when

  • You need a live stop board that accounts for a bus's actual position, not just the schedule
  • You need to search stops and buses across both Moscow and the region without switching sources
  • You need a precise ETA for a specific route with operator data reconciled against GPS

Not a fit when

  • You need transit outside Moscow and the Moscow region: the server narrowly covers just this area
  • You do not want to configure the Yandex Transport integration via session parameters: some .env fields come from the internal Masstransit API rather than a public key

Example request

Show me the live board for the Metromost stop and tell me when bus 110 will actually arrive, not just per schedule

Limitations

The Yandex Transport integration uses the internal Masstransit API via session parameters (a CSRF token, session id) rather than a public key; these values must be obtained and refreshed manually and can expire. Per the author's own notes, the project needs further work: the Roadmap section explicitly calls the current transport_service.py implementation inefficient across all three sources. The local Moscow stop registry must be downloaded separately with the download_stops.sh script.

How to disable. Remove the server from your MCP client config and stop the server.py process if it runs separately.

MCP

Transport
stdio, http
Authentication
not required
Environment variables
Environment variables
STOPS_GEOJSON_PATH
required
Path to the local Moscow stop registry, downloaded via download_stops.sh
RNIS_BASE_URL
Base URL for the Moscow region RNIS system
YANDEX_CSRF_TOKEN
secret
Session CSRF token for Yandex's internal Masstransit API, optional
YANDEX_SESSION_ID
secret
Session identifier for the Yandex Transport integration, optional

Security check

  • Only reads public transit data and performs no actions on the user's behalf

README in short

The detailed Russian README describes the three-source reconciliation architecture with a diagram, explains smart platform selection at multi-platform stops, seamless merging of Moscow and region registries, and a non-destructive data policy when fields are missing. It gives a table of eight tools with REST endpoints, .env configuration for all three sources, run instructions as MCP and as REST, setup for Claude Desktop, Cursor and Windsurf, curl examples, and a testing section with 156 unit tests and 36 end-to-end scenarios via agent_test.py. It ends with the author honestly noting plans to rework transport_service.py. MIT license.

FAQ

Does the server work without the Yandex Transport integration?

Yes, the README marks that integration optional; the other two sources, Mosgortrans and the Moscow region RNIS, work independently.

Can it be used as a plain REST API instead of just MCP?

Yes, the same server.py can run with the --http flag as a FastAPI server with Swagger docs at /docs.

Editors’ pick

166 skills for scientific work: bioinformatics, cheminformatics, clinical data, geospatial analysis and 100+ databases

SkillMedium risk47KRepository stars
Official

Google's open-source MCP server for databases: ready tools for Postgres, MySQL, BigQuery, Spanner and more, plus custom tools in tools.yaml

MCP serverHigh risk16.5KRepository stars
Editors’ pick

Official Hugging Face skills: Hub operations via the hf CLI, datasets, model training, Spaces, evals and deployment

SkillHigh risk11.1KRepository stars
Official

A visualization language for agents and an MCP server: neat charts from a simple semantic spec

MCP serverMedium riskNo VPN needed4.3KRepository stars
Foxx AIMoscow Transport MCP

I am Foxx AI and I have already vetted this tool. Ask about install, setup or anything else, and I will keep it simple.