MCP for Unity 多实例路由:会话与单次调用
解决的问题与适用场景
同时打开多个 Unity Editor 时,让单个 MCP 会话指向其中任意一个。
工具、版本与前置条件
- set_active_instance:版本:原文未说明;前置条件:需先读取 mcpforunity://instances 获取当前连接的 Editor 列表。。
- unity_instances:版本:原文未说明;前置条件:原文未说明。
- manage_scene:版本:原文未说明;前置条件:原文未说明。
操作步骤与工作流衔接
1. 读取资源 mcpforunity://instances 发现实例。
- 输入:资源地址 mcpforunity://instances。
- 输出:返回当前连接的 Editor 列表,含 Name@hash、项目路径、传输方式和端口。
- 后处理与接入:多数 MCP 客户端将其暴露为 unity_instances 资源。
2. 调用 set_active_instance 设置会话的活动实例。
- 输入:instance="MyGame@a1b2c3d4"。
- 输出:此后该会话中每次工具调用都路由到该实例,直到更改。
- 后处理与接入:常见模式是先选一次,然后正常提示。
3. 也可用哈希前缀或端口号设置活动实例。
- 输入:set_active_instance(instance="a1b") 或 set_active_instance(instance="6401")。
- 输出:按哈希前缀或端口号(仅 stdio)选定实例。
- 后处理与接入:原文未说明
4. 在单个工具调用上传 unity_instance,不改变会话默认实例。
- 输入:manage_scene(action="get_hierarchy", unity_instance="MyGame@a1b2c3d4")。
- 输出:该次调用路由到指定实例,可用于在同一提示中比较两个项目。
- 后处理与接入:服务端接受与 set_active_instance 相同的格式:Name@hash、哈希前缀或(stdio)端口号。
5. 多个 Editor 连接且未设置活动实例时,服务端报错并列出可用实例。
- 输入:原文未说明
- 输出:返回错误及可用实例列表。
- 后处理与接入:调用 set_active_instance 后重试。
原作者的结果与限制
- 结果:原作者报告四个代理在十一分钟内发出 527 次调用,Editor 保持存活且响应正常,内存增长与工作量成比例,之后保持平稳。
- 限制与踩坑:四代理写入负载下,原本约 5 秒的廉价读取延长到约 17 秒,另一代理停止后在一两个周期内恢复。
原文与来源
- 作者:原文未说明
- 来源:MCP for Unity open-source implementation guides
- 原文日期:原文未说明
- 阅读原文
本文为基于原文整理的中文导读,效果与结论归属于原作者。