# UMG MCP

Winyunq Ultimate Intel

Language / 语言 简体中文

© 2026 Winyunq. All rights reserved.

Dual-Loop Secure Protection

Official Docs / Supported MCPs (C++)

Subsystem Commands

7 C++ Open-Source Command Classes

## Chapter 3: Supported MCP Interfaces (C++ Command Index)

This guide focuses exclusively on the fully open-source, user-controlled C++ MCP commands (excluding the closed-source `fabserver` cloud components). Via direct calls through `UUmgMcpBridge` (C++ Bridge Subsystem), the AI can trigger and instantly execute native API tasks within Unreal's Game Thread across 7 core domains, enabling pin-level blueprint connection, widget spawning, and shader injection.

### 1. Viewport & Graph Perception Commands (Attention)

FUmgMcpAttentionCommands

Provides the AI with "visual focus" and logical positioning in the Unreal Editor's viewport and blueprint graphs. This is a prerequisite for executing any modifications.

Command Type | Description | Core Params (JSON)
--- | --- | ---
get_last_edited_umg_asset | Retrieves the path of the last modified UMG asset. | None
get_recently_edited_umg_assets | Lists UMG assets that were recently active in the editor. | None
get_target_umg_asset | Queries the active UMG asset currently locked in the Attention system. | None
set_target_umg_asset | Locks a specific UMG asset path as the AI's target for editing. | {"asset_path": "String"}
get_target_widget | Queries the active selected widget name. | None
set_target_widget | Locks onto a specific widget in the current active hierarchy. | {"widget_name": "String"}
set_target_graph | Locks onto a target graph or function. If pointing to Component.Event syntax (e.g. Button.OnClicked), it auto-wires and ensures the existence of the bound event. | {"graph_name": "String"} or {"function_name": "String"}
get_target_graph | Retrieves the active graph/function name. | None
set_cursor_node | Positions the blueprint cursor (Program Counter) strictly on a designated node. | {"node_id": "String"}
get_cursor_node | Retrieves the current node ID the cursor is focused on. | None

### 2. UMG Widget Hierarchy & Slot Commands (Widget Operations)

FUmgMcpWidgetCommands

Manages the underlying SWidget tree hierarchy in Unreal's memory, enabling high-fidelity layout creation and manipulation.

Command Type | Description | Core Params (JSON)
--- | --- | ---
get_widget_tree | Returns the entire widget nesting tree, showing parent-child hierarchy and slot types. | None
query_widget_properties | Uses C++ Reflection to read all exposure fields and active parameters of a widget. | {"widget_name": "String"}
get_widget_schema | Queries struct layouts, default slots, and supported parameters of a widget class. | {"widget_class": "String"}
create_widget | Constructs a new widget of a specific class and hooks it into a parent widget's slot in memory. | {"widget_name": "String", "widget_class": "String", "parent_name": "String"}
set_widget_properties | Updates reflection parameters batching colors, slots, sizes, alignment, and anchors. | {"widget_name": "String", "properties": {"Property_Name": "Value"}}
delete_widget | Physically deletes a widget and recursively destroys its nested children. | {"widget_name": "String"}
reparent_widget | Detaches a widget and re-anchors it onto a new designated parent. | {"widget_name": "String", "new_parent_name": "String"}
save_asset | Forces the editor to commit current memory adjustments to the UMG asset file. | None
get_layout_data | Fetches active size, boundary padding, offsets, and scales under viewport layout. | None
check_widget_overlap | Performs geometric checks to analyze if two widgets collide or overlap in the layout coordinate space. | {"widget_a": "String", "widget_b": "String"}

### 3. UI Serialization & Sync Commands (File Sync)

FUmgMcpFileTransformationCommands

Enables high-speed translation between the in-editor active UMG structures and physical JSON layout sheets on disk.

Command Type | Description | Core Params (JSON)
--- | --- | ---
export_umg_to_json | Serializes the active layout hierarchy and reflection properties to a file. | {"export_path": "String"}
apply_json_to_umg | Parses a local JSON layout description and incremental rebuilds UMG asset parameters in the editor. | {"json_path": "String"}

### 4. UI Sequencer & Keyframe Commands (Sequencer)

FUmgMcpSequencerCommands

Manages the editor's UI Sequencer tracks at the C++ level. AI can directly insert, modify, or erase keyframes from animation tracks to produce vibrant UI motion.

Command Type | Description | Core Params (JSON)
--- | --- | ---
get_all_animations | Lists all UI animations defined inside the current asset. | None
create_animation | Instantiates a brand new UWidgetAnimation object in the asset. | {"animation_name": "String"}
delete_animation | Deletes the specified animation object. | {"animation_name": "String"}
set_property_keys | Inserts or overwrites keyframe values on a designated widget property animation channel at a precise time step. | {"animation_name": "String", "widget_name": "String", "property_path": "String", "time": 0.5, "value": 1.0}
remove_property_track | Destroys a property animation channel associated with a widget. | {"animation_name": "String", "widget_name": "String", "property_path": "String"}
get_animation_keyframes | Fetches the keyframe list and curves of the animation. | {"animation_name": "String"}
get_animated_widgets | Lists all widgets that possess active animation channels in the track. | {"animation_name": "String"}
get_animation_full_data | Extracts an all-in-one comprehensive JSON packet outlining channels, properties, and times. | {"animation_name": "String"}
animation_append_widget_tracks | Appends blank property animation tracks to multiple widgets in batch. | {"animation_name": "String", "widgets": ["String"]}
animation_delete_widget_keys | Clears a widget's keyframe data falling within a specified start and end time. | {"animation_name": "String", "widget_name": "String", "start_time": 0.0, "end_time": 1.0}

### 5. Blueprint Graph & Node Manipulation Commands (Blueprint)

FUmgMcpBlueprintCommands / manage_blueprint_graph

This is the **flagship C++ engine capability**. The AI does not just construct layout widgets; it injects node steps directly in the Blueprint Editor, wiring execution flows and data values, and triggers fast recompilation!

Command Type | Sub-Action (subAction / action) | Description & Intelligent C++ Logic | Core Params (JSON)
--- | --- | --- | ---
manage_blueprint_graph | create_node / add_node | Injects a functional node in the graph. If coordinate is omitted, `UUmgAttentionSubsystem` calculates the cursor offset to avoid overlap. If `autoConnectToNodeId` is defined, it wires executing flow pins automatically. | {"action": "create_node", "nodeType": "String", "x": 100, "y": 200, "autoConnectToNodeId": "String"}
delete_node | Deletes a node from the graph. If the active cursor is focused on this node, the C++ subsystem relocates and shifts focus onto adjacent node pathways (`newCursorNode`). | {"action": "delete_node", "nodeId": "String"}
connect_pins | Wires execution (Exec) pins or data pins between two blueprint nodes. | {"action": "connect_pins", "fromNode": "String", "fromPin": "String", "toNode": "String", "toPin": "String"}
add_variable / add_param | Registers a new local variable or parameters in the blueprint metadata block. | {"action": "add_variable", "varName": "String", "varType": "String"}
compile_blueprint | None | Triggers C++ physical compilation of the WidgetBlueprint, refreshing editor reflection tables and activating nodes immediately! | None
create_blueprint | None | Spawns a generic blueprint class asset (e.g. Actor) in files. | {"bp_name": "String", "parent_class": "String", "path": "String"}
add_component_to_blueprint | None | Appends root components or functional nodes (like Box, StaticMesh) to standard blueprints. | {"bp_path": "String", "component_class": "String", "component_name": "String"}

### 6. UI Material & HLSL Shader Injection Commands (Material & HLSL)

FUmgMcpMaterialCommands

Tailored for premium motion graphic artists. The AI can parse active material structures and directly inject a localized HLSL shader script (e.g. frosted glass refraction, cyberpunk grid sweeping) inside custom material nodes, establishing correct pin parameters automatically.

C++ Router Matching Principle:

Any JSON command payload whose Type field initiates with prefix `material_` or `hlsl_` is routed dynamically to the underlying C++ `FUmgMcpMaterialCommands` system for low-level shader generation and property alignment.

### 7. Editor World & Asset Pipeline Commands (Editor World & Assets)

FUmgMcpEditorCommands

Enables speedy controls over level actors (static meshes, spotlight actors, camera rigs) and general file scanning pipelines in the Unreal Editor.

Command Type | Description | Core Params (JSON)
--- | --- | ---
get_actors_in_level | Lists all Actor instances currently resting in the active editor world. | None
find_actors_by_name | Finds actors inside the 3D level matching full or partial names. | {"actor_name": "String"}
spawn_actor | Spawns meshes, lights, cameras, or custom blueprints into the level view. | {"actor_class": "String", "location": {"x":0,"y":0,"z":0}}
delete_actor | Removes and destroys designated actor instances. | {"actor_name": "String"}
set_actor_transform | Modifies active location, rotation, and scaling vectors of an actor in level. | {"actor_name": "String", "location": {"x":0,"y":0,"z":0}}
refresh_asset_registry | Commands the Asset Registry module to run a scan syncing new in-memory file changes. | None
list_assets | Queries valid asset paths under specified directories. | {"folder_path": "String"}

### 💡 Dual-Loop Connection: Zero-Network Local In-Memory Bridge

When deploying or interacting with UMG MCP, do not conflate external ports with internal routes. The C++ plugin utilizes a strict **Dual-Loop Physical Isolation** architecture:

- Built-in Direct Connection Loop (Zero Network Loops): When asking the built-in Agent directly inside the Unreal Editor panel and selecting `Accept`, commands are executed **100% in memory**. The panel communicates via direct C++ pointers with the subsystem, bypassing **any** loopback IP or socket layers. This delivers absolute local execution speeds and zero port leaks.
- External Bridge Loop (Discovered Dynamic TCP Listener): When exposing editor control to external AI clients, each UE process binds a unique OS-assigned loopback port and publishes a discovery record. The C++ background thread safely reads JSON packet blocks and feeds them back strictly through the serialized Game Thread queue.

#### 📸 Architecture View Placeholder

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

Provide a system topology rendering that shows the Slate memory connection alongside the discovered dynamic TCP bridge used by external Python/Codex clients.