MCP для транспорта Москвы и области
Moscow Transport MCP
MCP-сервер сводит воедино три источника транспорта: Мосгортранс, РНИС Подмосковья и Яндекс Транспорт, со сверкой прогнозов прибытия
Низкий риск
Низкий уровень ставим, когда запись в основном дает агенту инструкции и справочные материалы.
Почему такой уровень
- Только читает публичные данные транспорта и не выполняет действий от имени пользователя
Установка
Ручная установка
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtУстановка зависимостей в виртуальном окружении.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Сервер работает и как MCP по stdio, и как REST API на FastAPI, объединяя данные пассажирского транспорта Москвы и Московской области из трех независимых источников: официального API Мосгортранса stop_v2 и qr-stop с локальным реестром 12500+ остановок, РНИС Московской области с прямым доступом к телеметрии бортов и Яндекс Транспорта через Masstransit API. Восемь инструментов покрывают поиск остановок по названию, координатам или прямоугольной области, живое табло прибытия, точный ETA конкретного автобуса со сверкой источников, поиск бортов на карте по фильтрам вроде кондиционера или низкого пола, детали маршрута, досье борта по госномеру и статус системы. Сервер сам выбирает нужный павильон на остановках с несколькими платформами и сверяет официальное время прибытия с фактическим положением борта, не отбрасывая данные при отсутствии части полей.
Для кого. Для разработчиков транспортных и логистических приложений в Москве и области, которым нужен один надежный источник вместо трех разных API.
Подходит, если
- Нужно получить живое табло остановки с учетом реального положения автобуса, а не только расписания
- Нужно искать остановки и автобусы одновременно в Москве и Московской области без переключения между источниками
- Нужен точный ETA конкретного маршрута со сверкой данных оператора и GPS
Не подходит, если
- Нужен транспорт за пределами Москвы и Московской области: сервер узко покрывает только этот регион
- Не хочется настраивать интеграцию с Яндекс Транспортом через сессионные параметры: часть полей .env берется из внутреннего Masstransit API, а не из публичного ключа
Пример запроса к агенту
Покажи живое табло остановки Метромост и скажи, когда реально приедет автобус 110, а не по расписаниюОграничения
Интеграция с Яндекс Транспортом использует внутренний Masstransit API через сессионные параметры (CSRF-токен, session id), а не публичный ключ, эти значения нужно получать и обновлять самостоятельно и они могут протухать. Проект по описанию автора требует доработки: раздел «Перспективы» прямо называет текущую реализацию transport_service.py неэффективной при работе со всеми тремя источниками. Локальный реестр остановок Москвы нужно скачивать отдельным скриптом download_stops.sh.
Как отключить. Удалите сервер из конфигурации MCP клиента и остановите процесс server.py, если он запущен отдельно.
MCP
- Транспорт
- stdio, http
- Авторизация
- не нужна
| Переменные окружения | |
|---|---|
| STOPS_GEOJSON_PATH обязательная | Путь к локальному реестру остановок Москвы, скачивается скриптом download_stops.sh |
| RNIS_BASE_URL | Базовый адрес РНИС Московской области |
| YANDEX_CSRF_TOKEN секрет | Сессионный CSRF-токен для внутреннего Masstransit API Яндекса, опционально |
| YANDEX_SESSION_ID секрет | Идентификатор сессии для интеграции с Яндекс Транспортом, опционально |
Проверка безопасности
- Только читает публичные данные транспорта и не выполняет действий от имени пользователя
Коротко о README
Подробный README на русском описывает архитектуру сверки трех источников с диаграммой, объясняет умный выбор павильона на многосторонних остановках, бесшовное объединение реестров Москвы и области и политику неразрушения данных при отсутствии полей. Дана таблица из восьми инструментов с REST-эндпоинтами, конфигурация .env для всех трех источников, инструкции запуска как MCP и как REST, подключение к Claude Desktop, Cursor и Windsurf, примеры curl-запросов и раздел тестирования с 156 unit-тестами и 36 сквозными сценариями agent_test.py. В конце автор честно указывает на планы переработать transport_service.py. Лицензия MIT.
Частые вопросы
Работает ли сервер без интеграции с Яндекс Транспортом?
Да, README указывает эту интеграцию опциональной, остальные два источника, Мосгортранс и РНИС Подмосковья, работают отдельно.
Можно ли использовать как обычный REST API, а не только MCP?
Да, тот же server.py можно запустить флагом --http как FastAPI-сервер с документацией Swagger на /docs.
Похожие
166 скиллов для научных задач: биоинформатика, хемоинформатика, клинические данные, геоданные и доступ к 100+ базам
Открытый MCP-сервер Google для баз данных: готовые инструменты для Postgres, MySQL, BigQuery, Spanner и других, плюс свои инструменты в tools.yaml
Официальные скиллы Hugging Face: работа с Hub через CLI hf, датасеты, обучение моделей, Spaces, оценка и деплой
Язык визуализации для агентов и MCP-сервер: из простой семантической спецификации собираются аккуратные графики