There is no single best Unity MCP; your editor version and where the AI has to run decide it. The Coplay Unity MCP server, published as MCP for Unity, is the one to start with on an older editor or when you want many small tools to choose from. IvanMurzak’s Unity-MCP is the one to take when the AI has to live inside your built game. CoderGamester’s mcp-unity is the plainest of the three, a fixed list of 33 tools.
Expect to mix up the names. Coplay calls theirs “MCP for Unity”, IvanMurzak’s README calls it “Unity MCP”, and CoderGamester’s is “MCP Unity”.
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| Unity-MCPIvanMurzak/Unity-MCP | MCP server | 4.6k | yesterday | Apache-2.0 | A | — | Claude Code, Codex, Cursor, Gemini CLI, OpenCode |
| unity-mcp-orchestratorCoplayDev/unity-mcp | Skill | 16k | 7d ago | MIT | A | 72 | Claude Code |
Install
npx agentmods add mcp/ivanmurzak/unity-mcp/unity-mcpnpx agentmods add skills/coplaydev/unity-mcp/unity-mcp-skillEach name opens the mod's page: the scan, the token cost and every other way to install it.
Version floors: 2021.3, 2022.3 or 6
Your editor version may decide this before anything else does. Coplay supports Unity 2021.3 LTS through 6.x. IvanMurzak’s package manifest sets 2022.3 as the minimum. For mcp-unity the README asks for Unity 6 or later.
For Coplay you add a git URL or the OpenUPM package, and then “Configure All Detected Clients” writes the client configs. IvanMurzak’s plugin comes as a .unitypackage, from OpenUPM or through the unity-mcp-cli npm tool. Its README puts one warning above the install steps: your project path cannot contain spaces. mcp-unity also installs from a git URL, and its Configure button can write a project-level .mcp.json with a relative path, which you can commit for the whole team.
How each bridge connects
Each Unity MCP server here runs next to a package that goes into your Unity project, but the three ship that server differently.
Python runs Coplay’s server, which is built on FastMCP and needs Python 3.10 or newer through uv. It talks to the Unity package over WebSocket and HTTP. The default transport is stdio, where each client gets its own Python process and a new connection replaces the old one. Several agents at once need HTTP mode instead: one shared server, sessions kept apart by client_id.
A NuGet package carries IvanMurzak’s server. The README’s manual setup points at a build for your platform inside the project’s Library/mcp-server folder, and a Docker image exists too. The server’s code is not in this repository. It lives in a separate one, IvanMurzak/GameDev-MCP-Server, so this page reads the plugin and the docs, not the server source.
In mcp-unity, a Node.js 18+ server connects as a WebSocket client to a server running inside Unity. You start that one by hand from the Server Window. It listens on port 8090, waits 10 seconds per request by default, and stays off in -batchmode unless you opt in.
Behind the code, the people differ too. Coplay’s README says the project is sponsored and maintained by Aura, which also sells a premium Unity and Unreal assistant. Coplay and CoderGamester are MIT-licensed, IvanMurzak is Apache-2.0.
Fifty in groups, seven over RQL
On tool count the three take opposite routes, and that shapes what sits in your agent’s context.
Fifty tools are registered in Coplay’s code, the same number its README gives. Only the core group is on by default. That is 25 tools, plus five meta-tools that are always visible. The other 20 sit in nine groups (vfx, animation, ui, testing, probuilder, profiling, docs, asset_gen, scripting_ext), and the agent turns them on per session with manage_tools. For AI-generated assets there is the asset_gen group, which uses your own keys, and for 3D models it calls Tripo, Meshy or fal. The repo also ships a skill, unity-mcp-orchestrator, which tells the agent to read resources before calling tools.
IvanMurzak’s plugin went the other way. Since 1.0.0, most Editor work goes through RQL, a query language over the Editor’s data, with rql-query to read, rql-mutate to change and rql-schema to describe. The README says this replaced the old one-tool-per-action design. Seven tools are shown to the agent by default. The rest are installed but hidden, and a hidden tool still runs when called by name. Generated skills are what the setup window recommends over plain MCP config; by default they land in .claude/skills, and your agent has to support skills or dynamic tool updates.
CoderGamester lists 33 tools, one action each: move_gameobject, create_material, load_scene and so on. Coplay and CoderGamester both offer a batch_execute. Coplay’s description claims it cuts latency and token cost compared with separate calls, and caps a batch at 25 commands by default. CoderGamester’s version can roll a batch back on failure.
Which one costs your agent less context is still open. We don’t have that measurement for these servers, so the table can’t settle it.
Cloud mode is the default in IvanMurzak’s plugin
A fresh plugin config sets the connection mode to Cloud. The address the plugin dials depends on that one setting: in Cloud mode it is ai-game.dev, otherwise the local host. So unless you change it, your Editor connects to a hosted service, not to a server on your machine.
A shared store on your machine holds the credential. The CLI quick start signs you in through a browser and saves it in ~/.ai-game-dev/credentials.json. If the store is empty, the plugin’s code says the result is an anonymous Cloud connection, not a refusal. The agent side gets a per-project endpoint on the same domain, and for the HTTP transport the config carries a project key: per the CLI docs, a non-expiring, revocable credential bound to that one project. Treat the file that holds it like a password.
To keep everything local, set the connection to Custom in the window or with UNITY_MCP_CONNECTION_MODE. Pointing the plugin at a loopback URL also implies Custom. Outside CI the plugin keeps the connection open on its own; under CI it stays closed unless UNITY_MCP_KEEP_CONNECTED turns it on. The repo description calls the project free, and the README doesn’t put a price on the cloud service.
What Coplay’s telemetry sends
Coplay keeps the bridge to Unity local, but telemetry_enabled is true in the server config and events go to api-prod.coplay.dev. The code shows what goes out. Each payload carries a customer UUID, which the server keeps in a local customer_uuid.txt, a session id, your platform and your Python version. Record types include startup, Unity connection and tool execution. A tool record holds the tool name, whether it succeeded and how long it took, plus the error message cut to 200 characters when it failed.
Each request gets at most 1.5 seconds by default. You can point it at another endpoint, but not at localhost; the code rejects that. The Unity package has its own telemetry check as well. Set DISABLE_TELEMETRY or UNITY_MCP_DISABLE_TELEMETRY to stop both. CoderGamester’s README doesn’t mention telemetry at all.
Running C# from the agent
Arbitrary C# inside the Editor is what Coplay’s execute_code runs. The code is compiled in memory, so no script file appears in your project, and the tool keeps a history you can list and replay. It sits in the scripting_ext group, so it is off until the agent enables that group. A safety_checks flag, on by default, blocks patterns such as File.Delete and Process.Start. The tool’s own description adds that advanced bypass is possible, and the source header says the checks “are NOT a security sandbox”. You can force Roslyn (C# 12+) or the older CodeDom compiler (C# 6); the default picks automatically.
IvanMurzak’s script-execute compiles and runs C# with Roslyn, and it is one of the seven tools shown by default. Both tools are marked destructive. IvanMurzak’s code bounds a snippet by time: it stops after 30 seconds unless the call asks for more, and never runs longer than 290 seconds. Mono cannot unload assemblies, so the plugin reuses an already-loaded snippet for identical requests instead of loading a new copy each time.
No tool on CoderGamester’s list runs arbitrary code; the nearest is execute_menu_item. It also keeps add_package off by default, because a Unity package can run Editor code when it compiles. On Unity 6, that makes mcp-unity the option for a team that wants no code execution at all.
All three bind to loopback by default. Coplay requires https:// and an API key for remote hosting. IvanMurzak’s local server defaults to no client authentication, with oauth or token as options. CoderGamester creates a 256-bit token per project and rejects WebSocket handshakes that carry an Origin header. If you open it to other machines, remember its remote transport is plain ws://.
AI inside the shipped game
Only IvanMurzak’s README documents running inside a compiled game. Runtime use has no tools by default; you write them as C# methods with [AiTool], and the server routes calls to the running game. The same attribute adds custom tools in the Editor, and ten extension packages add more for Cinemachine, Terrain, Timeline and others.
Questions
Does IvanMurzak Unity-MCP send my project to the cloud?
A fresh plugin config defaults to Cloud mode, which points the plugin at ai-game.dev. Switch the connection to Custom, or set UNITY_MCP_CONNECTION_MODE, to use a local server instead.
Does Coplay MCP for Unity collect telemetry?
Yes, by default. The Python server sends events to api-prod.coplay.dev, and the Unity package has its own telemetry switch. Set DISABLE_TELEMETRY or UNITY_MCP_DISABLE_TELEMETRY to turn it off.
Can a Unity MCP server run arbitrary C# code?
Two of the three can. Coplay's execute_code is in an opt-in group and its own docs say the safety checks are not a sandbox; IvanMurzak's script-execute is shown by default and marked destructive. CoderGamester's README tool list has no such tool.
Sources
CoplayDev/unity-mcp at e2fd09c
README.md · CLAUDE.md · SECURITY.md · Server/pyproject.toml · Server/src/main.py · Server/src/core/config.py · Server/src/core/telemetry.py · Server/src/services/registry/tool_registry.py · Server/src/services/tools/__init__.py · Server/src/services/tools/execute_code.py · Server/src/services/tools/generate_model.py · Server/src/services/tools/batch_execute.py · Server/src/services/tools/manage_tools.py · MCPForUnity/Editor/Helpers/TelemetryHelper.cs · unity-mcp-skill/SKILL.md
IvanMurzak/Unity-MCP at d41174d
README.md · server.json · LICENSE · docs/DOCKER_DEPLOYMENT.md · Unity-MCP-Plugin/Packages/com.ivanmurzak.unity.mcp/package.json · Unity-MCP-Plugin/Packages/com.ivanmurzak.unity.mcp/Runtime/UnityMcpPlugin.Config.cs · Unity-MCP-Plugin/Packages/com.ivanmurzak.unity.mcp/Editor/Scripts/API/Tool/Script.Execute.cs
CoderGamester/mcp-unity at d572dc8
README.md · package.json · LICENSE.md
More comparisons
Figma MCP servers: which ones read, which ones edit
Framelink only reads a frame; Talk to Figma and Figma Console edit it. Figma's own: 6 calls/mo.
Playwright MCP vs Chrome DevTools MCP
Playwright MCP also runs Firefox and WebKit. Chrome DevTools MCP traces Chrome and reports stats.
Blender MCP: the official server, mcp-for-blender and two others
Four Blender MCP add-ons share port 9876. The official one needs Blender 5.1.
GitHub MCP server, the gh CLI, or GitLab MCP
With a shell, gh plus GitHub's agent skill covers most work. The MCP server ships 45 tools on by default.
Context7 MCP alternatives, and where each one gets its docs
Context7 and Ref ask a hosted index; docs-mcp-server keeps one on your disk.
UI UX Pro Max skill, Impeccable or Taste Skill
A local style database, a 62-rule detector on each edit, and a website kit with its own headless checker.