Unity Devloop MCP
Provides tools for interacting with the Unity Editor's edit → compile → check loop: reading editor status (project path, Unity version, active scene, build target, compiling/playing/paused state), retrieving console entries including compiler errors and warnings with stack traces, triggering AssetDatabase.Refresh to import external file changes and start recompilation, and executing editor menu items by path. Works via a local-only editor bridge that runs requests on the main thread.
Click on "Deploy 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., "@Unity Devloop MCPrefresh the assets and show me any compile errors"
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.
unity-devloop-mcp
MCP server for the Unity edit → compile → check loop. An AI client (Claude Code, etc.) can read the editor state and console/compiler errors, trigger an asset refresh after editing scripts outside Unity, and run menu items — without you copying console output by hand.
Two parts:
Part | Path | Role |
MCP server (Node, stdio) |
| Exposes the tools below and forwards calls to the editor |
Unity bridge (UPM, Editor-only) |
| Local HTTP listener on |
The bridge listens only on 127.0.0.1 and only while the editor is open. Nothing is included in player builds.
Tools
Tool | Input | Result |
| — | project path, Unity version, active scene, build target, |
|
| recent entries captured by the bridge (stack traces kept for errors/exceptions) |
| — | runs |
|
| runs |
Console capture starts when the bridge loads, so entries from before the last script reload are not kept. Compiler errors are captured from CompilationPipeline and survive a failed compile (no reload happens on failure).
Related MCP server: ach-mcp
Install
1. Unity package
Add to Packages/manifest.json:
"com.shin0112.unity-devloop-mcp": "https://github.com/shin0112/unity-devloop-mcp.git?path=/unity-package"or, for a local clone:
"com.shin0112.unity-devloop-mcp": "file:C:/projects/unity-devloop-mcp/unity-package"Menu: Tools > Unity Devloop MCP > Status / Enable Bridge / Disable Bridge.
2. MCP server (Claude Code)
From GitHub:
claude mcp add unity-devloop -- npx -y github:shin0112/unity-devloop-mcpFrom a local clone:
cd C:/projects/unity-devloop-mcp && npm install
claude mcp add unity-devloop -- node C:/projects/unity-devloop-mcp/server/index.jsConfiguration
Setting | Where | Default |
Port | EditorPrefs |
|
Request timeout | env |
|
Notes
Requests run on the editor main thread via
EditorApplication.update. If the editor is unfocused and throttles updates, calls may be slow or time out.During a script reload the bridge restarts; calls fail briefly with "not reachable".
unity_execute_menucan run any menu item. Only connect clients you trust.
License
MIT
Available Tools
4 toolsunity_consoleB
Recent Unity console entries captured by the bridge (logs, warnings, errors, exceptions, compiler messages). Entries before the last script reload are not kept.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | Clear the bridge buffer after reading. | |
| limit | No | Max entries, newest last. Default 100. | |
| types | No | Comma-separated filter: log,warning,error,exception,assert,compile-error,compile-warning. Default all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one genuinely useful behavioral trait: entries before the last script reload are dropped, so the buffer is volatile and truncated. It does not say the call is otherwise a safe read, does not flag that the clear option destroys the buffer, and says nothing about volume limits or ordering. Partial behavioral coverage for an annotation-free tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both load-bearing, with the resource identity front-loaded and the retention caveat immediately after. Nothing is redundant with the schema and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-optional-parameter read tool with a fully documented schema and no output schema, the description covers what the data is and its retention lifetime. The remaining gap is the destructive side effect of clear and the absence of any routing to sibling tools, which slightly undersells the tool set as a whole.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – clear, limit (with bounds and default), and types (with the full enumeration of filter tokens) are all documented in the schema. The description adds no parameter-level meaning beyond that, so the baseline of 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (recent Unity console entries captured by the bridge) and enumerates the entry kinds it contains, so an agent knows exactly what it returns. It is a noun-phrase resource description rather than a verb+resource statement, and it draws no boundary against the sibling tools (unity_status, unity_refresh), so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Nothing states when to call this versus unity_status or the other siblings, and no prerequisites or exclusions are given. The agent can infer 'use this to read console output,' but that inference comes entirely from the noun phrase, not from guidance in the text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unity_refreshA
Run AssetDatabase.Refresh so file changes made outside the editor are imported and scripts recompile.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the important side effects — asset import and script recompilation — which tells the agent this is a mutating, potentially disruptive action. However, it omits whether the call blocks until recompilation finishes, how long it may take, or that a domain reload can interrupt subsequent calls, which matter for sequencing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and then explains the effect. No filler, nothing redundant, and it fits the triviality of a zero-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output tool this is close to complete: the agent knows what it does and when to call it. The only missing piece is timing/blocking behavior, which matters because a recompile can invalidate subsequent tool calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to clarify; baseline 4 applies. The description correctly implies no input is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific mechanism (AssetDatabase.Refresh) and its concrete outcome (external file changes imported, scripts recompiled), which is far more precise than a generic 'refresh'. It does not explicitly contrast with the sibling tools (unity_status, unity_console, unity_execute_menu), but the operation is unambiguous enough that confusion is unlikely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear triggering condition: use it when files changed outside the editor. It does not state when not to use it, nor mention that unity_execute_menu could invoke equivalent menu items, so no explicit alternative routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unity_statusB
Editor state: project path, Unity version, compiling, play mode, active scene, build target.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the concrete data items exposed (project path, Unity version, play mode, build target), which is useful behavioral content, but it never states that the call is side-effect free, how expensive it is, or whether values reflect live vs. cached state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the key information front-loaded ('Editor state:'). Zero waste, but the fragmentary construction sacrifices a little clarity for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description is effectively the only documentation of return values, and it enumerates them adequately. For a zero-param read tool this is close to sufficient, missing only whether the result is a snapshot object and how the fields are formatted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The description's field enumeration instead usefully documents the shape of the result, though it stops short of describing each field's type or format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (editor state) and enumerates the specific fields returned, which lets an agent distinguish this from siblings like unity_console or unity_execute_menu. However, it is a noun-phrase fragment with no verb, so 'what the tool does' (return/read current state) is only implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to call this versus alternatives such as unity_refresh or unity_console, nor any prerequisite or follow-up guidance. The agent must infer that this is the read-only inspection call from the field list alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.1.0- First observed
unity_console - First observed
unity_execute_menu - First observed
unity_refresh - First observed
unity_status
TDQS
Scored across 4 tools
Each tool targets a clearly distinct concern: reading editor state, reading console output, executing a menu action, and refreshing assets. There is no realistic confusion between them, as names and descriptions point to different resources and actions.
All tools share a consistent 'unity_' prefix, but the remainder mixes nouns (status, console) with verb phrases (execute_menu, refresh). It is still highly readable and predictable overall.
Four tools is a focused, reasonable scope for a lightweight editor bridge, though it sits at the thin end and could plausibly include one or two more operations (e.g., play mode control, test running).
The core dev loop is covered: inspect state, read console diagnostics, refresh/import external changes, and run arbitrary menu items as an escape hatch. Direct play mode toggle or test execution would round it out, but the menu escape hatch mitigates most gaps.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Control Unreal Engine to browse assets, import content, and manage levels and sequences. Automate…
Drive real devices from your AI Coding tool. Embed a client SDK (Unity, Godot, Flutter, iOS/macOS, Android, React Native, Web) in your app, then capture screenshots, traverse the UI tree, inject taps and key events, and run automated test tasks on the physical device over a secure relay.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceUnity Editor automation bridge for AI agents and MCP clients, enabling inspection, control, and diagnostics of the Editor.MIT
- FlicenseNot gradedqualityDmaintenanceAn in-editor MCP server that exposes Unity convenience tools to AI assistants, allowing them to read console logs, execute menu items, dump scene hierarchies, and take screenshots.-
- FlicenseNot gradedqualityBmaintenanceLocal Streamable HTTP MCP server exposing Unity Editor inspection, authoring, testing, profiling, play-mode, and build tools.-
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to drive the Unity Editor directly over HTTP, including scene and asset editing, diagnostics, play mode control, code execution, input simulation, and builds, with no separate MCP server process.338MIT