title: “Unreal Mcp — Automate Unreal Engine editor scenes, actors, and renders” sidebar_label: “Unreal Mcp” description: “Automate Unreal Engine editor scenes, actors, and renders”
{/* 本页面由 website/scripts/generate-skill-docs.py 根据技能对应的 SKILL.md 文件自动生成。请直接编辑源文件 SKILL.md,而非此页面。 */}
Unreal Mcp
用于自动化处理 Unreal Engine 编辑器中的场景、角色及渲染任务。
技能元数据
| 来源 | 可选 — 通过 hermes skills install official/creative/unreal-mcp 命令安装 |
| 路径 | optional-skills/creative\unreal-mcp |
| 版本 | 1.0.0 |
| 开发者 | Hermes Agent |
| 许可协议 | MIT |
| 支持平台 | linux、macos、windows |
| 标签 | unreal、unreal-engine、ue5、3d、mcp、scenes、cinematics、lighting、gamedev |
参考:完整的 SKILL.md 文件
Unreal Engine MCP 技能
Hermes MCP 目录中 unreal-engine 项的配套技能。该 MCP 服务器(Epic 官方推出的实验性“Unreal MCP”插件,内部编号为 ModelContextProtocol)运行在 Unreal Editor 进程内部,将编辑器功能以类型化工具的形式呈现出来。本技能旨在教授如何高效地使用这些工具:探索实时可用的工具界面、安全地安排操作顺序、将通俗的请求转化为效果出色的场景,以及通过视觉方式验证成果。用户仅需启动编辑器,无需再手动进行其他操作。
适用场景
当用户需要在虚幻引擎中完成各类操作时即可使用该功能:构建或设计场景、生成/移动/删除游戏对象、设置光照与氛围、创建或调整材质实例、规划摄像机拍摄角度、截取屏幕截图或渲染图像、导入资源、查看场景或用户界面、运行自动化测试,或是为编辑器编写脚本。它既适用于单一操作(如“将太阳设置为黄金时刻效果”),也适用于完整的多步骤项目(如“为我创建一个带有营火的氛围感森林空地,并对其进行渲染”)。
不适用于:DCC风格的网格建模/雕刻操作(可在Blender中建模后再导入结果),也不适用于编辑虚幻引擎的C++项目源代码(那是常规的编程工作——应使用终端;该功能专注于实时编辑器操作)。
先决条件
需按以下顺序完成两个步骤:在Hermes连接之前,必须先启动编辑器端。
编辑器端的一次性设置
- 已打开项目的 Unreal Editor 5.8+ 版本。(macOS 系统需完整安装 Xcode 并接受其许可协议——否则编辑器在首次启动时会直接退出;详情请参阅相关注意事项。)
- 进入 Edit > Plugins,启用 Unreal MCP(其依赖的 Toolset Registry 会自动被启用)。系统提示时请重启编辑器。
- 所有的工具集均为独立于服务器提供的文件:请在同一个插件管理界面中同时启用 AllToolsets 插件。Unreal MCP 本身并不包含任何工具——正是 AllToolsets 提供了那些预装的工具集(如 SceneTools、ActorTools、MaterialInstanceTools、ObjectTools 等);如果省略此插件,虽然服务器能够连接成功,但代理程序将没有可调用的工具。
- 进入 Edit > Editor Preferences > General > Model Context Protocol,启用 Auto Start Server。默认绑定地址为
http://127.0.0.1:8000/mcp(端口和路径可在同一界面中进行配置;服务器名称为unreal-mcp)。如需手动启动服务器,可在编辑器控制台中输入ModelContextProtocol.StartServer命令(使用反引号键)。
Hermes 端只需执行一次的操作
hermes mcp install unreal-engine
该命令会创建一个名为 mcp_servers.unreal-engine 的 HTTP 配置项,指向 http://127.0.0.1:8000/mcp,并主动向该服务器查询可用的工具。请在编辑器与服务器均处于运行状态时执行此命令,这样才能确保查询到真实的工具列表。如果用户在“编辑器偏好设置”中更改了端口或路径,则需同步修改 ~/.hermes/config.yaml 文件中 mcp_servers.unreal-engine 下的 url 值以保持一致。
请勿在 Hermes 中使用 ModelContextProtocol.GenerateClientConfig——该函数是为 Claude Code/Cursor 等工具生成 .mcp.json 格式的配置文件。Hermes 会通过 config.yaml 中的配置项来建立连接。
每次会话流程
- 启动 Unreal Editor,等待项目加载完成;确认服务器已启动(可在输出日志中查看绑定地址,或手动运行
ModelContextProtocol.StartServer)。 - 启动 Hermes 会话。相关工具会以
mcp_unreal_engine_*的形式注册。如果未出现这些工具,说明编辑器尚未启动——请先启动编辑器,然后再打开新的 Hermes 会话。 - 进行合理性检查:调用
mcp_unreal_engine_list_toolsets并确认能获取到工具集列表。
工具展示方式:动态发现而非固定列表
默认情况下,该插件以工具搜索模式运行:tools/list 只会返回三个元工具,所有实际工具都需要通过这些元工具来访问。在 Hermes 中,这些工具的呈现形式如下:
| Hermes 工具 | 功能 |
|---|---|
mcp_unreal_engine_list_toolsets | 显示所有已注册工具集的名称与描述 |
mcp_unreal_engine_describe_toolset | 提供某个特定工具集下所有工具的完整 JSON 结构 |
mcp_unreal_engine_call_tool | 带参数调用指定工具,并获取执行结果 |
工具的发现过程始终遵循以下顺序:
list_toolsets→ 查看该项目实际具备哪些功能组
(具体内容取决于项目配置:已启用的插件、游戏功能插件以及任何自定义工具集都会影响结果)。返回的名称均为完整限定形式(如editor_toolset.toolsets.scene.SceneTools、EditorToolset.EditorAppToolset),可直接将其作为toolset_name使用。- 对目标功能组调用
describe_toolset→ 查看真实的参数结构。切勿猜测参数名称——参数结构才是官方定义的规范。 - 使用完整的工具集名称、简写的工具名称(如
find_actors,而非带点号的完整形式),以及符合参数结构的参数,来调用call_tool。
请将本次会话中获取的信息缓存起来;只有当编辑器端发生变更时(如新插件启用、自定义工具集创建或执行了 RefreshTools 命令),才需要重新列出工具集信息。
另一种“即时模式”(在编辑器偏好设置中关闭“启用工具搜索”选项)会将每个工具作为独立的 mcp_unreal_engine_<tool> 条目进行展示,此时工具发现功能会在执行 hermes mcp install/configure 命令时才发生。默认模式即为工具搜索模式,本技能也以此为前提;此外,该模式还能避免在每次 API 调用中包含参数结构信息,因此建议优先使用此模式。
有关已发布的工具集列表、自定义工具集的创建方法以及完整的插件配置/控制台命令参考,可查看 references/tool-surface.md 文档。
运行循环
所有 Unreal 相关任务都遵循相同的运行循环:
-
**先进行检测。**在操作任何内容之前,先列出可用的工具集,再查询场景/关卡的当前状态。切勿假设关卡是空的或处于默认状态。在不太熟悉的项目中,还需检查项目中已注册的智能体技能(通过
call_tool→AgentSkillToolset.ListSkills查看):与当前操作匹配的项目技能指令会覆盖该技能的通用默认设置。 -
分步执行单功能操作。每次
call_tool操作应对应一个逻辑步骤。服务器会在游戏线程上按顺序执行这些工具——如果执行的是大型复杂操作,编辑器界面将会被冻结直至操作完成,同时还可能引发客户端超时问题。例外情况是:对于包含5次及以上相同类型操作的循环,可使用一次ProgrammaticToolset.execute_tool_script在服务器端将它们批量处理,这样仍不会违反顺序执行规则(详见references/advanced-workflows.md)。 -
**绝不能同时发起重叠调用。**在一个操作轮次中不要批量发送多个
mcp_unreal_engine_*类型的调用——Hermes 会并行处理这些批量调用,而对游戏线程的并行操作则会导致死锁或失败。必须严格遵循“一次调用、等待结果、再执行下一次”的原则,这一规则优先于一般关于并行工具调用的建议。 -
**务必查看所有返回结果。**许多工具(如蓝图编译、材质编辑、控件创建等)会在响应内容中报告操作是否成功,即便没有出现协议层面的异常。只要结果并非明确显示成功,就应立即停止并进行分析,而非置之不理。在修改属性后,还需将值读回——因为某些属性修改路径实际上并不会产生任何实际效果(详见相关注意事项)。
-
进行视觉与结构层面的验证。 在完成每个里程碑后,通过查询你所修改的元素或属性来确认当前状态;在构图至关重要的情况下,务必截取视图截图(有关截图选项,请参阅
references/tool-surface.md);并对该图片使用vision_analyze工具进行分析——毕竟你是艺术总监,应由你自己来评判效果)。 -
频繁保存。 编辑内容仅在内存中存在,直到被保存到对应的包或层级中;如果编辑器崩溃,自上次保存以来的所有更改都将丢失,而且通过 MCP 进行的编辑也无法可靠地撤销。因此,在进行任何大规模修改之前和之后,以及每个里程碑完成后,都应及时保存。
-
提供具体的报告信息。 需注明相关元素的标签、资源路径(如
/Game/...)、以及截图或渲染文件的存储位置。
工作时的基本准则:
- 单位为厘米;坐标轴规则为Z轴向上、X轴向前;旋转角度以度为单位(旋转器功能:绕X轴滚转、绕Y轴俯仰、绕Z轴偏航)。人类眼睛高度约为165厘米,一扇门的大小约为210×90厘米。完整参数表请参见
references/scene-craft.md。 - 内容路径使用完整的包名:项目内容路径为
/Game/Folder/Asset.Asset,引擎基础图形路径则为/Engine/BasicShapes/Cube.Cube。 - 演员标签(在Outliner中显示,可设置且不唯一)与演员名称(内部存储且唯一)并非同一概念。建议优先通过标签或类查询来定位演员,再保留工具返回的标识符。
- 建议使用符合物理规律的照明参数(勒克斯/坎德拉/开尔文),而非随意设定的亮度数值——但首先需查看现有太阳的光强度,以了解场景的校准规则。模板世界通常将光强度设置为
10,而物理值会使其数值大幅上升(具体数值见references/scene-craft.md,校准规则见references/pitfalls.md#12b)。
从自然语言到场景模型
用户提供的是需求而非详细规格。在构建之前先进行转换:
-
明确需求要点。需确定主题、氛围、时间时段、场景是室内还是室外、风格以及最终输出形式(截图?渲染图?可运行的关卡?)。最多只需询问一轮以澄清疑问,随后便应立即着手执行——你才是技术负责人,切勿用《虚幻引擎》的专业术语来回困扰用户。
-
规划构建顺序。采用以下高效顺序:先构建关卡/环境框架 → 接着放置主要几何体/网格 → 再设置光照与氛围 → 随后处理材质 → 添加场景装饰细节 → 安排摄像机位置 → 最后进行捕获或渲染。对于多步骤的构建任务,可将该计划以待办清单的形式列出。
-
按照上述流程逐步构建,每完成一个阶段就截取一张截图。
-
自我进行艺术指导。将每张截图与需求要点逐一对比:轮廓是否清晰可辨?光线方向和强度是否合理?地平线是否不在正中央?与人类身高参照物相比,比例是否准确?在进入下一阶段之前必须先修正这些问题。
-
交付成果。以文件形式提供截图或渲染图(路径为
MEDIA:),同时附上一份简短总结,说明关卡中包含的内容及其保存位置。
references/recipes.md 文件中收录了完整的构建案例(包括室外日光场景、氛围浓厚的室内场景、黄金时刻风格的影视级画面及渲染结果,以及资产导入与放置流程),其中详细列出了相应的调用顺序与参数值。
参考文件
根据需要加载这些文件;在整个过程中请始终牢记SKILL.md中规定的规则。
| 参考文档 | 内容说明 |
|---|---|
references/tool-surface.md | 已发布的工具集目录、发现协议详解、插件控制台命令/CVars/标志参数、截图与捕获路径、MCP Inspector调试方法,以及如何通过自定义Python/C++工具集进行扩展 |
references/advanced-workflows.md | 复杂工作流相关内容,包含经过实际验证的方案:ProgrammaticToolset批量处理机制、Blueprint DSL编写流程(创建→DSL编写→编译→启动)、PIE测试会话、140种工具的序列化使用方式、LogsToolset自我调试功能、自动化测试方法、语义化资产搜索功能、配置设置,以及针对不同场景的决策表 |
references/scene-craft.md | 数值参考表:物理光照强度、色温、曝光值/EV100、雾密度,以及不同场景(正午/黄金时刻/阴天/夜晚/室内)的配色方案,还包括比例表与内容路径规范 |
references/recipes.md | 完整的端到端构建案例,包含精确的操作步骤顺序 |
references/pitfalls.md | 设置、运行时及工作流中可能出现的常见问题及解决方案——在首次使用前以及遇到异常时请务必查阅 |
常见问题(重点提示,完整列表见 references/pitfalls.md)
- 启动顺序很重要。 首先需启动编辑器与服务器,之后再启动Hermes会话。若缺少
mcp_unreal_engine_*工具,说明启动顺序有误。 - 每次只能调用一次。 由于游戏线程为串行处理模式,因此不支持批量调用,也无法同时执行多个操作。
- 每次调用时编辑器界面会冻结。 这是设计使然(属于游戏线程执行逻辑)。在长时间运行的操作中应向用户发出提示,并尽量缩短单次调用的操作量。
- 模态对话框会阻塞所有操作。 若有工具调用打开了模态编辑器对话框(或与其冲突),该调用将会暂停,直到用户手动关闭对话框为止。如果调用长时间挂起,应提示用户在编辑器中检查是否存在对话框。
- 长时间操作的超时问题。 Hermes 的默认单次调用超时时间为 120 秒;而资产导入、大规模场景保存及渲染操作所需时间可能超过此限制。对于那些涉及大量渲染或导入操作的场景,可在
~/.hermes/config.yaml文件中调高mcp_servers.unreal-engine.timeout的值。 - 过时的工具架构信息。 在编写/热加载工具集或启用插件之后,需在编辑器控制台中执行
ModelContextProtocol.RefreshTools命令,然后再执行list_toolsets命令。若新增了 C++ 层的UFUNCTION,则必须重启整个编辑器——因为“实时编码”功能无法识别这些新函数。 - 实验性插件特性。 不同引擎版本之间的 API 及工具结构可能会发生变化;因此应以
describe_toolset提供的信息为准,而非仅依赖内存中的数据,包括本技能所提供的示例在内。当文档描述与实时生成的架构信息不一致时,以实时架构信息为准。 - 服务器访问范围不应超出本地主机。 该服务器按设计仅支持本地回环访问,且不支持身份验证。绝不可建议将其开放为更广的访问范围。
- 许可说明。 服务器在启动时会记录相关信息:通过插件传输至已连接的 LLM 服务的数据属于 UE 使用许可协议(UE EULA,第 6 条(e)款)所规定的受许可技术——用户有责任确保其使用的 LLM 服务提供商不会利用这些数据进行训练。如果用户询问数据处理相关问题,应向其说明这一点。
验证清单
- 在会话开始时(连接正常),
list_toolsets会返回相应的工具集列表。 - 在进行首次编辑之前会先查询场景状态,绝不会假设其为空。
- 每完成一个阶段后,都会重新获取已更改的演员/属性信息,并根据需求文档检查截图内容。
- 每个阶段结束后以及最终阶段,都会保存关卡数据及脏数据包。
- 所有交付成果都会保存在磁盘上(截图和渲染文件的路径均已确认),并且会通过完整路径告知用户具体位置。
- 编辑器始终处于干净状态:没有未处理的弹窗,也没有未保存的意外更改,同时会明确告知用户究竟创建了什么、修改了什么以及修改位置在哪。