关于 MCP Unity Editor (Game Engine)
MCP Unity Editor 是一个 Unity 编辑器插件,通过 Node.js 服务让 Cursor、Claude Code、Codex 等 AI 客户端在 Unity 项目中执行操作。适合希望用 AI 辅助场景、对象和测试工作的 Unity 开发者。
主要功能
- 01操作场景、GameObject 与组件
- 02管理材质、预制体和资源
- 03运行 Unity 测试与读取控制台日志
- 04控制 Play 模式并批量执行操作
适用场景
- 01用自然语言创建或修改场景中的对象
- 02批量生成敌人对象并调整其变换
- 03在编辑器中运行 EditMode 测试并查看日志
MCP 相关
该项目是 MCP 服务,由 Node.js 服务端实现 MCP 协议,向 AI 客户端暴露 execute_menu_item、update_component、run_tests 等工具以及 unity:// 资源。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP Unity 编辑器(游戏引擎)
| 🇺🇸English | 🇨🇳简体中文 | 🇯🇵日本語 |
|---|
,/(/. *(/,
*/(((((/. *((((((*.
.*((((((((((/. *((((((((((/.
./((((((((((((((/ *((((((((((((((/,
,/(((((((((((((/*. */(((((((((((((/*.
,%%#((/((((((* ,/(((((/(#&@@(
,%%##%%##((((((/*. ,/((((/(#&@@@@@@(
,%%######%%##((/(((/*. .*/(((//(%@@@@@@@@@@@(
,%%####%#(%%#%%##((/((((((((//#&@@@@@@&@@@@@@@@(
,%%####%( /#%#%%%##(//(#@@@@@@@%, #@@@@@@@(
,%%####%( *#%###%@@@@@@( #@@@@@@@(
,%%####%( #%#%@@@@, #@@@@@@@(
,%%##%%%( #%#%@@@@, #@@@@@@@(
,%%%#* #%#%@@@@, *%@@@(
., ,/##*. #%#%@@@@, ./&@#* *`
,/#%#####%%#/, #%#%@@@@, ,/&@@@@@@@@@&\.
`*#########%%%%###%@@@@@@@@@@@@@@@@@@&*´
`*%%###########%@@@@@@@@@@@@@@&*´
`*%%%######%@@@@@@@@@@&*´
`*#%%##%@@@@@&*´
`*%#%@&*´
███╗ ███╗ ██████╗██████╗ ██╗ ██╗███╗ ██╗██╗████████╗██╗ ██╗
████╗ ████║██╔════╝██╔══██╗ ██║ ██║████╗ ██║██║╚══██╔══╝╚██╗ ██╔╝
██╔████╔██║██║ ██████╔╝ ██║ ██║██╔██╗ ██║██║ ██║ ╚████╔╝
██║╚██╔╝██║██║ ██╔═══╝ ██║ ██║██║╚██╗██║██║ ██║ ╚██╔╝
██║ ╚═╝ ██║╚██████╗██║ ╚██████╔╝██║ ╚████║██║ ██║ ██║
╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═╝
MCP Unity 是面向 Unity 编辑器的模型上下文协议实现,可让 AI 助手与您的 Unity 项目交互。此软件包在 Unity 与实现 MCP 协议的 Node.js 服务之间提供桥接,使 Cursor、Windsurf、Claude Code、Codex CLI、GitHub Copilot、Google Antigravity 和 OpenCode 等 AI Agent 能够在 Unity 编辑器中执行操作。
功能
IDE 集成 - 软件包缓存访问
MCP Unity 通过将 Unity 的 Library/PackedCache 文件夹添加到工作区,为类似 VSCode 的 IDE(Visual Studio Code、Cursor、Windsurf、Google Antigravity)提供自动集成。此功能可以:
- 改进 Unity 软件包的代码智能
- 为 Unity 软件包提供更好的自动补全和类型信息
- 帮助 AI 编码助手理解项目的依赖项
MCP 服务工具
以下工具可通过 MCP 操作和查询 Unity 场景及 GameObject:
-
execute_menu_item:执行 Unity 菜单项(带有 MenuItem 属性标记的函数)示例提示词:“执行菜单项 'GameObject/Create Empty',创建一个新的空 GameObject”
-
select_gameobject:按路径或实例 ID 选择 Unity 层级视图中的游戏对象示例提示词:“选择场景中的 Main Camera 对象”
-
update_gameobject:更新 GameObject 的核心属性(名称、标签、图层、激活/静态状态);如果 GameObject 不存在,则创建它示例提示词:“将 Player 对象的标签设为 'Enemy',并将其设为非激活状态”
-
update_component:更新 GameObject 上的组件字段;如果 GameObject 不包含该组件,则将其添加到 GameObject 上示例提示词:“为 Player 对象添加 Rigidbody 组件,并将其质量设为 5”
-
add_package:在 Unity Package Manager 中安装新软件包示例提示词:“为我的项目添加 TextMeshPro 软件包”
-
run_tests:使用 Unity Test Runner 运行测试示例提示词:“运行项目中的所有 EditMode 测试”
-
send_console_log:向 Unity 发送控制台日志示例提示词:“向 Unity 编辑器发送控制台日志”
-
add_asset_to_scene:将 AssetDatabase 中的资源添加到 Unity 场景示例提示词:“将项目中的 Player 预制件添加到当前场景”
-
create_prefab:创建预制件,可选添加 MonoBehaviour 脚本和序列化字段值示例提示词:“使用 'PlayerController' 脚本创建名为 'Player' 的预制件”
-
create_scene:创建新场景并将其保存到指定路径示例提示词:“在 Scenes 文件夹中创建名为 'Level1' 的新场景”
-
load_scene:按路径或名称加载场景,可选择以叠加方式加载示例提示词:“加载 MainMenu 场景”
-
delete_scene:按路径或名称删除场景,并将其从 Build Settings 中移除示例提示词:“从项目中删除旧的 TestScene”
-
get_gameobject:获取特定 GameObject 的详细信息,包括所有组件示例提示词:“获取 Player GameObject 的详细信息”
-
get_console_logs:获取 Unity 控制台中的日志,支持分页示例提示词:“显示 Unity 控制台中最近的 20 条错误日志”
-
recompile_scripts:重新编译 Unity 项目中的所有脚本示例提示词:“重新编译我的 Unity 项目中的脚本”
-
save_scene:保存当前活动场景,也可以选择另存为新路径示例提示词:“保存当前场景”或“将场景另存为 'Assets/Scenes/Level2.unity'”
-
get_scene_info:获取活动场景的信息,包括名称、路径、未保存状态以及所有已加载的场景示例提示词:“我的项目中当前加载了哪些场景?”
-
unload_scene:从层级视图中卸载场景(不会删除场景资源)示例提示词:“从层级视图中卸载 UI 场景”
-
duplicate_gameobject:在场景中复制 GameObject,可选择重命名并更改父对象示例提示词:“将 Enemy 预制体复制 5 次,并将它们命名为 Enemy_1 到 Enemy_5”
-
delete_gameobject:从场景中删除 GameObject示例提示词:“从场景中删除旧的 Player 对象”
-
reparent_gameobject:更改 GameObject 在层级视图中的父对象示例提示词:“将 HealthBar 对象移到 UI Canvas 下作为子对象”
-
move_gameobject:将 GameObject 移动到新位置(局部空间或世界空间)示例提示词:“将 Player 对象移动到世界空间中的位置 (10, 0, 5)”
-
rotate_gameobject:将 GameObject 旋转到新的角度(局部空间或世界空间,可使用欧拉角或四元数)示例提示词:“将 Camera 绕 Y 轴旋转 45 度”
-
scale_gameobject:将 GameObject 缩放到新的局部比例示例提示词:“将 Enemy 对象缩放到原来的两倍”
-
set_transform:一次操作即可设置 GameObject 的位置、旋转和缩放示例提示词:“将 Cube 的位置设为 (0, 5, 0)、旋转设为 (0, 90, 0),缩放设为 (2, 2, 2)”
-
create_material:使用指定的着色器创建新材质并保存到项目中示例提示词:“使用 URP Lit 着色器创建一个名为 'EnemyMaterial' 的红色材质”
-
assign_material:将材质分配给 GameObject 的 Renderer 组件示例提示词:“将 'EnemyMaterial' 分配给 Enemy GameObject”
-
modify_material:修改现有材质的属性(颜色、浮点值、纹理)示例提示词:“将 'EnemyMaterial' 的颜色改为蓝色,并将金属度设为 0.8”
-
get_material_info:获取材质的详细信息,包括着色器和所有属性示例提示词:“显示 'PlayerMaterial' 的所有属性”
-
batch_execute:在单个批量请求中执行多个工具操作,减少往返次数,并支持在失败时选择回滚,以实现原子操作示例提示词:“通过单个批量操作创建 10 个名为 Enemy_1 到 Enemy_10 的空 GameObject”
MCP App 工具
-
show_unity_dashboard:在 VS Code 中打开 Unity 仪表板 MCP App(需要 VS Code 1.109+)示例提示词:“打开 Unity 仪表板应用”
-
get_play_mode_status:获取 Unity 播放模式状态(isPlaying、isPaused)示例提示词:“Unity 是否处于播放模式?”
-
set_play_mode_status:通过以下操作控制 Unity 播放模式:'play'(开始或取消暂停)、'pause'(切换暂停状态)、'stop'(退出播放模式)、'step'(前进一帧)示例提示词:“开始 Unity 播放模式”或“暂停游戏”或“前进一帧”
MCP 服务资源
-
unity://menu-items:获取 Unity Editor 中所有可用菜单项的列表,以便使用execute_menu_item工具示例提示词:“显示所有与创建 GameObject 相关的可用菜单项”
-
unity://scenes-hierarchy:获取当前 Unity 场景层级中的所有游戏对象列表示例提示词:“显示当前场景的层级结构”
-
unity://gameobject/{id}:根据实例 ID 或场景层级中的对象路径,获取特定 GameObject 的详细信息,包括该 GameObject 的所有组件及其序列化属性和字段示例提示词:“获取 Player GameObject 的详细信息”
-
unity://logs:获取 Unity 控制台中的所有日志列表示例提示词:“显示 Unity 控制台中最近的错误消息”
-
unity://packages:获取 Unity Package Manager 中已安装和可用软件包的信息示例提示词:“列出我的 Unity 项目当前安装的所有软件包”
-
unity://assets:获取 Unity Asset Database 中资源的信息示例提示词:“查找我项目中的所有纹理资源”
-
unity://tests/{testMode}:获取 Unity Test Runner 中的测试信息示例提示词:“列出我的 Unity 项目中所有可用的测试”
-
ui://unity-dashboard:Unity 仪表板 MCP App UI示例提示词:“打开 Unity 仪表板应用”
MCP 服务提示词
提示词是预先配置的模板,可为常见的 Unity 任务提供引导式工作流。它们有助于 AI 助手了解特定场景中的正确操作顺序和可用工具。
-
unity_dashboard:打开 Unity 仪表板 MCP 应用,并提供有关其功能的上下文信息**用法:**在 AI 助手中使用提示词“unity_dashboard”,以获取 Unity 仪表板的引导式访问
-
gameobject_handling_strategy:提供使用 GameObject 的结构化工作流,包括应使用的工具和资源**用法:**在 AI 助手中使用提示词“gameobject_handling_strategy”,并提供 GameObject ID、名称或路径,以获取分步指导
要求
说明
包含空格的项目路径
MCP Unity 支持包含空格的项目路径。不过,如果遇到连接问题,可尝试将项目移至不含空格的路径,以排查问题。
示例:
- ✅ 推荐:
C:\Users\YourUser\Documents\UnityProjects\MyAwesomeGame- ✅ 支持:
C:\Users\Your User\Documents\Unity Projects\My Awesome Game
安装
安装此 MCP Unity 服务需要多个步骤:
第 1 步:安装 Node.js
要运行 MCP Unity 服务,需要在计算机上安装 Node.js 18 或更高版本:

Windows
- 访问 Node.js 下载页面
- 下载适用于 LTS 版本的 Windows 安装程序(.msi)(推荐)
- 运行安装程序并按照安装向导操作
- 打开 PowerShell 并运行以下命令,以验证安装:
node --version
macOS
- 访问 Node.js 下载页面
- 下载适用于 LTS 版本的 macOS 安装程序(.pkg)(推荐)
- 运行安装程序并按照安装向导操作
- 或者,如果已安装 Homebrew,也可以运行:
brew install node@18 - 打开终端并运行以下命令,以验证安装:
node --version
步骤 3:配置 AI 大模型客户端
选项 1:使用 Unity Editor 配置
- 打开 Unity Editor
- 导航至 Tools > MCP Unity > Server Window
- 如下图所示,点击 AI 大模型客户端对应的“Configure”按钮

全局配置与项目配置:
- Configure [Client] — 写入全局用户配置文件(例如
~/.claude.json)。使用绝对路径。适用于计算机上的所有项目。最适合个人或单人开发者使用。- Configure [Client] (Project) — 写入 Unity 项目根目录中的
.mcp.json文件(或等效文件)。使用相对路径,因此可在不同计算机上使用。此配置适合提交到 git 并与团队共享。最适合协作项目,或希望配置随项目一起迁移的场景。如果不确定,请优先选择 (Project) 选项——相对路径的可移植性更好,移动项目文件夹后也不会失效。
- 在弹出的窗口中确认安装配置
选项 2:手动配置
打开 AI 客户端的 MCP 配置文件,并添加 MCP Unity 服务配置:
将
ABSOLUTE/PATH/TO替换为 MCP Unity 安装的绝对路径,或者直接从 Unity Editor 的 MCP Server 窗口(Tools > MCP Unity > Server Window)复制文本。对于位于 Unity 项目目录树内并会提交到 git 的配置(例如
<project>/.vscode/mcp.json、<project>/opencode.json、<project>/.cursor/mcp.json、<project>/.mcp.json、<project>/.codex/config.toml),建议使用项目相对路径,这样同一文件便可在不同计算机上使用。在 Server Window 中切换 “Use relative path”,即可在绝对路径和项目相对路径之间切换复制粘贴的代码片段。Configure GitHub Copilot、Configure OpenCode、Configure Cursor (Project)、Configure Claude Code (Project) 和 Configure Codex CLI (Project) 按钮会自动生成相对路径。项目本地按钮(Cursor / Claude Code / Codex CLI)会将 MCP 服务条目写入 Unity 项目目录,而不是全局用户配置,这样其他(非 Unity)项目就不会显示 MCP 连接失败警告。特别是对于 Codex CLI (Project),首次从项目根目录运行
codex时,必须批准项目信任提示,否则 Codex 会忽略<project>/.codex/config.toml。
对于基于 JSON 的客户端(Cursor、Windsurf、Claude Code、GitHub Copilot 等):
{
"mcpServers": {
"mcp-unity": {
"command": "node",
"args": [
"ABSOLUTE/PATH/TO/mcp-unity/Server~/build/index.js"
]
}
}
}
对于工作区范围的 VS Code / GitHub Copilot(.vscode/mcp.json),请使用 ${workspaceFolder},以便路径可在不同计算机上使用:
{
"mcpServers": {
"mcp-unity": {
"command": "node",
"args": [
"${workspaceFolder}/Library/PackageCache/com.gamelovers.mcp-unity@<hash>/Server~/build/index.js"
]
}
}
}
对于 Codex CLI(~/.codex/config.toml):
[mcp_servers.mcp-unity]
command = "node"
args = ["ABSOLUTE/PATH/TO/mcp-unity/Server~/build/index.js"]
对于 Cursor — 项目本地(位于 Unity 项目根目录中的 .cursor/mcp.json,使用项目相对路径):
{
"mcpServers": {
"mcp-unity": {
"command": "node",
"args": [
"Library/PackageCache/com.gamelovers.mcp-unity@<hash>/Server~/build/index.js"
]
}
}
}
对于 Claude Code — 项目本地(位于 Unity 项目根目录中的 .mcp.json,使用项目相对路径——Claude Code 的团队共享 MCP 配置):
{
"mcpServers": {
"mcp-unity": {
"command": "node",
"args": [
"Library/PackageCache/com.gamelovers.mcp-unity@<hash>/Server~/build/index.js"
]
}
}
}
对于 Codex CLI — 项目本地(位于 Unity 项目根目录中的 .codex/config.toml,使用项目相对路径):
[mcp_servers.mcp-unity]
command = "node"
args = ["Library/PackageCache/com.gamelovers.mcp-unity@<hash>/Server~/build/index.js"]
Codex 会将此文件叠加到全局
~/.codex/config.toml上,但前提是项目已标记为受信任。首次cd进入项目并运行codex时,请批准信任提示,否则 Codex 会忽略.codex/config.toml。
对于 OpenCode(位于 Unity 项目根目录中的 opencode.json):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mcp-unity": {
"type": "local",
"enabled": true,
"command": ["node", "Library/PackageCache/com.gamelovers.mcp-unity@<hash>/Server~/build/index.js"],
"environment": {}
}
}
}
注意:UPM 包缓存路径中的
@<hash>部分会在更新包时发生变化。如果更新 MCP Unity,请重新点击 Configure 按钮(或手动更新路径),以确保代码片段指向新的缓存目录。
AI 客户端连接到 WebSocket 服务后,会自动显示在窗口的绿色框中
可选:设置 WebSocket 端口
默认情况下,WebSocket 服务运行在端口 '8090' 上。若要更改:
- 打开 Unity Editor
- 导航至 Tools > MCP Unity > Server Window
- 将“Connection Port”的值更改为所需的端口号
- Unity 会将该值保存在
ProjectSettings/McpUnitySettings.json中 - 重启 Node.js 服务
Node 桥接程序会从其已安装的软件包路径中查找该项目设置文件,因此不依赖 MCP 客户端的工作目录。若要为单个 Node 进程覆盖此设置,请设置 UNITY_PORT,例如:UNITY_PORT=9001 node build/index.js。
可选:设置超时时间
默认情况下,MCP 服务与 WebSocket 之间的超时时间为 10 秒。 若要更改:
- 打开 Unity Editor
- 导航至 Tools > MCP Unity > Server Window
- 将“Request Timeout (seconds)”的值更改为所需的超时秒数
- Unity 会将该值保存在
ProjectSettings/McpUnitySettings.json中 - 重启 Node.js 服务
若要为单个 Node 进程覆盖此设置,请设置 UNITY_REQUEST_TIMEOUT(单位为秒),例如:UNITY_REQUEST_TIMEOUT=30 node build/index.js。
提示
你的 AI 编码 IDE(例如 Claude Desktop、Cursor IDE、Windsurf IDE)与 MCP 服务之间的超时时间取决于 IDE。
可选:运行持久化的无头 MCP 主机
默认情况下,MCP Unity 在 -batchmode 中保持禁用,因此 CI 和云构建不会启动桥接程序或运行 npm。若要将长期运行的无头 Editor 用作 MCP 主机,请在启动 Unity 前选择启用 Server Window 中的 Allow Batch Mode Server,或设置 MCP_UNITY_ALLOW_BATCH_MODE=true:
MCP_UNITY_ALLOW_BATCH_MODE=true Unity -batchmode -nographics -projectPath /path/to/project -logFile /path/to/unity.log
选择启用后,Unity 端的 WebSocket 服务会正常启动,但在 batch mode 下不会运行 npm install 或 npm run build。请确保 Node 桥接程序已构建完成,并可供 MCP 客户端使用。
桥接配置解析
Node 桥接程序按以下顺序解析每个连接值:对应的环境变量(UNITY_PORT、UNITY_HOST 或 UNITY_REQUEST_TIMEOUT)、MCP_UNITY_SETTINGS_PATH、在已安装软件包上级目录中找到的 ProjectSettings/McpUnitySettings.json 文件、在其工作目录上级目录中找到的文件,最后使用默认值。生成的 MCP 配置会显式设置 MCP_UNITY_SETTINGS_PATH 和 MCP_UNITY_AUTH_TOKEN_PATH。桥接程序会记录值的来源,并在回退到默认值前发出警告。
桥接安全性与软件包安装
MCP Unity 会在 Library/McpUnity/bridge-token 中为每个项目生成一个 256 位身份验证令牌。令牌解析采用严格规则:优先使用 MCP_UNITY_AUTH_TOKEN,其次是 MCP_UNITY_AUTH_TOKEN_PATH,最后使用在已发现的 Unity 项目旁边的令牌。明确指定的值若不存在或格式错误,都会直接报错,不会回退。生成的配置使用令牌文件路径,绝不会将密钥复制到 ProjectSettings。
Unity 端点要求使用 HTTP Basic 凭据,用户名为 mcp-unity,并拒绝所有包含 Origin 标头的 WebSocket 握手。直接集成 WebSocket 的程序必须进行身份验证,并省略 Origin。使用 Server Window 复制或重新生成令牌;轮换令牌后,请重启所有 MCP 客户端进程。
默认情况下,add_package 工具处于禁用状态,因为 Unity 软件包在编译时可以执行 Editor 代码。仅当软件包来源和 MCP 客户端可信时,才在 Tools > MCP Unity > Server Window 中启用 Allow Package Installation,或在 ProjectSettings/McpUnitySettings.json 中将 AllowPackageInstallation 设为 true。
版本 1.5.0 会有意拒绝 1.4.x Node 桥接程序。请升级 Unity 和 Node 软件包组件;如果软件包缓存路径已更改,请再次运行 Unity Configure 操作,然后重启 MCP 客户端。
可选:允许远程 MCP 桥接连接
默认情况下,WebSocket 服务会绑定到 'localhost'。若要允许其他机器连接 MCP 桥接程序:
- 打开 Unity Editor
- 前往 Tools > MCP Unity > Server Window
- 勾选 "Allow Remote Connections"
- Unity 会将 WebSocket 服务绑定到 '0.0.0.0'(所有接口)
- 重启 Node.js 服务以应用新的主机配置
- 从远程运行 MCP 桥接程序时,将环境变量 UNITY_HOST 设为 Unity 机器的 IP 地址:
UNITY_HOST=192.168.1.100 node server.js
远程传输仍使用未加密的 ws://。身份验证可以防止未授权访问,但不会隐藏流量;请将远程使用限制在可信网络、VPN 或 SSH 隧道中。无法读取 Unity 项目令牌文件的远程桥接程序,必须通过安全的密钥机制获取 MCP_UNITY_AUTH_TOKEN。
调试服务
构建 Node.js 服务
MCP Unity 服务使用 Node.js 构建。它需要将 TypeScript 代码编译为 build 目录中的 JavaScript。
如遇问题,可通过以下步骤强制安装:
- 打开 Unity Editor
- 前往 Tools > MCP Unity > Server Window
- 点击 "Force Install Server" 按钮

如需手动构建,请按以下步骤操作:
-
打开终端/PowerShell/命令提示符
-
前往 Server 目录:
cd ABSOLUTE/PATH/TO/mcp-unity/Server~ -
安装依赖项:
npm install -
构建服务:
npm run build -
运行服务:
node build/index.js
使用 MCP Inspector 调试
使用 @modelcontextprotocol/inspector 调试服务:
- Powershell
npx @modelcontextprotocol/inspector node Server~/build/index.js
- 命令提示符/终端
npx @modelcontextprotocol/inspector node Server~/build/index.js
关闭终端或使用 MCP Inspector 调试前,请记得按 Ctrl + C 关闭服务。
启用控制台日志
- 在终端中启用日志记录,或将日志写入 log.txt 文件:
- Powershell
$env:LOGGING = "true" $env:LOGGING_FILE = "true"- 命令提示符/终端
set LOGGING=true set LOGGING_FILE=true
常见问题
什么是 MCP Unity?
MCP Unity 是一个强大的桥接程序,通过模型上下文协议(MCP)将 Unity Editor 环境连接到 AI 助手的大模型工具。 本质上,MCP Unity:
- 将 Unity Editor 的功能(例如创建对象、修改组件、运行测试等)作为 AI 能够理解和使用的“工具”和“资源”公开出来。
- 在 Unity 内部运行 WebSocket 服务,并运行一个实现 MCP 的 Node.js 服务(作为连接 Unity 的 WebSocket 客户端)。这样,AI 助手便可向 Unity 发送命令并接收返回的信息。
- 让你可以通过 AI 助手使用自然语言提示词,在 Unity 项目中执行复杂任务,大幅加快开发工作流。
为什么使用 MCP Unity?
MCP Unity 为开发者、美术师和项目经理带来了诸多显著优势:
- 加快开发: 使用 AI 提示词自动执行重复性任务、生成样板代码并管理资源。这样你就能腾出时间,专注于创意工作和复杂问题的解决。
- 提高效率: 无需手动点击菜单或为简单操作编写脚本,即可使用 Unity Editor 的功能。AI 助手将成为你在 Unity 中能力的直接延伸。
- 提升易用性: 对 Unity Editor 或 C# 脚本的复杂细节不太熟悉的用户,也能在 AI 的指导下为项目做出有意义的贡献和修改。
- 无缝集成: 专为支持 MCP 的各类 AI 助手和 IDE 设计,让你能够以一致的方式在整个开发工具链中利用 AI。
- 可扩展性: 可以扩展协议和工具集。你可以定义新的工具和资源,让 AI 使用更多项目专属功能或 Unity 功能。
- 协作潜力: 提供全新的协作方式,让 AI 协助完成传统上由团队成员执行的任务,或通过引导新开发者了解项目结构和操作,帮助他们快速上手。
MCP Unity 与即将推出的 Unity 6.2 AI 功能相比如何?
Unity 6.2 计划推出新的内置 AI 工具,包括之前的 Unity Muse(用于纹理和动画生成等生成式 AI 功能)和 Unity Sentis(用于在 Unity 运行时运行神经网络)。由于 Unity 6.2 尚未正式发布,以下比较基于公开信息和预期功能:
- 侧重点:
- MCP Unity: 主要侧重于编辑器自动化与交互。它允许外部 AI(例如基于大模型的编码助手)控制 Unity Editor 本身并查询其中的信息,以操作场景、资源和项目设置。其目标是在 Editor 中增强开发者的工作流。
- Unity 6.2 AI:
- 致力于在 Editor 中创建内容(生成纹理、精灵、动画、行为和脚本),并直接集成到 Unity Editor 界面中,利用 AI 帮助完成常见任务。
- 提供一个经过微调的模型,你可以向它询问任何有关 Unity 文档和 API 结构的问题,并获取更贴合 Unity 环境的定制示例。
- 增加 AI 模型推理功能,让开发者能够在游戏或应用程序中部署并运行预训练的神经网络,用于 NPC 行为、图像识别等功能。
- 相辅相成,而非互斥: MCP Unity 和 Unity 原生 AI 工具可以相辅相成。你可以使用 MCP Unity 搭配 AI 编码助手来设置场景或批量修改资源,然后使用 Unity AI 工具为其中某个资源生成特定纹理、创建动画或制作 2D 精灵。MCP Unity 提供了一种灵活、基于协议的方式来与编辑器交互,对于希望集成更广泛的外部 AI 服务或构建自定义自动化工作流的开发者来说,这种方式十分强大。
目前有哪些 MCP 宿主和 IDE 支持 MCP Unity?
MCP Unity 旨在与任何可充当 MCP 客户端的 AI 助手或开发环境协同工作。生态系统正在不断发展,目前已知的集成或兼容平台包括:
- Cursor
- Windsurf
- Claude Desktop
- Claude Code
- Codex CLI
- GitHub Copilot
- Google Antigravity
- OpenCode
我可以使用自定义工具扩展 MCP Unity,以适配我的项目吗?
当然可以!MCP Unity 架构的一大优势就是可扩展性。
- **在 Unity(C#)中:**你可以创建继承自
McpToolBase(或用于资源的类似基类)的新 C# 类,以公开自定义的 Unity 编辑器功能。然后,这些工具会在McpUnityServer.cs中注册。例如,你可以编写一个工具来自动执行项目特有的资源导入流程。 - **在 Node.js 服务端(TypeScript)中:**接着,你需要在
Server/src/tools/目录中定义相应的 TypeScript 工具处理程序,包括其用于输入/输出的 Zod 模式,并在Server/src/index.ts中注册。Node.js 部分会将请求转发到 Unity 中新建的 C# 工具。
这样,你就可以根据游戏或应用的具体需求和工作流,定制 AI 的能力。
MCP Unity 可以免费使用吗?
可以,MCP Unity 是一个根据 MIT License 发布的开源项目。你可以按照许可证条款自由使用、修改和分发。
为什么我无法连接到 MCP Unity?
- 确保 WebSocket 服务正在运行(检查 Unity 中的服务窗口)
- 从 MCP 客户端发送一条控制台日志消息,以强制 MCP 客户端与 Unity 服务端重新连接
- 在 Unity 编辑器的 MCP Server 窗口中更改端口号。(Tools > MCP Unity > Server Window)
为什么 MCP Unity 服务无法启动?
- 检查 Unity 控制台中的错误消息
- 确保 Node.js 已正确安装,并且可以通过 PATH 访问
- 确认 Server 目录中已安装所有依赖项
为什么运行 Play Mode 测试时会出现连接失败错误?
run_tests 工具会返回以下响应:
Error:
Connection failed: Unknown error
此错误是因为切换到 Play Mode 时域重新加载,导致桥接连接断开。解决方法是在 Edit > Project Settings > Editor > "Enter Play Mode Settings" 中关闭 Reload Domain。
为什么有些客户端在工具初始化期间会出现 KeyError: 'position'?
某些 MCP 客户端在解析包含本地 JSON 指针引用(例如 #/properties/position)的工具架构时可能会失败。
MCP Unity 通过为每个字段注册全新的嵌套向量架构来避免此问题,适用于变换工具输入(set_transform、move_gameobject、rotate_gameobject、scale_gameobject),因此生成的架构不会依赖本地 #/properties/... 引用。
如果仍然看到此错误:
- 将 MCP 客户端更新到最新版本,
- 重新构建 Node 服务(
cd Server~ && npm run build), - 确认你的软件包版本包含此兼容性修复。
故障排除:WSL2(Windows 11)网络
在 WSL2 中运行 MCP(Node.js)服务,同时在 Windows 11 上运行 Unity 时,连接 ws://localhost:8090/McpUnity 可能会失败,并显示 ECONNREFUSED。
原因:WSL2 和 Windows 使用不同的网络命名空间——WSL2 内部的 localhost 并不指向 Windows 主机。默认情况下,Unity 会监听 localhost:8090。
解决方案 1 — 启用 WSL2 镜像模式网络(推荐)
- Windows 11:设置 → 系统 → 面向开发人员 → WSL → 启用“镜像模式网络”。
- 或通过
.wslconfig配置(然后运行wsl --shutdown并重新打开 WSL):
[wsl2]
networkingMode=mirrored
启用后,Windows 和 WSL2 将共享 localhost,因此默认配置(localhost:8090)即可正常工作。
解决方案 2 — 将 Node 客户端指向 Windows 主机
启动 MCP 客户端前,在 WSL shell 中设置:
# Use the Windows host IP detected from resolv.conf
export UNITY_HOST=$(grep -m1 nameserver /etc/resolv.conf | awk '{print $2}')
这样,Server~/src/unity/mcpUnity.ts 将连接到 ws://$UNITY_HOST:8090/McpUnity,而不是 localhost(它会读取 UNITY_HOST;如果存在 ProjectSettings/McpUnitySettings.json,也可能会使用其中的 Host)。
解决方案 3 — 允许 Unity 接受远程连接
- Unity:Tools → MCP Unity → Server Window → 启用“Allow Remote Connections”(Unity 将绑定到
0.0.0.0)。 - 确保 Windows 防火墙允许在配置的端口上接收 TCP 入站连接(默认端口为 8090)。
- 在 WSL2 中连接到 Windows 主机 IP(参见解决方案 2);如果启用了镜像模式,也可以连接到
localhost。
说明
默认端口为
8090。你可以在 Unity Server Window(Tools → MCP Unity → Server Window)中更改端口。该值映射到McpUnitySettings,并保存在ProjectSettings/McpUnitySettings.json中。
验证连接
npm i -g wscat
# After enabling mirrored networking
wscat -c ws://localhost:8090/McpUnity
# Or using the Windows host IP
wscat -c ws://$UNITY_HOST:8090/McpUnity
运行测试
C# 测试(Unity)
使用 Unity 的 Test Runner 运行测试:
- 打开 Unity Editor
- 前往 Window > General > Test Runner
- 选择“EditMode”选项卡
- 点击“Run All”以运行所有测试
TypeScript 测试(服务端)
使用 Jest 运行测试:
cd Server~
npm test
以监视模式运行测试:
npm run test:watch
支持与反馈
如果你有任何问题或需要支持,请在此代码仓库中提交一个 问题,或者通过以下方式联系我们:
- Linkedin:
- Discord:gamester7178
- 电子邮件:[email protected]
贡献
欢迎贡献!欢迎提交 Pull Request,或针对你的需求创建 Issue。
请按照 Conventional Commits 格式提交更改。
许可证
此项目采用 MIT License
致谢
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。