Skip to main content
Glama

rct2-agent

Un servidor MCP + plugin para OpenRCT2 que permite a un agente gestionar tu parque en modo sidecar mientras juegas: leer el estado, actuar sobre el negocio (precios, personal, marketing, préstamos), ver el parque (capturas de pantalla) y controlar el tiempo. Solo gestión: el agente ajusta el negocio y puede recomendar construcción, pero nunca construye.

Cómo encaja

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

El servidor se ejecuta en Windows con node.exe (no hay node en WSL), así que tanto el servidor como el plugin están en el mismo localhost de Windows — sin red WSL↔Windows de por medio. El plugin se queda a la escucha (es intransitorio, por lo que sigue activo al cargar partidas); el servidor se conecta y reconecta cuando es necesario.

Related MCP server: LÖVE2D MCP Server

Requisitos

  • OpenRCT2 0.5.4+ (motor QuickJS — necesario para Promises/ES2023).

  • Node.js para Windows (se encuentra en C:\Program Files\nodejs\node.exe).

Compilación e instalación

Desde WSL, con la cadena de herramientas de 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 copia a C:\Users\casey\OneDrive\Documents\OpenRCT\plugin\archivo-rct2-agent.plugin.js (se puede sobrescribir con RCT2_PLUGIN_DIR).

Configurar el servidor MCP

Hay una configuración de proyecto lista para usar en .mcp.json. En Claude Code, desde el directorio del proyecto, se detectará automáticamente (acéptala cuando se te pida), o añádela manualmente:

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"

Ejecución

  1. Inicia OpenRCT2 y carga un escenario. Confirma que el plugin se ha cargado: la consola del juego muestra [rct-2-agent] listening on 127.0.0.1:7860.

  2. Inicia Claude Code en esta carpeta. El servidor MCP se conecta en la primera llamada a una herramienta.

  3. Pide al agente que gestione el parque. El bucle principal es medir → actuar → esperar → medir: lee los valores iniciales, haz cambios, ejecuta advance_days(7) y vuelve a medir.

Herramientas

Leer (ojos): get_park_summary, get_finance_report, list_rides, get_ride, list_shops, get_guest_overview, sample_guest_thoughts, list_staff, get_scenario

Actuar (manos): 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

Ver (visión): capture_view, capture_ride, find_location

Tiempo: get_clock, set_game_speed, pause, resume, advance_days

Guardar: snapshot, list_snapshots

Notas sobre el comportamiento

  • Dinero: en la interfaz de herramientas se expresa en dólares normales; internamente OpenRCT2 almacena décimos, convertidos en src/shared/protocol.ts (MONEY_FACTOR). Si un valor parece desviado por 10×, ese es el único ajuste que debes comprobar.

  • Coordenadas: en capture_view / set_staff_patrol / find_location están en casillas (se convierten internamente a unidades del mapa).

  • advance_days reanuda la partida, corre a máxima velocidad y la pausa automáticamente al alcanzar la fecha objetivo; después devuelve el nuevo reloj. La llamada no termina hasta que finaliza.

  • Snapshots: se guardan en save/agent/<partida>/<etiqueta>.park. La restauración es una carga manual dentro del juego: la API del plugin puede guardar, pero no cargar, un parque.

  • Las escrituras pasan por las acciones del juego, así que se aplican los límites del propio juego (por ejemplo, el precio máximo de las atracciones). Una acción rechazada vuelve como error de herramienta.

Desarrollo

  • npm run typecheck — tsc, sin emisión.

  • node scripts/smoke.mjs — carga el plugin compilado en un juego simulado y ejercita los controladores mediante un socket real.

  • node scripts/mcp-smoke.mjs — lanza el servidor MCP compilado y lo maneja con MCP JSON-RPC real contra un plugin falso.

Estructura del proyecto

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