Skip to main content
Glama
shin0112

Unity Devloop MCP

by shin0112

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)

server/

Exposes the tools below and forwards calls to the editor

Unity bridge (UPM, Editor-only)

unity-package/

Local HTTP listener on 127.0.0.1 that runs requests on the editor main thread

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

unity_status

—

project path, Unity version, active scene, build target, isCompiling, isPlaying, isPaused

unity_console

limit (default 100), types (log,warning,error,exception,assert,compile-error,compile-warning), clear

recent entries captured by the bridge (stack traces kept for errors/exceptions)

unity_refresh

—

runs AssetDatabase.Refresh (imports external file changes, starts recompilation)

unity_execute_menu

path

runs EditorApplication.ExecuteMenuItem(path)

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-mcp

From a local clone:

cd C:/projects/unity-devloop-mcp && npm install
claude mcp add unity-devloop -- node C:/projects/unity-devloop-mcp/server/index.js

Configuration

Setting

Where

Default

Port

EditorPrefs Shin0112.UnityDevloopMcp.Port (editor) and env UNITY_DEVLOOP_PORT (server) — keep them equal

17890

Request timeout

env UNITY_DEVLOOP_TIMEOUT_MS (server); the bridge waits up to 30 s for the main thread

35000

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_menu can run any menu item. Only connect clients you trust.

License

MIT

Available Tools

4 tools
unity_consoleB

Recent Unity console entries captured by the bridge (logs, warnings, errors, exceptions, compiler messages). Entries before the last script reload are not kept.

NameRequiredDescriptionDefault
clearNoClear the bridge buffer after reading.
limitNoMax entries, newest last. Default 100.
typesNoComma-separated filter: log,warning,error,exception,assert,compile-error,compile-warning. Default all.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_execute_menuB

Execute a Unity Editor menu item by path, e.g. 'Tools/Profiler/Export Capture Stats'.

NameRequiredDescriptionDefault
pathYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden and largely drops it: it says nothing about side effects, whether the menu action can be destructive or save files, whether execution is synchronous, what happens on an invalid path, or how failures surface. Only the example path implies the shape of a valid argument.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with a concrete example; no filler, no repetition of structured fields. Every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with no output schema, the description covers what the parameter is but not the operational contract: return values, error behavior on bad paths, and side-effect risk. Given the tool can trigger arbitrary editor actions, that gap matters more than it would for a read-only sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single `path` string, so the description must compensate. It does partially — the example 'Tools/Profiler/Export Capture Stats' shows the slash-delimited format — but says nothing about case sensitivity, how to discover valid paths, or whether the string is the literal Editor menu label.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Execute a Unity Editor menu item by path') and supplies a concrete example path, so the agent knows exactly what invocation looks like. It does not, however, distinguish this tool from the siblings (unity_status, unity_console, unity_refresh), which are all read-style tools — the description never says this one mutates editor state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, or alternative guidance is given; the only hint is the example menu path. An agent must infer that this is for triggering editor commands that no other tool exposes, and gets no warning about preferring unity_status or unity_console for status/log reads.

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

  1. 4 tool updatesv0.1.0
    • First observedunity_console
    • First observedunity_execute_menu
    • First observedunity_refresh
    • First observedunity_status

TDQS

A3.6/5.0

Scored across 4 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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).

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An 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.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Local Streamable HTTP MCP server exposing Unity Editor inspection, authoring, testing, profiling, play-mode, and build tools.
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables 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.
    338
    MIT