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.