RZD Tickets MCP

io.github.ex3lite由 GitHub 账号 ex3lite 发布v0.1.2更新于 Oct 27, 2026

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

概览

AI 生成的概览

只读 MCP 服务器,让助手查询俄罗斯铁路(RZD)的列车、车厢、座位、价格和车厢照片,并生成官方购票链接。

可以做什么
  • 按名称查找车站,返回 nodeId 和 expressCode
  • 搜索列车,显示价格、车厢分组和 RZD 官方链接
  • 查看某趟列车的车厢:座位、上/下铺统计和车厢照片
  • 按车次、发车时段、车厢类型、服务等级、座位类型、相邻下铺+上铺、侧铺或无障碍座位、价格和最少座位数筛选座位
  • 生成 RZD 官方下单链接供手动购票,并解析 RZD 搜索链接
  • 解释如何阅读 RZD 公开的服务等级代码
适用场景
适合让助手在不离开对话的情况下查询 RZD 车次余票、座位布局和价格,或寻找特定的相邻下铺+上铺组合。它只读取数据并给出官方链接,适合出行规划和调研,而非直接订票。
运行要求
以 stdio 方式在本机运行,通常通过 npx 使用 npm 包 mcp-rzd-tickets(需要 Node.js),也可从本地构建运行。需要能访问 RZD 的网络端点。可选环境变量:RZD_PROXY_URL 指定 http、https、socks4 或 socks5 代理,RZD_TIMEOUT_MS 设置请求超时(默认 20000)。无需账号或登录。
安装前请注意
它使用浏览器式请求头访问 RZD 的私有只读网页端点,RZD 可能随时更改,结果可能失效。RZD_PROXY_URL 可能包含代理凭据并写入客户端配置。它不会登录、订票、占座、付款、取消或修改你的 RZD 账户;订票需通过它返回的官方链接手动完成。

安装

在 SourceWeft 中

  1. 打开 控制台中的 RZD Tickets MCP,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

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

来源:README.md,提交 caed034

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.2最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分