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)
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)
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)
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)
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)
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)
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.
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)
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.