RZD Tickets MCP

io.github.ex3litePublished by GitHub account ex3litev0.1.2Updated Oct 27, 2026

Read-only MCP server for RZD trains, cars, seats, adjacent pairs and car photos.

Overview

AI-generated overview

Read-only MCP server that lets an assistant look up RZD (Russian Railways) trains, cars, seats, prices and car photos, and build official booking links.

What you can do
  • Look up stations and get their nodeId and expressCode by name
  • Search trains with prices, car groups and an official RZD link
  • Inspect a train's cars: seats, upper/lower statistics and car photos
  • Filter places by train number, departure window, car type, service class, place kind, adjacent lower+upper pair, side or accessible seats, price and minimum places
  • Build an official RZD checkout link for manual booking and parse RZD search URLs
  • Explain how to read open RZD service class codes
When to use it
Useful when you want an assistant to check RZD train availability, seat layouts and prices, or to find a specific adjacent lower+upper pair, without leaving the chat. It only reads data and hands you an official link, so it suits planning and research rather than booking.
Requirements
Runs locally over stdio, typically via npx with the npm package mcp-rzd-tickets (Node.js required), or from a local build. Network access to RZD endpoints is needed. Optional environment variables: RZD_PROXY_URL for an http, https, socks4 or socks5 proxy, and RZD_TIMEOUT_MS for the request timeout (default 20000). No account or login is used.
Before you install
It queries RZD's private read-only web endpoints with browser-like headers, which RZD may change without notice, so results can break. RZD_PROXY_URL may embed proxy credentials in your client config. It does not log in, book, hold, pay, cancel or change your RZD account; booking is done manually through the official link it returns.

Installation

In SourceWeft

  1. Open RZD Tickets MCP in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[RZD Tickets MCP logo]

RZD Tickets MCP

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Объясняет, как читать открытые коды классов РЖД.

Установка

bash
git clone [email protected]:ex3lite/mcp_rzd_tickets.gitcd mcp_rzd_ticketsnpm installnpm run build

Запуск MCP stdio-сервера:

bash
node dist/mcp.js

Быстрая CLI-проверка:

bash
node dist/cli.js --suggest "Красноярск"node dist/cli.js --origin 2038000 --destination 2054275 --date 2026-07-12 --train 376Ы --require-pair --car-type coupe

Конфиг MCP-клиента

Пакет опубликован в npm как mcp-rzd-tickets, поэтому установка обычно не требует clone/build:

bash
npx -y mcp-rzd-tickets

Claude Code

Глобально для всех проектов:

bash
claude mcp add -s user rzd_tickets -- npx -y mcp-rzd-ticketsclaude mcp list

Только для текущего проекта:

bash
claude mcp add -s project rzd_tickets -- npx -y mcp-rzd-tickets

Codex

bash
codex mcp add rzd_tickets --env RZD_TIMEOUT_MS=20000 -- npx -y mcp-rzd-ticketscodex mcp list

После изменения MCP-конфига уже открытой сессии Codex может понадобиться новый чат или перезапуск, чтобы сервер появился в списке инструментов.

Claude Desktop, Cursor, Windsurf, Cline, Roo Code

Для клиентов с JSON MCP-конфигом используй один и тот же блок:

json
{  "mcpServers": {    "rzd_tickets": {      "command": "npx",      "args": ["-y", "mcp-rzd-tickets"],      "env": {        "RZD_TIMEOUT_MS": "20000"      }    }  }}

Куда вставлять:

КлиентКуда ставить
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json, ключ mcpServers.
Cursor~/.cursor/mcp.json глобально или .cursor/mcp.json в проекте.
WindsurfSettings → Cascade/MCP → Add custom server, затем JSON выше.
ClineMCP Servers → Configure MCP Servers или ~/.cline/mcp.json.
Roo CodeMCP Servers → Edit Global MCP / Edit Project MCP.

Continue

Continue умеет читать JSON MCP config, но его родной формат — YAML block в .continue/mcpServers/rzd-tickets.yaml:

yaml
name: RZD Tickets MCPversion: 0.1.2schema: v1mcpServers:  - name: rzd_tickets    command: npx    args:      - -y      - mcp-rzd-tickets

Локальный checkout

json
{  "mcpServers": {    "rzd_tickets": {      "command": "node",      "args": ["/absolute/path/to/mcp_rzd_tickets/dist/mcp.js"],      "env": {        "RZD_TIMEOUT_MS": "20000"      }    }  }}

Прокси

json
{  "mcpServers": {    "rzd_tickets": {      "command": "npx",      "args": ["-y", "mcp-rzd-tickets"],      "env": {        "RZD_PROXY_URL": "socks5://user:pass@host:1080",        "RZD_TIMEOUT_MS": "20000"      }    }  }}

Прокси не нужен по умолчанию. Если RZD_PROXY_URL не задан, сервер ходит в РЖД напрямую.

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

text
Найди поезд 376Ы Красноярск Пасс — Анзеби на 2026-07-12.Нужна соседняя пара нижнее+верхнее в купе.Боковые и спецместа не учитывать.Если есть совпадение, дай ссылку РЖД для оформления.
text
Через rzd_station_suggest найди коды Анзеби и Красноярск.Потом проверь 2 пассажиров на 2026-07-03 по поезду 097Э.Ищу пару нижнее+верхнее в одном отсеке.

Фильтры

  • 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.

Публикация

Основной путь:

bash
npm publish --access publicmcp-publisher login githubmcp-publisher publish

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 РЖД изменится, ошибка должна быть видна агенту, а не скрыта.

Source: README.md at commit caed034

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.2LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts