Unity MCP Server
Enables AI assistants to interact with Unity Editor projects through 68 tools for manipulating scenes, GameObjects, components, transforms, running tests, and accessing project files. Provides live resources for console logs, scene hierarchy, test results, and project file trees.
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 MCP Servercreate a cube GameObject at position (0, 2, 0)"
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 MCP Server
MCP server for the Unity Editor. Lets AI agents like Claude Code inspect, manipulate, test, and screenshot your project.
Highlights
73 tools: scenes, GameObjects, components, prefabs, transforms, tests, reflection + decompilation, C# eval, UI capture
Zero-config clients: one click (or one command) per machine, then every project and editor connects automatically. No ports, no tokens, no per-project config
Multi-editor safe: each open project runs its own server, sessions route to the right one by themselves
MCP resources: console logs, scene hierarchy, test results, project files
Unity 2022.3+ (Unity 6 recommended), Node.js 18+
Related MCP server: Unity MCP Server
Install
Package Manager > + > Add package from git URL:
https://github.com/Singtaa/UnityMCP.gitOr clone / submodule into Packages/com.singtaa.unity-mcp.
Setup (once per machine)
Open the project in Unity. Server auto-starts, launcher deploys to
~/.unity-mcp/stdio.jsWindow > Unity MCP Server, then click Set up Claude Code
Done. Terminal equivalent:
# macOS / Linux
claude mcp add --scope user --transport stdio unity -- node ~/.unity-mcp/stdio.js
# Windows
claude mcp add --scope user --transport stdio unity -- node "%USERPROFILE%\.unity-mcp\stdio.js"Every Claude Code session inside any Unity project now reaches that project's own editor. Multiple editors side by side: each session finds its own. Editor closed or mid-reload: tools return a clear error and recover on their own. Opening the editor mid-session works too: a session started editor-closed registers the tool list immediately (served from a per-project cache) and re-syncs live the moment the editor comes up, no client restart needed.
Under the hood: the editor writes a per-session beacon (Temp/UnityMcp_Endpoint.json, removed on quit, never stale). The launcher resolves the session's project (CLAUDE_PROJECT_DIR, else cwd walk-up, UNITY_MCP_PROJECT overrides both) and proxies MCP to that project's live endpoint, re-reading the beacon on every request. It declares tools.listChanged and watches the beacon: when an editor appears (or a different one takes over the project), it emits list_changed notifications so clients re-fetch the tool and resource lists mid-session. Launcher deployment to ~/.unity-mcp/stdio.js is upgrade-only by LAUNCHER_VERSION, so editors on different package versions never fight over the file.
Other MCP clients: same launcher, or plain HTTP (endpoint + token shown in the window).
Tools
Group | Tools ( |
Scene |
|
GameObject |
|
Component |
|
Transform |
|
Editor |
|
Prefab |
|
Test |
|
Capture |
|
Project & Assets |
|
Reflection |
|
Eval |
|
Bridge |
|
Notable:
unity_eval: compile + run a C# snippet in the editor, no domain reload. Expression form returns its value, statement form usesreturn. Common usings imported, leadingusinglines hoisted. Bundled Roslyn (C# 9 ceiling). First call warms up for a few seconds, then tens of ms per compileunity_capture_panel: renders a UI ToolkitPanelSettingsto PNG offscreen, no scene chrome, works in edit and play mode. Auto-detects the activeUIDocumentunity_assets_find: Project-window query syntax (t:Material,t:Prefab ui,l:MyLabel), optional folder scoping, capped results with total countunity_reflection_decompile: full C# source of any loaded type or methodunity_test_run/unity_test_run_sync:resultsPathwrites the NUnit XMLunity test --outputproduces; anassemblyFilterorcategoryFilternaming nothing in the chosen mode is refused (no_match) rather than reported as a pass, and a finished run that ran no test reportscompleted_emptyas an error.testModeiseditmodeorplaymode: start one run of each to cover both, since a combined run executes EditMode onlyunity_bridge_pinganswers from a background thread,unity_bridge_mainthread_pingonly when the main-thread dispatcher runs: the pair tells a starved or blocked editor apart from a dead bridgeQuirks: wait ~1s after a domain reload before test tools;
unity_capture_game_viewis play-mode-only on Unity 6.3+
Resources
unity://console/logs · unity://hierarchy · unity://hierarchy/{sceneName} · unity://tests/results · unity://project/files · unity://project/files/{path}
Configuration
ProjectSettings/McpSettings.json (meant to be committed): HTTP port 5173, IPC port 52100, auto-start, auth token.
Ports taken by another project's server? A free pair is auto-allocated and stored per-machine in UserSettings/McpPortOverride.json (gitignored), so port shuffles never reach the team. Project identity is validated on every bridge connection: an editor can never adopt another project's server, even with misconfigured ports.
Manual server start: node src/server.js with MCP_PROJECT_ROOT set to the project path.
A server the editor starts logs to Logs/UnityMcpServer.log in the project, rewritten each time it starts. One started by hand logs to its console.
Works with Unity CLI
Complementary, not competing:
Unity CLI owns editor lifecycle: installs,
unity open, builds, CIUnityMCP owns the live editor session: UI capture, decompilation, eval, test loops, zero-config routing
Typical agent loop:
unity open <project>via CLI, editor boots, server + beacon come up, launcher connects. No config on either sideCLI-launched editors run unfocused / in the background. UnityMCP is built and tested for exactly that (background-safe startup, retry through domain reloads)
No port or tool-name conflicts, but one entry name: Unity's
unity mcp configure claude(orcodex) writes its ownunityentry over this package's. Register the launcher again after running it
Architecture
┌─────────────────────────────────────────────────────────────┐
│ AI Assistant │
├──────────────────────────────┬──────────────────────────────┤
│ stdio launcher │ (or direct HTTP clients) │
│ ~/.unity-mcp/stdio.js │ │
│ resolves the session's │ │
│ project, reads its beacon │ │
│ Temp/UnityMcp_Endpoint.json │ │
├──────────────────────────────┴──────────────────────────────┤
│ HTTP JSON-RPC (Port 5173, per project) │
├─────────────────────────────────────────────────────────────┤
│ Node.js MCP Server (Server~/) │
├─────────────────────────────────────────────────────────────┤
│ TCP NDJSON (Port 52100) │
├─────────────────────────────────────────────────────────────┤
│ Unity Editor C# Bridge │
│ (McpBridge → ToolRegistry → MainThreadDispatcher) │
├─────────────────────────────────────────────────────────────┤
│ Unity APIs │
└─────────────────────────────────────────────────────────────┘Each open project runs its own Node server. The launcher is the shared front door that routes every session to the right one.
Development
Unity tests: Window > General > Test Runner (EditMode + PlayMode)
Launcher and server tests:
npm testinServer~/Changelog: CHANGELOG.md
License
MIT. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Build, validate, and deploy multi-agent AI solutions from any AI environment.
Discover AI tools for game development — 100+ tools indexed by engine, task, and pricing.
Image and video AI tools and your own pipelines, run from any AI assistant.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to query and control the Unity Editor, supporting scene management, GameObject manipulation, asset browsing, play mode control, and real-time editor operations through 52+ tools.1MIT
- AlicenseCqualityBmaintenanceIntegrates AI assistants with the Unity Editor for scene manipulation, asset management, and testing, plus Unity documentation search via RAG.8430 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Unity Editor, managing scenes, game objects, animations, materials, scripts, and more via natural language commands.1MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to control and automate the Unity Editor, allowing them to build games and scenes from natural language commands.1MIT