Official Docs / 支持哪些 MCP (C++)

底层指令系统

7 大 C++ 开源 Command 类

第三章:支持哪些 MCP 接口(开源部分 C++ 指令汇总)

本指南聚焦于除了闭源 fabserver 云端通信以外,完全开源、受您掌控的 C++ 底层 MCP 指令。通过 UUmgMcpBridge (C++ 桥接器 Subsystem) 直连,AI 可以直接发起并在虚幻引擎主线程中秒级执行下列 7 大领域 的数十种原生 C++ API,实现引脚级的蓝图连线、控件构造及材质注入。

1. Viewport & Graph 感知指令 (Attention)

FUmgMcpAttentionCommands

实现 AI 对虚幻编辑器视口和蓝图编辑状态的“视觉感知”与焦点锁定,是执行后续修改动作的前置条件。

指令名称 (CommandType) 功能描述 核心参数 (JSON)
get_last_edited_umg_asset 获取最后一次被修改编辑的 UMG 资产路径
get_recently_edited_umg_assets 列表返回近期在编辑器中活跃的 UMG 资产集
get_target_umg_asset 查询当前被 Attention 系统锁定的目标 UMG 资产
set_target_umg_asset 强制将指定 UMG 资产锁定为当前 AI 操纵目标 {"asset_path": "String"}
get_target_widget 查询当前选中的目标控件名称
set_target_widget 设置当前 AI 聚焦的 UMG 控件 {"widget_name": "String"}
set_target_graph 设置当前编辑的目标蓝图图表或函数,若目标为 Component.Event(如 Button.OnClicked)将调用 C++ 自动生成对应的绑定事件 {"graph_name": "String"} 或 {"function_name": "String"}
get_target_graph 获取当前操作的蓝图图表名称
set_cursor_node 将当前逻辑编辑焦点定位在图表中指定节点 {"node_id": "String"}
get_cursor_node 获取当前逻辑光标指向的节点 ID

2. UMG 控件架构指令 (Widget Operations)

FUmgMcpWidgetCommands

直接操纵虚幻 UMG 编辑器底层的 SWidget 控件树,进行高精度的层级增删改查。

指令名称 (CommandType) 功能描述 核心参数 (JSON)
get_widget_tree 获取完整 UMG 控件树层级结构,包括父子嵌套及槽类型
query_widget_properties 利用 C++ 反射(Reflection)查询指定控件的所有可编辑属性值 {"widget_name": "String"}
get_widget_schema 获取指定控件的基类结构和支持的布局元数据 {"widget_class": "String"}
create_widget 在指定父控件和 Slot(插槽)下,物理创建一个全新的控件对象 {"widget_name": "String", "widget_class": "String", "parent_name": "String"}
set_widget_properties 批量或单独更新指定控件的反射属性值(支持 Slot、颜色、锚点等) {"widget_name": "String", "properties": {"Property_Name": "Value"}}
delete_widget 物理销毁一个控件以及它下面的所有子层级树 {"widget_name": "String"}
reparent_widget 重新调整控件在控件树中的嵌套层级(换亲) {"widget_name": "String", "new_parent_name": "String"}
save_asset 强制命令虚幻编辑器将当前的 UMG 物理资产保存落盘
get_layout_data 读取当前编辑器视口下的物理尺寸、外边距及偏移布局数据
check_widget_overlap 根据布局槽的物理参数,分析指定的两个控件在视口中是否碰撞或重叠 {"widget_a": "String", "widget_b": "String"}

3. UI 物理文件序列化指令 (File Transformation)

FUmgMcpFileTransformationCommands

提供将 UMG 控件物理状态与磁盘通用 JSON 文件进行高阶转换的序列化引擎。

指令名称 (CommandType) 功能描述 核心参数 (JSON)
export_umg_to_json 将当前 UMG 控件的全部树关系与反射属性完整序列化并物理输出为标准 JSON 格式 {"export_path": "String"}
apply_json_to_umg 读取外部 JSON 布局描述文件,利用增量反序列化技术,在编辑器中物理重建或修改 UMG 资产 {"json_path": "String"}

4. UI Sequencer 动效与关键帧指令 (Sequencer)

FUmgMcpSequencerCommands

直接在 C++ 层面操纵 UI 的 Sequencer (动画轨道),向控件中精准植入、编辑或清理关键帧,实现灵动特效。

指令名称 (CommandType) 功能描述 核心参数 (JSON)
get_all_animations 拉取当前 UMG 资产内所有的 UI 动效名列表
create_animation 物理创建一个全新的 UWidgetAnimation 动画对象 {"animation_name": "String"}
delete_animation 删除指定的 UWidgetAnimation 动画对象 {"animation_name": "String"}
set_property_keys 在特定的时间切片上,为控件的某个动画属性强行写入或覆写关键帧数据值 {"animation_name": "String", "widget_name": "String", "property_path": "String", "time": 0.5, "value": 1.0}
remove_property_track 物理移除指定控件在某个动画下的特定属性渲染轨道 {"animation_name": "String", "widget_name": "String", "property_path": "String"}
get_animation_keyframes 返回动画的全部关键帧时间轴排布数据 {"animation_name": "String"}
get_animated_widgets 查询当前动画绑定控制了哪些控件节点 {"animation_name": "String"}
get_animation_full_data 一键打包返回动画下的所有轨道、通道及关键帧的超完整 JSON 结构 {"animation_name": "String"}
animation_append_widget_tracks 批量为多个控件追加空的动效轨道 {"animation_name": "String", "widgets": ["String"]}
animation_delete_widget_keys 清理特定时间段内某个控件在动画中的所有关键帧 {"animation_name": "String", "widget_name": "String", "start_time": 0.0, "end_time": 1.0}

5. 蓝图低阶图表连线与高阶逻辑指令 (Blueprint Graph & Action)

FUmgMcpBlueprintCommands / manage_blueprint_graph

这是本插件最强悍的黄金级 C++ 能力。AI 通过它不仅能生成控件,还能在蓝图图表中生成逻辑节点,控制光标在节点间自动流转并自动引脚连线(Execution Pin / Variable Pin Wiring),且支持快捷编译!

指令名称 (CommandType) 子动作 (subAction / action) 功能与 C++ 智能逻辑描述 核心参数 (JSON)
manage_blueprint_graph create_node / add_node 在蓝图图表中注入一个节点。若未指定坐标将调用 UUmgAttentionSubsystem 自动计算非重叠偏置;若指定 autoConnectToNodeId,将自动拉出引脚与目标节点进行顺畅连线。 {"action": "create_node", "nodeType": "String", "x": 100, "y": 200, "autoConnectToNodeId": "String"}
delete_node 从图表中物理擦除一个节点。若删除的正是光标所在节点,C++ 系统会自动寻找前驱或后继节点,重设光标焦点(newCursorNode)。 {"action": "delete_node", "nodeId": "String"}
connect_pins 在图表中进行引脚级(Pin-to-Pin)硬连线,支持执行流连线与参数值连线。 {"action": "connect_pins", "fromNode": "String", "fromPin": "String", "toNode": "String", "toPin": "String"}
add_variable / add_param 在蓝图中动态声明并注册一个新变量或输入输出参数。 {"action": "add_variable", "varName": "String", "varType": "String"}
compile_blueprint 物理编译当前的 WidgetBlueprint,实时刷新编辑器反射缓存,令前述连线与变量当场生效!
create_blueprint 物理创建普通的 Actor 蓝图类资产 {"bp_name": "String", "parent_class": "String", "path": "String"}
add_component_to_blueprint 为通用蓝图注入根组件或子组件(如 Box/StaticMesh 等) {"bp_path": "String", "component_class": "String", "component_name": "String"}

6. UI 材质与 HLSL 着色器指令 (Material & HLSL)

FUmgMcpMaterialCommands

这是专为 UE 高级动效开发者设计的着色器工具集。AI 能够解析现有 UI 材质的结构树,或者在指定材质节点中直接注入一段定制的 HLSL 局部渲染算法(例如霓虹扫描、毛玻璃折射算法),物理自动生成节点并连入主输出引脚。

C++ 匹配规则特性:

所有在 C++ 派发器中以 material_ 开头或以 hlsl_ 开头的 JSON 指令,都会自动被路由至底层的 FUmgMcpMaterialCommands 进行高级解析与编译。支持如材质参数修改、节点连接、着色器片段自动对齐等高阶特效开发需求。

7. 关卡世界与通用资产管理指令 (Editor World & Assets)

FUmgMcpEditorCommands

用于对关卡(Level)中的静态网格体、灯光及相机等 3D 元素进行快捷操纵,并提供全局资产扫描和状态检索。

指令名称 (CommandType) 功能描述 核心参数 (JSON)
get_actors_in_level 列表返回当前关卡世界中的全部 Actor 及其类型
find_actors_by_name 通过模糊匹配名称,在关卡中查找特定实例 {"actor_name": "String"}
spawn_actor 在关卡世界的指定位置生成一个标准网格体、灯光、相机或自定义类 {"actor_class": "String", "location": {"x":0,"y":0,"z":0}}
delete_actor 从 3D 视口中删除指定的 Actor {"actor_name": "String"}
set_actor_transform 更新 Actor 的三维平移、旋转与缩放参数 {"actor_name": "String", "location": {"x":0,"y":0,"z":0}}
refresh_asset_registry 强制命令编辑器资产注册表进行全量或局部同步扫描,确保新生成资产被 AI 发现
list_assets 查询指定路径或通配符下的所有可用资产目录 {"folder_path": "String"}

💡 真正的“双回路”无网络代理内存直连

在开发或查阅文档时,切勿混淆概念。UMG MCP 插件在系统架构上拥有精密的 双回路物理隔离 设计:

  • 内置直接直连回路(零网络):当您直接在编辑器右侧的 UMG MCP 对话面板中向 Agent 提问并点击 Accept 审批时,前述指令是 100% 内存级直连 执行的。它直接调用 C++ 底层指针派发,绝对不通过 任何网络端口或回环 IP,不存在网络代理延时,具有极致的绝对安全与性能!
  • 外部桥接回路(可发现的动态 TCP 监听):需要由外部 AI 工具接管虚幻时,每个 UE 进程都会绑定唯一的系统分配回环端口并发布发现记录。底层子线程读取 JSON 指令,再通过串行 Game Thread 队列安全执行。

📸 物理架构视图占位

[IMAGE_PLACEHOLDER: UmgMcp C++ Subsystem Dual-Loop Connection Architecture]

这里可绘制一张架构拓扑图,展示内部 Slate/Subsystem 内存直连与外部 Python/Codex 动态 TCP 发现桥接的双回路机制。