# UMG MCP

Winyunq 终极智造

语言 / Language English

© 2026 Winyunq. 保留所有权利。

双回路极速直连安全保护

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 发现桥接的双回路机制。