The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the RZD Tickets MCP listing page.
Read-only MCP-сервер, который дает агентам живые “глаза” на ticket.rzd.ru:
поезда, вагоны, цены, нижние/верхние места, боковые места, спецместа, соседние
пары нижнее+верхнее, фото вагонов, когда РЖД их публикует, и официальные
ссылки РЖД для ручного оформления.
Сервер не логинится, не бронирует, не создает холд, не оплачивает, не отменяет заказы и не меняет личный кабинет РЖД.
| Инструмент | Что делает |
|---|---|
rzd_station_suggest | Ищет nodeId и expressCode станции по названию. |
rzd_search_trains | Показывает поезда, цены, группы вагонов и ссылку РЖД. |
rzd_train_cars | Проваливается в CarPricing: вагоны, места, статистика верх/низ, фото. |
rzd_find_places | Возвращает только совпадения по фильтрам, включая фото вагона. |
rzd_checkout_url | Строит официальную ссылку РЖД для ручного оформления. |
rzd_parse_search_url | Разбирает URL поиска РЖД. |
rzd_service_classes | Объясняет, как читать открытые коды классов РЖД. |
Запуск MCP stdio-сервера:
Быстрая CLI-проверка:
Пакет опубликован в npm как mcp-rzd-tickets, поэтому установка обычно не
требует clone/build:
Глобально для всех проектов:
Только для текущего проекта:
После изменения MCP-конфига уже открытой сессии Codex может понадобиться новый чат или перезапуск, чтобы сервер появился в списке инструментов.
Для клиентов с JSON MCP-конфигом используй один и тот же блок:
Куда вставлять:
| Клиент | Куда ставить |
|---|---|
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json, ключ mcpServers. |
| Cursor | ~/.cursor/mcp.json глобально или .cursor/mcp.json в проекте. |
| Windsurf | Settings → Cascade/MCP → Add custom server, затем JSON выше. |
| Cline | MCP Servers → Configure MCP Servers или ~/.cline/mcp.json. |
| Roo Code | MCP Servers → Edit Global MCP / Edit Project MCP. |
Continue умеет читать JSON MCP config, но его родной формат — YAML block в
.continue/mcpServers/rzd-tickets.yaml:
Прокси не нужен по умолчанию. Если RZD_PROXY_URL не задан, сервер ходит в
РЖД напрямую.
trains: точные номера поездов, например ["097Э"].departureFrom / departureTo: окно отправления HH:mm.carType: coupe, platz или сырой тип РЖД.service: сырой код класса РЖД, например 2Ш; список кодов открыт.placeKind: lower, upper, other.requirePair: соседняя пара нижнее+верхнее в одном отсеке.includeSide: учитывать боковые места.includeAccessible: учитывать спецместа для инвалидов/сопровождающих.includeImages: подтягивать галерею вагона, если РЖД вернул HasImages=true; по умолчанию включено в MCP.maxPrice, minPlaces: цена и минимальное количество мест.В rzd_train_cars и rzd_find_places каждый вагон содержит imageInfo.
hasImages: флаг из CarPricing.fetched: удалось ли сходить в endpoint галереи.schemeId, schemeName, carSubType, carrier: идентификаторы схемы/типа вагона из РЖД.images[].thumbnailUrl: миниатюра.images[].contentUrl: полноразмерное фото.unavailableReason / error: почему фото нет или запрос не удался.Важно: у РЖД фото есть не для каждого вагона. Если в CarPricing
HasImages=false, MCP не придумывает картинку и явно пишет причину в
imageInfo.unavailableReason.
Класс обслуживания РЖД не моделируется как enum. Это намеренно.
РЖД может добавлять и менять коды, поэтому сервер отдает агенту:
code: сырой код РЖД, например 2Ш;title: человекочитаемый заголовок из ответа РЖД, типа вагона или общего семейства;tags: факты из официального ServiceClassTranscript и осторожные подсказки;transcript: официальный текст РЖД, если он пришел в CarPricing;description: готовая строка для показа человеку.Агент должен показывать сырой код вместе с description, а точный смысл брать
из transcript, когда он есть. Так не нужно расширять локальный enum каждый
раз, когда РЖД вводит новый вариант.
| Переменная | Описание |
|---|---|
RZD_PROXY_URL | Опциональный http://, https://, socks4:// или socks5:// прокси. |
RZD_TIMEOUT_MS | Таймаут запроса. По умолчанию 20000. |
Основной путь:
server.json уже подготовлен для официального MCP Registry:
io.github.ex3lite/mcp-rzd-tickets. Сам registry хранит metadata, а код должен
лежать в публичном npm-пакете mcp-rzd-tickets.
Дополнительно можно опубликовать на Smithery. Для текущего stdio-сервера нужен MCPB bundle; для URL-публикации на Smithery потребуется отдельный Streamable HTTP endpoint.
RZD может менять приватные web-endpoint без предупреждения. Этот сервер использует те же read-only pricing endpoint, что и публичный web-app, и браузероподобные заголовки. Если payload РЖД изменится, ошибка должна быть видна агенту, а не скрыта.