uloop-mcp
uloop-mcp
Zero-dependency MCP tools for Unity CLI Loop v3
(the version that removed MCP support in favor of CLI + Skills). This project re-exposes the v3
CLI as MCP tools to any MCP client (Cursor, Claude Code, OpenCode, generic MCP hosts, ...),
including the headline v3 features hot-reload, pause-point, and watches.
Third-party project. Not affiliated with Unity CLI Loop / hatayama.
Why
Unity CLI Loop v3 dropped MCP on purpose; it ships Skills instead. If your agent framework only speaks MCP, there was no way to drive v3 (hot-reload / pause-point) - until now.
The tool list is auto-generated from the live Unity tool catalog (
uloop list), so the MCP schemas always match the installed project/version. No hand-maintained option tables.
Architecture
MCP client (stdio JSON-RPC)
| newline-delimited JSON-RPC 2.0 (no SDK required)
v
server.mjs - MCP server; runs 'uloop list' and maps results to MCP tools
| spawn native 'uloop' (dispatcher)
v
uloop dispatcher - global native CLI (%LOCALAPPDATA%\Programs\uloop\bin\uloop.exe)
| reads .uloop/project-runner-pin.json, downloads matching runner on demand
v
uloop-project-runner -> named pipe -> Unity Editorbridge.mjs (optional, for sandboxed agents)
sandboxed agent --HTTP 127.0.0.1:8787--> bridge.mjs --spawn uloop--> Unityv3 talks to Unity over a Windows named pipe. AI-agent sandboxes (for example the DeepSeek
Harness shell sandbox) block named pipes, so run bridge.mjs outside the sandbox (normal
terminal / startup script) and call it over loopback HTTP - TCP is allowed in those sandboxes.
POST /run { "argv": ["hot-reload", "--status"] }
GET /healthOptional auth: set ULOOP_BRIDGE_TOKEN and send header x-uloop-token.
Requirements
Windows (v3 uses named pipes; macOS/Linux use Unix sockets - only Windows is tested here).
The native uloop dispatcher (v3). npm package
uloop-cliwas discontinued in v3; install the dispatcher with the official installer (runinstall.ps1from the release assets, or use Unity menu: Window > Unity CLI Loop > Settings > Install CLI).A Unity Editor open on a project with the Unity CLI Loop v3 package and its server running.
Node.js >= 18 (for this project; the v3 CLI itself does not need Node).
Usage
set ULOOP_PROJECT_DIR=C:\path\to\unity-project
node server.mjs # stdio MCP server
node smoke.mjs # smoke test (initialize / tools/list / read-only tools/call)Register with an MCP client, e.g. Claude Code:
claude mcp add --scope project uloop -- node C:\path\to\uloop-mcp\server.mjsor any MCP host with: command node, args [server.mjs], env { ULOOP_PROJECT_DIR: "<project>" }.
Configuration
Env var | Default | Meaning |
ULOOP_PROJECT_DIR | process cwd | Unity project directory (uloop working dir) |
ULOOP_CLI | %LOCALAPPDATA%\Programs\uloop\bin\uloop.exe | Dispatcher executable path |
ULOOP_TIMEOUT_MS | 240000 | Per-command timeout |
ULOOP_DEBUG | off | Server logs to stderr |
ULOOP_BRIDGE_PORT | 8787 | bridge.mjs port |
ULOOP_BRIDGE_TOKEN | - | If set, bridge requires x-uloop-token header |
Behavior notes
Every
uloop listentry becomes an MCP tool namedunity_<tool>(kebab-case to snake_case); its input schema is generated from the tool's CLI options (types, defaults, enums).unity_runis an escape hatch for any raw command (native dispatcher commands such asfocus-window,pause-point-status,launch, or tools you do not want typed).Tool results are the CLI's JSON text. Flag values match the CLI (booleans are bare flags).
If the tool list cannot be fetched (Editor not running), only
unity_runis exposed and the error is reported; the server retries automatically.
Limitations
Requires the Unity Editor to be running with the uLoopMCP v3 server active.
Tested on Windows with Unity 6000.3.x / Unity CLI Loop 3.4.x. Other platforms should work via Unix sockets but are not tested.
v2 projects still work: the dispatcher auto-delegates to a matching v2 CLI (needs Node 22).
License
MIT
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/rougebleu/uloop-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server