Multi-Instance Routing
You can have several Unity Editors open at once and aim a single MCP session at any of them.
When this comes up
- You're refactoring a shared package and need to test the same change in two projects
- You're comparing behavior between Unity LTS and Unity 6
- You have a runtime project + a tooling project both connected
- You're driving a CI fixture project alongside your day-to-day work
How instances are identified
Each connected Unity Editor advertises a stable ID of the form Name@hash, where:
Nameis the project'sproductNamefrom Player Settingshashis a stable 8-character hash derived from the project path
Example: MyGame@a1b2c3d4.
You can also reference an instance by:
- Hash prefix (e.g.
a1bif it's unambiguous) - Port number — stdio transport only
Discovering instances
Read the resource:
mcpforunity://instances
It returns the list of currently connected Editors with their Name@hash, project path, transport, and port. Most MCP clients expose this as the unity_instances resource.
Setting the active instance for the session
set_active_instance(instance="MyGame@a1b2c3d4")
Once set, every subsequent tool call in the session routes to that instance until you change it. This is the most common pattern: choose once, then prompt normally.
You can also use:
set_active_instance(instance="a1b") # hash prefix
set_active_instance(instance="6401") # port number (stdio only)
Routing a single call without changing the session default
Pass unity_instance on the individual tool call:
manage_scene(action="get_hierarchy", unity_instance="MyGame@a1b2c3d4")
This is useful for comparing two projects in the same prompt — e.g., "Read the same script from both projects and tell me what differs."
The server accepts the same value formats as set_active_instance: Name@hash, hash prefix, or (stdio) port number.
What happens with no active instance
- One Unity Editor connected → it's used automatically.
- Multiple Editors connected and no active set → the server errors with the available instance list. Call
set_active_instanceand retry.
HTTP vs stdio differences
- HTTP: instance state is keyed per-session by
client_id, so two MCP clients can target different Editors at the same time on the same Python server. - Stdio: port-number shorthand works because there's a separate Python process per client. HTTP shares one process and uses
Name@hashexclusively.
Related reference
set_active_instance— full tool referenceunity_instancesresource — discovery surface