✨ AI Game Developer — Unity MCP
  ](https://hub.docker.com/r/ivanmurzakdev/unity-mcp-server)   
   
Unity MCP 是一款基于人工智能的游戏开发助手,在以下方面起着桥梁作用 MCP Client 和 Unity。只需在聊天中键入一条消息,即可使用您选择的任何高级LLM模型完成工作。有问题要解决吗?请AI修复它。 观看演示视频.
💬 加入我们的Discord服务器 -提出问题,展示你的作品,并与其他开发人员联系!
特性
- ✔️ 自然对话 -像与人类聊天一样与人工智能聊天
- ✔️ 代码辅助 -让AI编写代码并运行测试
- ✔️ 调试支持 -让AI获取日志并修复错误
- ✔️ 多个LLM提供商 -使用Anthropic、OpenAI、Microsoft或任何其他提供商的代理,没有限制
- ✔️ 灵活部署 -通过配置在本地(stdio)和远程(http)工作
- ✔️ 丰富的工具集 -违约范围广 MCP工具
- ✔️ 可扩展 -创建 在项目代码中自定义MCP工具
稳定性状态
| Unity版本 | 编辑模式 | 播放模式 | 独立 |
|---|
内容
- 步骤1:安装 Unity MCP Plugin - 选项1-安装程序 - 选项2-OpenUPM命令行界面 - 步骤2:安装 MCP Client - 步骤3:配置 MCP Client - 自动配置 - 手动配置
- 添加自定义 MCP Tool - 添加自定义 MCP Prompt
- 示例:AI驱动的象棋游戏机器人 - 为什么需要运行时使用?
- 变量 - 码头工人📦 - HTTP 运输 - STDIO 运输 - 自定义 port - 二进制可执行
- 是什么 MCP - 是什么 MCP Client - 是什么 MCP Server - 是什么 MCP Tool - 何时使用 MCP Tool - 是什么 MCP Resource - 何时使用 MCP Resource - 是什么 MCP Prompt - 何时使用 MCP Prompt
安装
步骤1:安装 Unity MCP Plugin
⚠️ Requirements (click)
\[!重要\] 项目路径不能包含空格 - ✅C:/MyProjects/Project- ❌C:/My Projects/Project
选项1-安装程序
- ⬇️ 下载安装程序
- 📂 将安装程序导入Unity项目
> - 您可以双击该文件-Unity将自动打开它 > - 或者:先打开Unity编辑器,然后单击 Assets/Import Package/Custom Package,然后选择文件
选项2-OpenUPM命令行界面
- ⬇️ 安装OpenUPM命令行界面
- 📟 在Unity项目文件夹中打开命令行
openupm add com.ivanmurzak.unity.mcp步骤2:安装 MCP Client
选择一个 MCP Client 你更喜欢——你不需要安装所有这些。这将是您与LLM交流的主要聊天窗口。
MCP协议是相当通用的,这就是为什么你可以使用任何你喜欢的MCP客户端——它和其他客户端一样流畅。唯一重要的要求是MCP客户端必须支持动态MCP工具更新。
步骤3:配置 MCP Client
自动配置
- 开放Unity项目
- 打开
Window/AI Game Developer (Unity-MCP) - 点击
Configure在您的MCP客户端

如果您的MCP客户端不在列表中,请使用窗口中显示的原始JSON将其注入MCP客户端。阅读针对您的特定MCP客户端的说明,了解如何执行此操作。
手动配置
如果自动配置因任何原因不适用于您,请使用 AI Game Developer (Unity-MCP) 窗口配置任何 MCP Client 手动。
Configure Claude Code for Windows
替换 unityProjectPath 与您的实际项目路径
claude mcp add Unity-MCP "/Library/mcp-server/win-x64/unity-mcp-server.exe" client-transport=stdioConfigure Claude Code for MacOS Apple-Silicon
替换 unityProjectPath 与您的实际项目路径
claude mcp add Unity-MCP "/Library/mcp-server/osx-arm64/unity-mcp-server" client-transport=stdioConfigure Claude Code for MacOS Apple-Intel
替换 unityProjectPath 与您的实际项目路径
claude mcp add Unity-MCP "/Library/mcp-server/osx-x64/unity-mcp-server" client-transport=stdioConfigure Claude Code for Linux x64
替换 unityProjectPath 与您的实际项目路径
claude mcp add Unity-MCP "/Library/mcp-server/linux-x64/unity-mcp-server" client-transport=stdioConfigure Claude Code for Linux arm64
替换 unityProjectPath 与您的实际项目路径
claude mcp add Unity-MCP "/Library/mcp-server/linux-arm64/unity-mcp-server" client-transport=stdio______________________________________________________________________
使用人工智能
与你的AI(LLM)沟通 MCP Client让它做任何你想做的事。你描述的任务或想法越好,它就能更好地完成工作。
一些 MCP Clients 允许您选择不同的LLM模型。请注意此功能,因为有些型号可能比其他型号好得多。
命令示例:
Explain my scene hierarchyCreate 3 cubes in a circle with radius 2Create metallic golden material and attach it to a sphere gameObject确保 Agent MCP客户端中的模式已打开LLM的高级功能
Unity MCP提供先进的工具,使LLM能够更快、更有效地工作,避免错误并在发生错误时进行自我纠正。一切都是为了高效地实现你的目标。
核心能力
- ✔️ 代理就绪工具 -通过1-2个步骤找到你需要的任何东西
- ✔️ 即时编译 -C#代码编译和执行使用
Roslyn为了更快的迭代 - ✔️ 完全资产访问 -对资产和C#脚本的读/写访问
- ✔️ 智能反馈 -描述良好的正面和负面反馈,以正确理解问题
反射驱动功能
- ✔️ 对象引用 -为即时C#代码提供对现有对象的引用
- ✔️ 项目数据访问 -以可读格式完全访问整个项目数据
- ✔️ 精细修改 -填充和修改项目中的任何数据
- ✔️ 方法发现 -在整个代码库中查找任何方法,包括已编译的DLL文件
- ✔️ 方法执行 -调用整个代码库中的任何方法
- ✔️ 高级参数 -为方法调用提供任何属性,甚至是对内存中现有对象的引用
- ✔️ Live Unity API -Unity API即时可用-即使Unity发生变化,您也可以获得全新的API
- ✔️ 自我记录 -访问任何人可读的描述
class,method,field,或property通过Description属性
______________________________________________________________________
自定义MCP
Unity MCP 支持自定义 MCP Tool, MCP Resource,以及 MCP Prompt 项目业主开发。MCP服务器从 Unity MCP Plugin 并将其暴露给客户端。MCP通信链中的任何人都将收到有关新MCP功能的信息,LLM可能会在某个时候决定使用这些功能。
添加自定义 MCP Tool
添加自定义项 MCP Tool,您需要:
- 一个类与
McpPluginToolType属性 - 类中的一个方法
McpPluginTool属性 - *可选:* 添加一个
Description为每个方法参数赋予属性,以帮助LLM理解它 - *可选:* 使用
string? optional = null属性与?以及将其标记为的默认值optional对于LLM
请注意,这条线 MainThread.Instance.Run(() => 允许您在主线程上运行代码,这是与Unity的API交互所必需的。如果你不需要这个,并且在后台线程中运行该工具是可以接受的,那么为了提高效率,请避免使用主线程。[McpPluginToolType]
public class Tool_GameObject
{
[McpPluginTool
(
"MyCustomTask",
Title = "Create a new GameObject"
)]
[Description("Explain here to LLM what is this, when it should be called.")]
public string CustomTask
(
[Description("Explain to LLM what is this.")]
string inputData
)
{
// do anything in background thread
return MainThread.Instance.Run(() =>
{
// do something in main thread if needed
return $"[Success] Operation completed.";
});
}
}添加自定义 MCP Prompt
MCP Prompt 允许您在与LLM的对话中注入自定义提示。它支持两个发件人角色:用户和助理。这是指示LLM执行特定任务的快速方法。您可以使用自定义数据生成提示,提供列表或任何其他相关信息。
[McpPluginPromptType]
public static class Prompt_ScriptingCode
{
[McpPluginPrompt(Name = "add-event-system", Role = Role.User)]
[Description("Implement UnityEvent-based communication system between GameObjects.")]
public string AddEventSystem()
{
return "Create event system using UnityEvents, UnityActions, or custom event delegates for decoupled communication between game systems and components.";
}
}______________________________________________________________________
运行时使用情况(游戏内)
使用 Unity MCP 在您的游戏/应用程序中。使用工具、资源或提示。默认情况下,没有工具,您需要实现自定义。
UnityMcpPlugin.BuildAndStart(); // Build and start Unity-MCP-Plugin, it is required
UnityMcpPlugin.Connect(); // Start active connection with retry to Unity-MCP-Server
UnityMcpPlugin.Disconnect(); // Stop active connection and close existed connection示例:AI驱动的象棋游戏机器人
有一个经典的国际象棋游戏。让我们将机器人逻辑外包给LLM。机器人应该使用游戏规则进行转弯。
[McpPluginToolType]
public static class ChessGameAI
{
[McpPluginTool("chess-do-turn", Title = "Do the turn")]
[Description("Do the turn in the chess game. Returns true if the turn was accepted, false otherwise.")]
public static Task DoTurn(int figureId, Vector2Int position)
{
return MainThread.Instance.RunAsync(() => ChessGameController.Instance.DoTurn(figureId, position));
}
[McpPluginTool("chess-get-board", Title = "Get the board")]
[Description("Get the current state of the chess board.")]
public static Task GetBoard()
{
return MainThread.Instance.RunAsync(() => ChessGameController.Instance.GetBoardData());
}
}为什么需要运行时使用?
有很多用例,让我们想象一下,你正在使用机器人进行国际象棋游戏。你可以通过编写几行代码将机器人决策外包给LLM。
______________________________________________________________________
统一 MCP Server 设置
变量
无论您选择什么启动选项,它们都支持使用环境变量和命令行参数进行自定义配置。它将使用默认值,如果你只需要启动它,不要浪费时间在变量上。只要确保Unity插件也有默认值,尤其是 --port,他们应该是平等的。
| 环境变量 | 命令行参数 | 描述 |
|---|---|---|
UNITY_MCP_PORT | --port | 客户端 -> 服务器 \ 服务器 连接超时(ms)(默认值:10000) |
UNITY_MCP_CLIENT_TRANSPORT | --client-transport | 客户端 -> 服务器 运输类型: stdio 或 http (默认值: http) |
命令行参数也支持单个选项-前缀(-port)以及一个完全没有前缀的选项(port).
码头工人📦
](https://hub.docker.com/r/ivanmurzakdev/unity-mcp-server)
确保Docker已安装。如果您使用的是Windows操作系统,请确保Docker Desktop已启动。
HTTP 运输
docker run -p 8080:8080 ivanmurzakdev/unity-mcp-serverMCP Client config:
{
"mcpServers": {
"Unity-MCP": {
"url": "http://localhost:8080"
}
}
}替换 url 如果您的真实端点托管在云中,则使用它。STDIO 运输
为了使用该变型, MCP Client 应该启动 MCP Server 在docker中。这可以通过修改 MCP Client 配置。
docker run -t -e UNITY_MCP_CLIENT_TRANSPORT=stdio -p 8080:8080 ivanmurzakdev/unity-mcp-serverMCP Client config:
{
"mcpServers": {
"Unity-MCP": {
"command": "docker",
"args": [
"run",
"-t",
"-e",
"UNITY_MCP_CLIENT_TRANSPORT=stdio",
"-p",
"8080:8080",
"ivanmurzakdev/unity-mcp-server"
]
}
}
}自定义 port
docker run -e UNITY_MCP_PORT=123 -p 123:123 ivanmurzakdev/unity-mcp-serverMCP Client config:
{
"mcpServers": {
"Unity-MCP": {
"url": "http://localhost:123"
}
}
}替换 url 如果您的真实端点托管在云中,则使用它二进制可执行
您可以启动Unity MCP Server 直接从二进制文件。您需要为您的CPU架构专门编译一个二进制文件。检查 ,它包含所有CPU架构的预编译二进制文件。
./unity-mcp-server --port 8080 --plugin-timeout 10000 --client-transport stdioMCP Client config:
替换 `
` 与您的Unity项目路径。
{
"mcpServers": {
"Unity-MCP": {
"command": "
/Library/mcp-server/win-x64/unity-mcp-server.exe",
"args": [
"--port=8080",
"--plugin-timeout=10000",
"--client-transport=stdio"
]
}
}
}______________________________________________________________________
运作原理
Unity MCP 作为LLM和Unity之间的桥梁。它向LLM公开并解释Unity的工具,然后LLM理解界面并根据用户请求使用工具。
该系统具有高度的可扩展性,您可以定义自定义 MCP Tools, MCP Resource 或 MCP Prompt 直接在Unity项目代码库中,向AI或自动化客户端展示新功能。这使得Unity MCP成为构建高级工作流程、快速原型制作和将AI驱动功能集成到开发过程中的灵活基础。
是什么 MCP
MCP-模型上下文协议。简而言之,就是 USB Type-C 对于AI,特别是LLM(大型语言模型)。它教LLM如何使用外部功能。例如在这种情况下的Unity引擎,甚至是代码中的自定义C#方法。 官方文档.
是什么 MCP Client
这是一个带有聊天窗口的应用程序。它可能有智能代理来更好地运行,它可能嵌入了先进的MCP工具。一般来说,做得好的MCP客户端是执行任务的AI成功率的50%。这就是为什么选择最佳的使用方式非常重要。
是什么 MCP Server
它是一座桥梁 MCP Client 以及“其他东西”,在这个特殊情况下,它是Unity引擎。该项目包括 MCP Server.
是什么 MCP Tool
MCP Tool 是LLM可以调用以与Unity交互的函数或方法。这些工具充当自然语言请求和实际Unity操作之间的桥梁。当你要求AI“创建立方体”或“更改材质颜色”时,它会使用MCP工具来执行这些操作。
主要特征:
- 可执行函数 执行特定操作
- 键入参数 描述有助于LLM了解要提供哪些数据
- 返回值 提供有关操作成功或失败的反馈
- 线程感知 -可以在用于Unity API调用的主线程上运行,也可以在用于繁重处理的后台线程上运行
何时使用 MCP Tool
- 自动化重复性任务 -为您经常进行的常见操作创建工具
- 复杂的操作 -将多个Unity API调用捆绑到一个易于使用的工具中
- 项目特定工作流 -构建了解项目特定结构和约定的工具
- 容易出错的任务 -创建包括验证和错误处理的工具
- 自定义游戏逻辑 -将游戏系统暴露给人工智能,以进行动态内容创建
示例:
- 使用特定组件创建和配置游戏对象
- 批处理资产(纹理、材料、预制件)
- 设置照明和后处理效果
- 生成标高几何图形或按程序放置对象
- 配置物理设置或碰撞层
是什么 MCP Resource
MCP Resource 提供对Unity项目中数据的只读访问。与执行操作的MCP工具不同,资源允许LLM检查和了解项目的当前状态、资产和配置。将它们视为“传感器”,为您的项目提供人工智能背景。
主要特征:
- 只读访问 投影数据和Unity对象
- 结构化信息 以法学硕士能够理解的格式呈现
- 实时数据 这反映了项目的当前状态
- 情境意识 帮助人工智能做出明智的决策
何时使用 MCP Resource
- 项目分析 -让AI了解您的项目结构、资产和组织
- 调试协助 -提供当前状态信息以进行故障排除
- 智能建议 -提供AI上下文以提供更好的建议
- 文档生成 -根据项目状态自动创建文档
- 资产管理 -帮助AI了解可用的资产及其属性
示例:
- 展示场景层次结构和游戏对象属性
- 列出可用材质、纹理及其设置
- 显示脚本依赖关系和组件关系
- 显示当前照明设置和渲染管道配置
- 提供有关音频源、动画和粒子系统的信息
是什么 MCP Prompt
MCP Prompt 允许您在与LLM的对话中注入预定义的提示。这些是智能模板,可以提供上下文、指令或知识来指导人工智能的行为。提示可以是静态文本,也可以根据项目的当前状态动态生成。
主要特征:
- 情境指导 这会影响人工智能的反应
- 基于角色 -可以模拟不同的角色(用户请求或助理知识)
- 动态内容 -可以包括实时项目数据
- 可重复使用的模板 用于常见场景和工作流
何时使用 MCP Prompt
- 提供领域知识 -分享特定于您项目的最佳实践和编码标准
- 设置编码约定 -建立命名约定、体系结构模式和代码风格
- 给出项目结构的上下文 -解释你的项目是如何组织的,为什么
- 共享工作流程说明 -为常见任务提供分步程序
- 注入专业知识 -添加有关特定Unity功能、第三方资产或自定义系统的信息
示例:
- “公共方法始终使用PascalCase,私有字段始终使用camelCase”
- “此项目使用位于Scripts/Events/中的自定义事件系统”
- “创建UI元素时,始终将其添加到Scene/UI/MainCanvas中的Canvas中”
- “性能至关重要-更喜欢频繁实例化对象的对象池”
- “此项目遵循SOLID原则-解释任何架构决策”
______________________________________________________________________
贡献💙💛
我们非常感谢您的贡献。带上你的想法,让我们让游戏开发比以往任何时候都更简单!你有新的想法吗 MCP Tool 或者功能,或者你发现了一个错误并知道如何修复它?
