rct2-agent
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 gameEl 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 folderinstall: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
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.Inicia Claude Code en esta carpeta. El servidor MCP se conecta en la primera llamada a una herramienta.
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_locationestán en casillas (se convierten internamente a unidades del mapa).advance_daysreanuda 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 testsThis server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for OpenMM — exposes market data, account, trading, and strategy tools to AI agents
- FensoryOAuthcom.fensory
Trading MCP server for AI agents, with live market data, account reads and controlled execution.
MCP server exposing the Backtest360 engine API as tools for AI agents.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceBridges a running OpenRCT2 game to AI agents, enabling them to read park state, optimize parks, and build roller coasters.1MIT
- AlicenseAqualityBmaintenanceEnables 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.8MIT
- AlicenseNot gradedqualityCmaintenanceEnables 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
- AlicenseNot gradedqualityAmaintenanceLets 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 npm15MIT