关于 RZD Tickets MCP
RZD Tickets MCP 是只读的俄罗斯铁路票务查询 MCP 服务,供 Agent 检索列车、车厢和座位信息。它支持按座位条件筛选并生成官方手动购票链接,但不处理预订或付款。
主要功能
- 01查询站点代码与列车
- 02查看票价、车厢和座位
- 03筛选上下铺及相邻座位
- 04获取车厢照片(如有)
- 05生成官方购票链接
适用场景
- 01按日期和路线查找列车
- 02筛选指定车厢类型和座位
- 03寻找同一隔间的上下铺组合
MCP 相关
通过 MCP stdio 服务向客户端提供只读的 RZD 查询工具;也可用 CLI 进行快速检查。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y mcp-rzd-ticketsRZD_TIMEOUT_MSRequest timeout in milliseconds. Defaults to 20000.RZD_PROXY_URL密钥Optional http, https, socks4 or socks5 proxy URL. Leave empty for direct requests.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
7收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 是 | 车站名称片段,例如 Красноярск 或 Анзеби。 |
详细介绍
RZD Tickets MCP
只读 MCP 服务,为 Agent 提供 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 | 说明如何解读俄罗斯铁路公开的等级代码。 |
安装
git clone [email protected]:ex3lite/mcp_rzd_tickets.git
cd mcp_rzd_tickets
npm install
npm run build
启动 MCP stdio 服务:
node dist/mcp.js
快速 CLI 检查:
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:
npx -y mcp-rzd-tickets
Claude Code
全局应用于所有项目:
claude mcp add -s user rzd_tickets -- npx -y mcp-rzd-tickets
claude mcp list
仅用于当前项目:
claude mcp add -s project rzd_tickets -- npx -y mcp-rzd-tickets
Codex
codex mcp add rzd_tickets --env RZD_TIMEOUT_MS=20000 -- npx -y mcp-rzd-tickets
codex mcp list
修改 MCP 配置后,已打开的 Codex 会话可能需要新建聊天或重启,服务器才会出现在工具列表中。
Claude Desktop、Cursor、Windsurf、Cline、Roo Code
对于使用 JSON MCP 配置的客户端,请使用同一配置块:
{
"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。 |
| 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
Continue 可以读取 JSON MCP config,但其原生格式是 YAML block,文件位于
.continue/mcpServers/rzd-tickets.yaml:
name: RZD Tickets MCP
version: 0.1.2
schema: v1
mcpServers:
- name: rzd_tickets
command: npx
args:
- -y
- mcp-rzd-tickets
本地 checkout
{
"mcpServers": {
"rzd_tickets": {
"command": "node",
"args": ["/absolute/path/to/mcp_rzd_tickets/dist/mcp.js"],
"env": {
"RZD_TIMEOUT_MS": "20000"
}
}
}
}
代理
{
"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,服务会直接连接俄罗斯铁路。
向 Agent 提问示例
Найди поезд 376Ы Красноярск Пасс — Анзеби на 2026-07-12.
Нужна соседняя пара нижнее+верхнее в купе.
Боковые и спецместа не учитывать.
Если есть совпадение, дай ссылку РЖД для оформления.
Через 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. |
Публикация
Основной путь:
npm publish --access public
mcp-publisher login github
mcp-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 РЖД изменится, ошибка должна быть видна агенту, а не скрыта.
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。