MCP для транспорта Москвы и области

Moscow Transport MCP

MCP-сервер сводит воедино три источника транспорта: Мосгортранс, РНИС Подмосковья и Яндекс Транспорт, со сверкой прогнозов прибытия

  • 0 ★ репозитория
  • Последний коммит
  • MIT
MCP-сервер

Расширенный доступ

Почему такой уровень

  • Запускает Python-сервер, который опрашивает API Мосгортранса, РНИС и Яндекс Транспорта
  • Для Яндекс Транспорта нужны сессионные CSRF-токен и session id, которые вы получаете сами
Все причины и проверки
Российский стек

zavorateam/moscow-transport-mcp

Установка

Ручная установка

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

Установка зависимостей в виртуальном окружении.

Доступ и проверки

Как мы проверяем

Расширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.

  • Запускает Python-сервер, который опрашивает API Мосгортранса, РНИС и Яндекс Транспорта
  • Для Яндекс Транспорта нужны сессионные CSRF-токен и session id, которые вы получаете сами

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

Сервер работает и как MCP по stdio, и как REST API на FastAPI, объединяя данные пассажирского транспорта Москвы и Московской области из трех независимых источников: официального API Мосгортранса stop_v2 и qr-stop с локальным реестром более чем 12 500 остановок, РНИС Московской области с прямым доступом к телеметрии бортов и Яндекс Транспорта через Masstransit API. Восемь инструментов покрывают поиск остановок по названию, координатам или прямоугольной области, живое табло прибытия, точный ETA конкретного автобуса со сверкой источников, поиск бортов на карте по фильтрам вроде кондиционера или низкого пола, детали маршрута, досье борта по госномеру и статус системы. Сервер сам выбирает нужный павильон на остановках с несколькими платформами и сверяет официальное время прибытия с фактическим положением борта, не отбрасывая данные при отсутствии части полей.

Для кого. Для разработчиков транспортных и логистических приложений в Москве и области, которым нужен один надежный источник вместо трех разных API.

Подходит, если

  • Нужно получить живое табло остановки с учетом реального положения автобуса, а не только расписания
  • Нужно искать остановки и автобусы одновременно в Москве и Московской области без переключения между источниками
  • Нужен точный ETA конкретного маршрута со сверкой данных оператора и GPS

Не подходит, если

  • Нужен транспорт за пределами Москвы и Московской области: сервер узко покрывает только этот регион
  • Не хочется настраивать интеграцию с Яндекс Транспортом через сессионные параметры: часть полей .env берется из внутреннего Masstransit API, а не из публичного ключа

Пример запроса к агенту

Покажи живое табло остановки Метромост и скажи, когда реально приедет автобус 110, а не по расписанию

MCP

Транспорт
stdio, http
Авторизация
не нужна

Переменные окружения

STOPS_GEOJSON_PATH обязательная
Путь к локальному реестру остановок Москвы, скачивается скриптом download_stops.sh
RNIS_BASE_URL
Базовый адрес РНИС Московской области
YANDEX_CSRF_TOKEN секрет
Сессионный CSRF-токен для внутреннего Masstransit API Яндекса, опционально
YANDEX_SESSION_ID секрет
Идентификатор сессии для интеграции с Яндекс Транспортом, опционально

Ограничения

Интеграция с Яндекс Транспортом использует внутренний Masstransit API через сессионные параметры (CSRF-токен, session id), а не публичный ключ, эти значения нужно получать и обновлять самостоятельно и они могут протухать. Проект по описанию автора требует доработки: раздел «Перспективы» прямо называет текущую реализацию transport_service.py неэффективной при работе со всеми тремя источниками. Локальный реестр остановок Москвы нужно скачивать отдельным скриптом download_stops.sh.

Как отключить. Удалите сервер из конфигурации MCP клиента и остановите процесс server.py, если он запущен отдельно.

Частые вопросы

Работает ли сервер без интеграции с Яндекс Транспортом?

Да, README указывает эту интеграцию опциональной, остальные два источника, Мосгортранс и РНИС Подмосковья, работают отдельно.

Можно ли использовать как обычный REST API, а не только MCP?

Да, тот же server.py можно запустить флагом --http как FastAPI-сервер с документацией Swagger на /docs.

Обсуждение

Вопросов и отзывов пока нет.

Российский стек

MCP-сервер для Яндекс Карт: прямое и обратное геокодирование и отрисовка статической карты с метками

MCP-серверРасширенный доступ17Звезды репозитория
Российский стек

MCP-сервер для предпроектного анализа участков: границы Росреестра, геокодирование и карты Яндекса, инфраструктура и геометрия

MCP-серверРасширенный доступ4Звезды репозитория
Российский стек

MCP-сервер данных Росреестра и НСПД: объекты недвижимости по кадастровому номеру, GeoJSON-геометрия, пакетные запросы

MCP-серверРасширенный доступ5Звезды репозитория
Российский стек

Удаленный MCP с оплатой за каждый вызов в USDC: проверка компаний по ИНН, поиск по Рунету, отслеживание Почты России, курсы ЦБ и MOEX

MCP-серверШирокий доступ1Звезды репозитория
Российский стек

Монорепозиторий MCP-серверов для Яндекса: Директ, Метрика, Вебмастер, Wordstat, Трекер, 360, Карты, SpeechKit, YandexGPT и AppMetrica

MCP-серверШирокий доступ14Звезды репозитория

Коротко о README

Подробный README на русском описывает архитектуру сверки трех источников с диаграммой, объясняет умный выбор павильона на многосторонних остановках, бесшовное объединение реестров Москвы и области и политику неразрушения данных при отсутствии полей. Дана таблица из восьми инструментов с REST-эндпоинтами, конфигурация .env для всех трех источников, инструкции запуска как MCP и как REST, подключение к Claude Desktop, Cursor и Windsurf, примеры curl-запросов и раздел тестирования с 156 unit-тестами и 36 сквозными сценариями agent_test.py. В конце автор честно указывает на планы переработать transport_service.py. Лицензия MIT.

Бейдж для README

Сообщить о проблеме