版本: 1.0.0 | 最后更新: 2026-05-08 适用引擎: Unreal Engine 5.7
UECopilot 是一个集成在 Unreal Engine 5 编辑器中的 AI 辅助开发插件。它通过蓝图 MCP 服务端 (Blueprint Model Context Protocol Server, UEMCP),将 UE5 的蓝图数据结构和编辑操作暴露为 HTTP API,让 AI 模型(如 Claude、GPT 等)能够直接读取、理解、创建和修改蓝图资产。
一句话总结:UECopilot 让 AI 能"看懂"你的蓝图,并能像一名经验丰富的 TA/程序员一样帮你操作它们。
| 模式 | 启动方式 | 适用场景 | 特点 |
|---|---|---|---|
| 编辑器模式 | UE5 编辑器启动时自动加载 | 日常开发 | 编辑器和 MCP 服务共存,实时操作 |
UECopilot 的 UEMCP 模块经过全面分析,当前提供 80+ 个 MCP 工具,覆盖以下 9 大能力域:
| 能力域 | 工具数量 | 能力评级 |
|---|---|---|
| 蓝图读取与检索 | 8 | 稳定 |
| 蓝图图编辑与节点操作 | 15 | 稳定 |
| 蓝图变量与类型系统 | 6 | 稳定 |
| 函数/参数管理 | 4 | 稳定 |
| 蓝图结构与元数据 | 9 | 稳定 |
| 材质系统 | 18 | 成熟 |
| 动画蓝图系统 | 12 | 发展中 |
| 安全与快照系统 | 6 | 稳定 |
| 资产发现与反射 | 5 | 成熟 |
| Unreal Python API(AI + World Building) | Level Automation (Procedural Tools) | 计划中 |
能力评级说明:
- 成熟:工具功能完整,边缘情况处理完善,有 SEH 保护
- 稳定:核心路径可用,部分边界情况需留意
- 发展中:基础能力可用,高级场景有待完善
场景一:AI 辅助蓝图调试
场景二:AI 辅助蓝图重构
场景三:AI 辅助材质创建
场景四:AI 辅助动画状态机
场景五:安全实验
推荐的工作流程是 "预览 → 快照 → 执行 → 验证" 四个步骤:
好的提示词示例:
需要避免的模糊提示词:
MCP 服务不是头部安全的:虽然使用了 SEH(结构化异常处理)保护,但极端情况下错误操作仍可能导致编辑器崩溃。建议在操作前先保存项目,并备份重要蓝图。
所有写操作支持 Ctrl+Z 撤销:服务端为每个写操作包装了 Undo 事务,但在持续操作后建议及时手动保存。
快照保存在磁盘:快照文件保存在 Project/Saved/BlueprintMCP/Snapshots/ 目录,不会随项目版本控制。重要操作建议手动备份。
AI 模型对 UE 术语的理解差异:不同 AI 模型对 UE 特定术语(如"引脚连接"、"分解结构体"、"事件调度器")的理解可能存在差异,请在提示词中使用 UE5 官方术语。
说明:以下列出所有可通过 AI 对话直接调用的 MCP 工具。工具名称采用蛇形命名法(snake_case),您可以在提示词中直接使用这些工具名。
| 工具名 | 功能 | 关键参数 |
|---|---|---|
list_blueprints | 列出所有蓝图资产,支持按名称、父类筛选 | filter, parentClass, type |
get_blueprint | 获取指定蓝图的详细信息(变量、函数、组件等) | name |
get_blueprint_summary | 获取蓝图的简要摘要(与 get_blueprint 相同) | name |
get_blueprint_graph | 获取指定图(EventGraph、FunctionGraph 等)的完整结构 | name, graph |
describe_graph | 获取图的伪代码风格描述(与 get_blueprint_graph 相同) | name, graph |
search_blueprints | 在蓝图中搜索特定名称的节点 | query, path, maxResults |
find_asset_references | 查找引用指定类的所有节点 | class, blueprint |
search_by_type | 按节点类型搜索蓝图中的使用情况 | nodeClass, blueprint, graph |
| 工具名 | 功能 | 关键参数 |
|---|---|---|
add_node | 在指定图中添加新节点 | blueprint, graph, nodeType, position |
delete_node | 删除图中的一个节点 | blueprint, nodeId |
duplicate_nodes | 复制一个或多个节点 | blueprint, nodeIds, offset |
move_node | 移动节点到新位置 | blueprint, nodeId, position |
connect_pins | 连接两个节点之间的引脚 | blueprint, sourceNodeId, sourcePin, targetNodeId, targetPin |
disconnect_pin | 断开指定引脚的所有连接 | blueprint, nodeId, pinName |
refresh_all_nodes | 刷新图中所有节点(清理断开引用) | blueprint |
set_pin_default | 设置引脚的默认值 | blueprint, nodeId, pinName, value |
get_pin_info | 获取引脚的详细信息(类型、方向、连接状态) | blueprint, nodeId, pinName |
check_pin_compatibility | 预检两个引脚是否可以连接 | blueprint, sourceNodeId, sourcePin, targetNodeId, targetPin |
get_node_comment | 获取节点的注释文本 | blueprint, nodeId |
set_node_comment | 设置节点的注释文本 | blueprint, nodeId, comment |
replace_function_calls | 替换蓝图中的函数调用目标类(支持 dry_run 预览) | blueprint, oldClass, newClass, dryRun |
change_struct_node_type | 更改 Break/Make 结构体节点的结构体类型 | blueprint, nodeId, structType |
| 工具名 | 功能 | 关键参数 |
|---|---|---|
add_variable | 添加新成员变量到蓝图 | blueprint, variableName, variableType, category |
remove_variable | 删除蓝图的成员变量 | blueprint, variableName |
change_variable_type | 修改变量类型(支持 dry_run 预览影响分析) | blueprint, variable, newType, dryRun |
set_variable_metadata | 设置变量的元数据(分类、描述等) | blueprint, variable, metadata |
set_blueprint_default | 设置蓝图 CDO 默认属性值 | blueprint, propertyName, value |
delete_asset | 删除指定的资产文件 | path |
| 工具名 | 功能 | 关键参数 |
|---|---|---|
add_function_parameter | 为函数/自定义事件添加参数 | blueprint, functionName, paramName, paramType |
remove_function_parameter | 删除函数/自定义事件的参数 | blueprint, functionName, paramName |
change_function_parameter_type | 修改函数参数类型(支持 dry_run 预览) | blueprint, functionName, paramName, newType, dryRun |
reparent_blueprint | 更改蓝图的父类(支持 C++ 类和蓝图类) | blueprint, newParentClass |
| 工具名 | 功能 | 关键参数 |
|---|---|---|
create_blueprint | 创建新的蓝图资产 | blueprintName, packagePath, parentClass, blueprintType |
create_graph | 在蓝图中创建新图(EventGraph、FunctionGraph 等) | blueprint, graphName, graphType |
delete_graph | 删除蓝图中的指定图 | blueprint, graphName |
rename_graph | 重命名蓝图中的图 | blueprint, oldName, newName |
add_interface | 为蓝图添加接口实现 | blueprint, interfaceName |
remove_interface | 移除蓝图实现的接口(可选择保留函数) | blueprint, interfaceName, preserveFunctions |
list_interfaces | 列出蓝图已实现的所有接口 | blueprint |
add_event_dispatcher | 添加事件调度器(支持带参数的调度器) | blueprint, dispatcherName, parameters |
list_event_dispatchers | 列出蓝图所有的事件调度器及其参数 | blueprint |
| 工具名 | 功能 | 关键参数 |
|---|---|---|
add_component | 在蓝图的 SCS 中添加组件 | blueprint, componentClass, name, parentComponent |
remove_component | 删除蓝图的 SCS 组件 | blueprint, componentName |
list_components | 列出蓝图 SCS 中的所有组件 | blueprint |
| 工具名 | 功能 | 关键参数 |
|---|---|---|
create_struct | 创建用户定义结构体资产(支持添加属性) | assetPath, properties |
create_enum | 创建用户定义枚举资产 | assetPath, values |
add_struct_property | 为结构体添加新属性 | structPath, propertyName, propertyType |
remove_struct_property | 从结构体中删除属性 | structPath, propertyName |
材质读取:
| 工具名 | 功能 | 关键参数 |
|---|---|---|
list_materials | 列出所有材质和材质实例资产 | filter, type |
get_material | 获取材质的详细信息(域、混合模式、参数列表、引用贴图) | name |
get_material_graph | 获取材质图的节点连接结构 | name |
describe_material | 对材质图进行详细的伪代码描述 | material |
search_materials | 搜索材质中的表达式 | query |
find_material_references | 查找引用指定贴图或材质函数的材质 | texture, materialFunction |
材质写入:
| 工具名 | 功能 | 关键参数 |
|---|---|---|
create_material | 创建新材质资产(支持域、混合模式设置) | name, packagePath, domain, blendMode |
set_material_property | 设置材质顶层属性(域、混合模式、双面等) | material, property, value |
add_material_expression | 在材质图中添加表达式节点 | material, expressionClass, position |
delete_material_expression | 删除材质图中的表达式 | material, expressionId |
connect_material_pins | 连接材质图中的两个引脚 | material, expression, pinName, targetExpression, targetPin |
disconnect_material_pin | 断开材质指定引脚的所有连接 | material, expressionId, pinName |
set_expression_value | 设置材质表达式的参数值 | material, expressionId, parameter, value |
move_material_expression | 移动材质表达式在编辑图中的位置 | material, expressionId, position |
材质实例:
| 工具名 | 功能 | 关键参数 |
|---|---|---|
create_material_instance | 创建材质实例常量(MIC) | name, packagePath, parentMaterial |
set_material_instance_parameter | 设置材质实例的参数覆盖值 | materialInstance, parameterName, value, type |
get_material_instance_parameters | 获取材质实例的所有可覆写参数列表 | materialInstance |
reparent_material_instance | 更改材质实例的父材质 | materialInstance, newParent |
材质函数:
| 工具名 | 功能 | 关键参数 |
|---|---|---|
list_material_functions | 列出所有材质函数资产 | filter |
get_material_function | 获取材质函数的详细信息 | name |
create_material_function | 创建新的材质函数资产 | name, packagePath |
材质安全:
| 工具名 | 功能 | 关键参数 |
|---|---|---|
validate_material | 编译验证材质 | material |
snapshot_material_graph | 对材质图做快照 | material |
diff_material_graph | 对比材质图与快照的差异 | material, snapshotId |
restore_material_graph | 从快照恢复材质图 | material, snapshotId |
| 工具名 | 功能 | 关键参数 |
|---|---|---|
create_anim_blueprint | 创建动画蓝图资产 | name, packagePath, skeleton, parentClass |
add_state_machine | 在动画蓝图中添加状态机 | blueprint, name |
add_anim_state | 在状态机中添加动画状态 | blueprint, stateMachine, stateName |
remove_anim_state | 从状态机中删除动画状态 | blueprint, stateName |
add_anim_transition | 在状态之间添加转换规则 | blueprint, fromState, toState |
set_transition_rule | 设置状态转换的规则蓝图 | blueprint, transitionId, ruleBlueprint |
add_anim_node | 在动画状态中添加动画节点 | blueprint, stateName, nodeType |
set_state_animation | 设置状态使用的动画序列 | blueprint, stateName, animation |
list_anim_slots | 列出动画蓝图的插槽(Slots) | blueprint |
list_sync_groups | 列出动画蓝图的同步组(Sync Groups) | blueprint |
create_blend_space | 创建混合空间资产(1D/2D) | name, packagePath, skeleton |
set_blend_space_samples | 设置混合空间的采样点 | blendSpace, samples |
| 工具名 | 功能 | 关键参数 |
|---|---|---|
snapshot_graph | 创建蓝图的图快照(保存在磁盘) | blueprint, graphs |
diff_graph | 将当前图与快照进行差异对比 | blueprint, snapshotId |
restore_graph | 从快照恢复蓝图图 | blueprint, snapshotId |
find_disconnected_pins | 查找图中所有未连接的输入引脚 | blueprint |
analyze_rebuild_impact | 分析蓝图重建的潜在影响范围 | blueprint, changeDescription |
diff_blueprints | 对比两个蓝图的图结构差异 | blueprintA, blueprintB, graph |
| 工具名 | 功能 | 关键参数 |
|---|---|---|
list_classes | 列出所有可用的 UClass | filter |
list_functions | 列出指定类的所有函数 | className, filter |
list_properties | 列出指定类的所有属性 | className, filter |
rescan_assets | 重新扫描资产注册表,刷新缓存 | 无 |
server_status | 查看 MCP 服务器运行状态和资产统计 | 无 |
类型解析器(ResolveTypeFromString)
支持的类型解析格式:
| 输入格式 | 示例 | 解析结果 |
|---|---|---|
| 基本类型 | int, float, bool, string, text | 对应基本引脚类型 |
| 对象引用 | object:Actor | UObject 子类引用 |
| 软对象 | softobject:Texture2D | 软对象引用 |
| 类引用 | class:Actor | 类引用 |
| 软类引用 | softclass:AnimInstance | 软类引用 |
| 结构体 | struct:Vector, struct:Transform | 结构体引脚类型 |
| 枚举 | enum:ETraceTypeQuery | 枚举字节类型 |
| 接口 | interface:BPI_Interact | 接口引用 |
| 数组 | array:int, array:object:Actor | TArray 类型 |
SEH 安全保护(Windows 专用)
对于高风险操作(蓝图编译、材质表达式添加、包保存等),使用了 __try/__except 结构化异常处理(SEH)机制。这意味着即使操作导致引擎内部崩溃(如访问冲突),服务也不会完全崩溃,而是返回错误信息。
Undo 事务支持
所有修改蓝图的工具调用都会包裹在 Undo/Redo 事务中,这意味着在编辑器中使用时,可以通过 Ctrl+Z 撤销 AI 执行的操作。
| 类别 | 限制说明 | 影响程度 |
|---|---|---|
| 多用户 | 服务为单用户设计,不支持多人同时操作 | ⚠️ 中 |
| 网络 | 仅监听 127.0.0.1,不支持远程访问 | 🔒 安全设计 |
| 版本兼容 | 基于 UE5.4+ API,未在 UE4 测试 | ⚠️ 高 |
| 平台 | SEH 保护仅限 Windows;材质系统 SEH 有专用实现 | ⚠️ 中 |
| 热重载 | 插件模块热重载后需要重新连接 | ⚠️ 低 |
| 大项目 | 上万个蓝图的超大项目首次扫描可能耗时数秒 | ⚠️ 中 |
| 编译安全 | 蓝图编译触发完整编译链,复杂蓝图可能耗时 | ⚠️ 中 |
| AI 理解 | AI 模型对 UE 图结构、引脚类型的理解有其局限性 | ⚠️ 需注意 |
使用自然语言通过 AI 模型操作 UE5 蓝图,存在以下核心挑战:
蓝图图是一个二维视觉结构。AI 只能看到一个扁平的 JSON 节点列表,丢失了空间信息,例如:
影响:AI 难以理解图的"设计意图",只能看到结构化的连接数据。
引脚类型在 UE5 中是一个复杂系统:
| 引脚的显性信息 | 需要的隐性知识 |
|---|---|
| PinCategory = "object" | 需要知道子类关系树 |
| PinSubCategoryObject | 需要理解对象引用 vs 类引用 |
| bIsReference | 需要知道传值 vs 传引用的语义差异 |
| PinValueType | 需要理解 Map/Set 容器的键值类型关系 |
影响:AI 在构造 connect_pins 请求时,可能给出语义不正确的引脚配对。
一个简单的修改可能产生连锁反应:
影响:AI 难以完整预测一个变更的全部级联效应,即使有 dryRun 支持。
| 术语 | 在不同上下文中的含义 |
|---|---|
| "节点" | 可以是蓝图节点、材质表达式、动画状态或者骨架节点 |
| "连接" | 可以是引脚连接、状态转换或者组件父子关系 |
| "类型" | 可以是变量类型、引脚类型、节点类型或者资产类型 |
| "图" | 可以是 EventGraph、FunctionGraph、AnimationGraph 或 MaterialGraph |
影响:AI 可能混淆不同上下文中的术语含义,导致请求参数错误。
影响:插件本身无状态,每次工具调用都是独立的。AI 模型需要在对话中维护状态,但上下文窗口有限。
插件层面已实现的缓解措施:
问:操作蓝图后没有生效
saved 字段是否为 true问:蓝图编译出现错误
validate_blueprint 工具查看具体错误信息restore_graph 恢复问:AI 无法找到指定的蓝图
list_blueprints 工具查看所有可用蓝图问:首次调用 list_blueprints 响应慢
首次调用会触发资产注册表全量扫描。后续调用使用缓存,速度会提升。
| 统计项 | 数值 |
|---|---|
| MCP 工具总数 | 80+ |
| 能力域 | 9 大类 |
| 支持的资产类型 | Blueprint, Material, MaterialInstance, MaterialFunction, AnimBlueprint, UserDefinedStruct, UserDefinedEnum, BlendSpace |
| 蓝图引脚类型 | 支持状态 |
|---|---|
| boolean, byte, int, int64, float, double, name, string, text | ✅ 完整 |
| object, softobject, class, softclass, interface | ✅ 完整 |
| struct (Vector, Transform, Rotator, Color 等) | ✅ 完整 |
| enum | ✅ 完整 |
| array, set, map | ✅ 基础支持 |
| delegate, mcdelegate | ✅ 基础支持 |
UECopilot 的目标是让 AI 成为 UE5 开发者的得力副驾——不是替代你的判断力,而是帮助你更快地完成重复性工作、减少人为失误、并在大型项目中保持操作的准确性和可追溯性。
给用户的建议:
UECopilot - 让 Unreal Engine 开发插上 AI 的翅膀