Skip to main content
Glama

rct2-agent

MCP-сервер и плагин OpenRCT2, который позволяет агенту sidecar-управлять вашим парком, пока вы играете: читать состояние, влиять на бизнес (цены, персонал, маркетинг, кредиты), видеть парк (скриншоты) и управлять временем. Только управление — агент настраивает бизнес и может рекомендовать строительство, но никогда не строит.

Как это устроено

Claude Code (WSL)
      │ stdio (MCP)
      ▼
MCP server  ── dist/server.mjs, run by Windows node.exe
      │ TCP 127.0.0.1:7860  (newline-delimited JSON)
      ▼
Plugin (intransient) ── loaded inside OpenRCT2, LISTENS on the port
      │
      ▼
   OpenRCT2 game

Сервер работает под Windows-node.exe (в WSL node нет), поэтому и сервер, и плагин находятся на одном Windows localhost — никакой сети WSL↔Windows не задействуется. Плагин слушает порт (он долгоживущий, поэтому остаётся активным между загрузками парков); сервер подключается и переподключается по мере необходимости.

Related MCP server: LÖVE2D MCP Server

Требования

  • OpenRCT2 0.5.4+ (движок QuickJS — нужен для Promises/ES2023).

  • Windows Node.js (здесь он находится по пути C:\Program Files\nodejs\node.exe).

Сборка и установка

Из WSL, используя Windows-тулчейн:

# helper wrappers (or just call node.exe / npm-cli.js directly)
NODE="/mnt/c/Program Files/nodejs/node.exe"
NPM=("$NODE" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js")

"${NPM[@]}" install
"${NPM[@]}" run build          # builds dist/rct2-agent.plugin.js + dist/server.mjs
"${NPM[@]}" run install:plugin # copies the plugin into your OpenRCT2 plugin folder

install:plugin копирует плагин по пути C:\Users\casey\OneDrive\Documents\OpenRCT2\plugin\rct2-agent.plugin.js (путь переопределяется через RCT2_PLUGIN_DIR).

Подключаем MCP-сервер

Готовый конфиг проекта находится в .mcp.json. В Claude Code при запуске из каталога проекта он будет подхвачен автоматически (подтвердите при запросе), либо добавьте его вручную:

claude mcp add rct2-agent --scope project \
  -- "/mnt/c/Program Files/nodejs/node.exe" \
     "C:\\Users\\casey\\OneDrive\\Desktop\\dead code projects\\rct2-agent\\dist\\server.mjs"

Запуск

  1. Запустите OpenRCT2: и загрузите сценарий. Проверьте, что плагин загрузился — внутриигровая консоль покажет [rct2-agent] listening on 127:0.0.1:7860.

  2. Запустите Claude Code в этой папке. MCP-сервер подключится при первом вызове инструмента.

  3. Попросите агента управлять парком. Основной цикл — замер → действие → ожидание → замер: считать базовые показатели, внести изменения, вызвать advance_days(7), замерить заново.

Инструменты

Чтение (глаза): get_park_summary, get_finance_report, list_rides, get_ride, list_shops, get_guest_overview, sample_guest_thoughts, list_staff, get_scenario

Действия (руки): set_ride_price, set_shop_price, set_park_entry_fee, open_ride, close_ride, set_inspection_interval, start_marketing_campaign, set_research_funding, hire_staff, fire_staff, set_staff_patrol, set_loan

Смотреть (зрение): capture_view, capture_ride, find_location

Время: get_clock, set_game_speed, pause, resume, advance_days

Сохранение: snapshot, list_snapshots

Замечания о поведении

  • Деньги на границе инструментов передаются в обычных долларах; внутри OpenRCT2 хранит десятые, преобразование выполняется в src/shared/protocol.ts (MONEY_FACTOR). Если значение отличается в 10 раз — это единственное место, которое стоит проверить.

  • Координаты в capture_view / set_staff_patrol / find_location задаются в тайлах (внутри преобразуются в единицы карты).

  • advance_days снимает паузу, запускает на максимальной скорости и автоматически ставит паузу, когда целевая дата достигнута — а затем возвращает новое время. Он блокирует выполнение, пока не закончит.

  • Снапшоты сохраняются в save/agent/<play>/<label>.park. Восстановление — это ручная загрузка в игре: API плагина умеет сохранять, но не загружать парк.

  • Изменения проходят через игровые действия: поэтому действуют собственные ограничения игры (например, максимальная цена аттракциона). Отклонённое действие возвращается как ошибка инструмента.

Разработка

  • npm run typecheck — tsc, без генерации кода.

  • node scripts/smoke.mjs — загружает собранный плагин в заглушку игры и прогоняет обработчики через реальный сокет.

  • node scripts/mcp-smoke.mjs — запускает собранный MCP-сервер и управляет им с помощью реального MCP JSON-RPC против фейкового плагина.

Структура

src/shared/protocol.ts   wire protocol + money conversion + method names
src/plugin/main.ts       the intransient in-game plugin (TCP listener + handlers)
src/server/rct-client.ts reconnecting TCP client to the plugin
src/server/index.ts      MCP server: tool definitions -> plugin methods
esbuild.mjs              builds both bundles
scripts/                 install + smoke tests

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to interact with running games in real time — introspecting game state, simulating keyboard and mouse input to actually play, capturing screenshots, executing Lua code, hot-reloading files, and receiving push notifications when state changes.
    8
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents and streamers to monitor and control Oxygen Not Included gameplay through MCP, including world editing, colony alerts, building orders, navigation, dupe management, and game speed control.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Lets AI agents build, run and live-test FiveM servers by sending server and client console commands over RCON and devcon, driving the game window with keyboard, mouse and screenshot automation, and invoking in-game natives, exports and NUI callbacks through a companion bridge resource.
    79 npm
    15
    MIT