rct2-agent
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@rct2-agentCheck the park's finances and recommend the best ride price changes."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
rct2-agent
An MCP server + OpenRCT2 plugin that lets an agent sidecar-manage your park while you play: read the state, act on the business (prices, staff, marketing, loans), see the park (screenshots), and control time. Management only — the agent tunes the business and can recommend building, but never builds.
How it fits together
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 gameThe server runs under Windows node.exe (there is no node in WSL), so both
the server and the plugin sit on the same Windows localhost — no WSL↔Windows
networking involved. The plugin listens (it's intransient, so it stays alive
across park loads); the server dials in and reconnects as needed.
Related MCP server: Roblox Executor MCP
Requirements
OpenRCT2 0.5.4+ (QuickJS engine — needed for Promises/ES2023).
Windows Node.js (found here at
C:\Program Files\nodejs\node.exe).
Build & install
From WSL, using the Windows toolchain:
# 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 copies to
C:\Users\casey\OneDrive\Documents\OpenRCT2\plugin\rct2-agent.plugin.js
(override with RCT2_PLUGIN_DIR).
Wire up the MCP server
A ready-to-use project config is in .mcp.json. In Claude Code, from the project
directory, it will be picked up automatically (approve it when prompted), or add
it explicitly:
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"Run
Launch OpenRCT2 and load a scenario. Confirm the plugin loaded — the in-game console shows
[rct2-agent] listening on 127.0.0.1:7860.Start Claude Code in this folder. The MCP server connects on first tool call.
Ask the agent to manage the park. The core loop is measure → act → wait → measure: read baselines, make changes,
advance_days(7), re-measure.
Tools
Read (eyes): get_park_summary, get_finance_report, list_rides,
get_ride, list_shops, get_guest_overview, sample_guest_thoughts,
list_staff, get_scenario
Act (hands): 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
See (vision): capture_view, capture_ride, find_location
Time: get_clock, set_game_speed, pause, resume, advance_days
Save: snapshot, list_snapshots
Notes on behavior
Money is in plain dollars at the tool boundary; internally OpenRCT2 stores tenths, converted in
src/shared/protocol.ts(MONEY_FACTOR). If a value looks off by 10×, that's the one knob to check.Coordinates in
capture_view/set_staff_patrol/find_locationare in tiles (converted to map units internally).advance_daysunpauses, runs at max speed, and auto-pauses when the target date is reached — then returns the new clock. It blocks until done.Snapshots save to
save/agent/<play>/<label>.park. Restoring is a manual Load in-game — the plugin API can save but not load a park.Writes go through game actions, so the game's own limits apply (e.g. the ride price cap). A rejected action comes back as a tool error.
Dev
npm run typecheck— tsc, no emit.node scripts/smoke.mjs— loads the built plugin into a stubbed game and exercises the handlers over a real socket.node scripts/mcp-smoke.mjs— spawns the built MCP server and drives it with real MCP JSON-RPC against a fake plugin.
Layout
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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceBridges a running OpenRCT2 game to AI agents, enabling them to read park state, optimize parks, and build roller coasters.MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to interact with a running Roblox game client to execute Lua code, inspect scripts, spy on remotes, and more.143216MIT
- AlicenseAqualityBmaintenanceEnables AI agents to execute Lua code, inspect scripts, spy on remotes, and interact with a running Roblox game client through an MCP interface.8221431MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI clients to validate and run Minecraft commands, read chat and tellraw messages, control player movement and GUI, and capture screenshots from within the game, aiding datapack debugging.1MIT
Related MCP Connectors
MCP server exposing the Backtest360 engine API as tools for AI agents.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Machine-readable utilities and datasets for AI agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/caseyjohnsonwv/rct2-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server