Version: 1.0.0 | Last Updated: 2026-05-08 Target Engine: Unreal Engine 5.7
UECopilot is an AI-assisted development plugin integrated into the Unreal Engine 5 editor. Through the Blueprint MCP Server (Blueprint Model Context Protocol Server, UEMCP), it exposes UE5's Blueprint data structures and editing operations as HTTP APIs, allowing AI models (such as Claude, GPT, etc.) to directly read, understand, create, and modify Blueprint assets.
One-sentence summary: UECopilot enables AI to "understand" your Blueprints and operate them for you like an experienced TA/programmer.
| Mode | Startup Method | Use Case | Features |
|---|---|---|---|
| Editor Mode | Automatically loaded when UE5 editor starts | Daily development | Editor and MCP service coexist, real-time operation |
UECopilot's UEMCP module has been comprehensively analyzed and currently provides 80+ MCP tools, covering the following 9 major capability domains:
| Capability Domain | Tool Count | Capability Rating |
|---|---|---|
| Blueprint Reading & Retrieval | 8 | Stable |
| Blueprint Graph Editing & Node Operations | 15 | Stable |
| Blueprint Variables & Type System | 6 | Stable |
| Function/Parameter Management | 4 | Stable |
| Blueprint Structure & Metadata | 9 | Stable |
| Material System | 18 | Mature |
| Animation Blueprint System | 12 | Developing |
| Safety & Snapshot System | 6 | Stable |
| Asset Discovery & Reflection | 5 | Mature |
| Unreal Python API (AI + World Building) | Level Automation (Procedural Tools) | Planned |
Capability Rating Descriptions:
- Mature: Full tool functionality, edge cases well handled, SEH protection in place
- Stable: Core paths usable, some boundary conditions to watch for
- Developing: Basic capabilities available, advanced scenarios need improvement
Scenario 1: AI-Assisted Blueprint Debugging
Scenario 2: AI-Assisted Blueprint Refactoring
Scenario 3: AI-Assisted Material Creation
Scenario 4: AI-Assisted Animation State Machine
Scenario 5: Safe Experimentation
The recommended workflow follows four steps: "Preview → Snapshot → Execute → Verify":
Good prompt examples:
Vague prompts to avoid:
MCP service is not head-safe: Although SEH (Structured Exception Handling) protection is used, erroneous operations in extreme cases could still cause the editor to crash. It is recommended to save the project and back up important Blueprints before operating.
All write operations support Ctrl+Z undo: The server wraps each write operation in an Undo transaction, but it is recommended to manually save promptly after continuous operations.
Snapshots are saved to disk: Snapshot files are stored in the Project/Saved/BlueprintMCP/Snapshots/ directory and are not included in project version control. Manual backup is recommended for important operations.
AI model differences in understanding UE terminology: Different AI models may have varying understandings of UE-specific terms (such as "pin connection", "break struct", "event dispatcher"). Please use UE5 official terminology in your prompts.
Note: The following lists all MCP tools that can be directly invoked through AI conversation. Tool names use snake_case convention. You can use these tool names directly in your prompts.
| Tool Name | Function | Key Parameters |
|---|---|---|
list_blueprints | List all Blueprint assets, supports filtering by name and parent class | filter, parentClass, type |
get_blueprint | Get detailed info of a specific Blueprint (variables, functions, components, etc.) | name |
get_blueprint_summary | Get a brief summary of a Blueprint (same as get_blueprint) | name |
get_blueprint_graph | Get the full structure of a specified graph (EventGraph, FunctionGraph, etc.) | name, graph |
describe_graph | Get a pseudocode-style description of a graph (same as get_blueprint_graph) | name, graph |
search_blueprints | Search for nodes with specific names in Blueprints | query, path, maxResults |
find_asset_references | Find all nodes referencing a specified class | class, blueprint |
search_by_type | Search for usage of a specific node type in Blueprints | nodeClass, blueprint, graph |
| Tool Name | Function | Key Parameters |
|---|---|---|
add_node | Add a new node to a specified graph | blueprint, graph, nodeType, position |
delete_node | Delete a node from a graph | blueprint, nodeId |
duplicate_nodes | Duplicate one or more nodes | blueprint, nodeIds, offset |
move_node | Move a node to a new position | blueprint, nodeId, position |
connect_pins | Connect pins between two nodes | blueprint, sourceNodeId, sourcePin, targetNodeId, targetPin |
disconnect_pin | Disconnect all connections of a specified pin | blueprint, nodeId, pinName |
refresh_all_nodes | Refresh all nodes in a graph (clean up broken references) | blueprint |
set_pin_default | Set the default value of a pin | blueprint, nodeId, pinName, value |
get_pin_info | Get detailed pin info (type, direction, connection status) | blueprint, nodeId, pinName |
check_pin_compatibility | Pre-check if two pins can be connected | blueprint, sourceNodeId, sourcePin, targetNodeId, targetPin |
get_node_comment | Get a node's comment text | blueprint, nodeId |
set_node_comment | Set a node's comment text | blueprint, nodeId, comment |
replace_function_calls | Replace function call target class in Blueprints (supports dry_run preview) | blueprint, oldClass, newClass, dryRun |
change_struct_node_type | Change the struct type of Break/Make struct nodes | blueprint, nodeId, structType |
| Tool Name | Function | Key Parameters |
|---|---|---|
add_variable | Add a new member variable to a Blueprint | blueprint, variableName, variableType, category |
remove_variable | Remove a member variable from a Blueprint | blueprint, variableName |
change_variable_type | Change a variable's type (supports dry_run impact analysis preview) | blueprint, variable, newType, dryRun |
set_variable_metadata | Set a variable's metadata (category, description, etc.) | blueprint, variable, metadata |
set_blueprint_default | Set a Blueprint CDO default property value | blueprint, propertyName, value |
delete_asset | Delete a specified asset file | path |
| Tool Name | Function | Key Parameters |
|---|---|---|
add_function_parameter | Add a parameter to a function/custom event | blueprint, functionName, paramName, paramType |
remove_function_parameter | Remove a parameter from a function/custom event | blueprint, functionName, paramName |
change_function_parameter_type | Change a function parameter type (supports dry_run preview) | blueprint, functionName, paramName, newType, dryRun |
reparent_blueprint | Change a Blueprint's parent class (supports C++ classes and Blueprint classes) | blueprint, newParentClass |
| Tool Name | Function | Key Parameters |
|---|---|---|
create_blueprint | Create a new Blueprint asset | blueprintName, packagePath, parentClass, blueprintType |
create_graph | Create a new graph in a Blueprint (EventGraph, FunctionGraph, etc.) | blueprint, graphName, graphType |
delete_graph | Delete a specified graph from a Blueprint | blueprint, graphName |
rename_graph | Rename a graph in a Blueprint | blueprint, oldName, newName |
add_interface | Add an interface implementation to a Blueprint | blueprint, interfaceName |
remove_interface | Remove an interface implementation from a Blueprint (optionally keep functions) | blueprint, interfaceName, preserveFunctions |
list_interfaces | List all interfaces implemented by a Blueprint | blueprint |
add_event_dispatcher | Add an event dispatcher (supports dispatchers with parameters) | blueprint, dispatcherName, parameters |
list_event_dispatchers | List all event dispatchers and their parameters for a Blueprint | blueprint |
| Tool Name | Function | Key Parameters |
|---|---|---|
add_component | Add a component to a Blueprint's SCS | blueprint, componentClass, name, parentComponent |
remove_component | Remove a component from a Blueprint's SCS | blueprint, componentName |
list_components | List all components in a Blueprint's SCS | blueprint |
| Tool Name | Function | Key Parameters |
|---|---|---|
create_struct | Create a user-defined struct asset (supports adding properties) | assetPath, properties |
create_enum | Create a user-defined enum asset | assetPath, values |
add_struct_property | Add a new property to a struct | structPath, propertyName, propertyType |
remove_struct_property | Remove a property from a struct | structPath, propertyName |
Material Reading:
| Tool Name | Function | Key Parameters |
|---|---|---|
list_materials | List all material and material instance assets | filter, type |
get_material | Get detailed material info (domain, blend mode, parameter list, referenced textures) | name |
get_material_graph | Get the node connection structure of a material graph | name |
describe_material | Provide a detailed pseudocode description of a material graph | material |
search_materials | Search for expressions in materials | query |
find_material_references | Find materials referencing a specified texture or material function | texture, materialFunction |
Material Writing:
| Tool Name | Function | Key Parameters |
|---|---|---|
create_material | Create a new material asset (supports domain and blend mode settings) | name, packagePath, domain, blendMode |
set_material_property | Set material top-level properties (domain, blend mode, two-sided, etc.) | material, property, value |
add_material_expression | Add an expression node to a material graph | material, expressionClass, position |
delete_material_expression | Delete an expression from a material graph | material, expressionId |
connect_material_pins | Connect two pins in a material graph | material, expression, pinName, targetExpression, targetPin |
disconnect_material_pin | Disconnect all connections of a specified material pin | material, expressionId, pinName |
set_expression_value | Set a material expression's parameter value | material, expressionId, parameter, value |
move_material_expression | Move a material expression's position in the editor graph | material, expressionId, position |
Material Instances:
| Tool Name | Function | Key Parameters |
|---|---|---|
create_material_instance | Create a Material Instance Constant (MIC) | name, packagePath, parentMaterial |
set_material_instance_parameter | Set a material instance's parameter override value | materialInstance, parameterName, value, type |
get_material_instance_parameters | Get all overridable parameters of a material instance | materialInstance |
reparent_material_instance | Change a material instance's parent material | materialInstance, newParent |
Material Functions:
| Tool Name | Function | Key Parameters |
|---|---|---|
list_material_functions | List all material function assets | filter |
get_material_function | Get detailed information about a material function | name |
create_material_function | Create a new material function asset | name, packagePath |
Material Safety:
| Tool Name | Function | Key Parameters |
|---|---|---|
validate_material | Compile and validate a material | material |
snapshot_material_graph | Take a snapshot of a material graph | material |
diff_material_graph | Compare differences between a material graph and its snapshot | material, snapshotId |
restore_material_graph | Restore a material graph from a snapshot | material, snapshotId |
| Tool Name | Function | Key Parameters |
|---|---|---|
create_anim_blueprint | Create an Animation Blueprint asset | name, packagePath, skeleton, parentClass |
add_state_machine | Add a state machine to an Anim Blueprint | blueprint, name |
add_anim_state | Add an animation state to a state machine | blueprint, stateMachine, stateName |
remove_anim_state | Remove an animation state from a state machine | blueprint, stateName |
add_anim_transition | Add a transition rule between states | blueprint, fromState, toState |
set_transition_rule | Set the rule Blueprint for a state transition | blueprint, transitionId, ruleBlueprint |
add_anim_node | Add an animation node to an animation state | blueprint, stateName, nodeType |
set_state_animation | Set the animation sequence used by a state | blueprint, stateName, animation |
list_anim_slots | List an Anim Blueprint's slots | blueprint |
list_sync_groups | List an Anim Blueprint's sync groups | blueprint |
create_blend_space | Create a blend space asset (1D/2D) | name, packagePath, skeleton |
set_blend_space_samples | Set the sample points of a blend space | blendSpace, samples |
| Tool Name | Function | Key Parameters |
|---|---|---|
snapshot_graph | Create a Blueprint graph snapshot (saved to disk) | blueprint, graphs |
diff_graph | Compare the current graph with a snapshot | blueprint, snapshotId |
restore_graph | Restore a Blueprint graph from a snapshot | blueprint, snapshotId |
find_disconnected_pins | Find all unconnected input pins in a graph | blueprint |
analyze_rebuild_impact | Analyze the potential impact scope of a Blueprint rebuild | blueprint, changeDescription |
diff_blueprints | Compare the graph structure differences between two Blueprints | blueprintA, blueprintB, graph |
| Tool Name | Function | Key Parameters |
|---|---|---|
list_classes | List all available UClasses | filter |
list_functions | List all functions of a specified class | className, filter |
list_properties | List all properties of a specified class | className, filter |
rescan_assets | Rescan the asset registry, refresh cache | None |
server_status | View MCP server runtime status and asset statistics | None |
Type Resolver (ResolveTypeFromString)
Supported type resolution formats:
| Input Format | Example | Resolution Result |
|---|---|---|
| Basic Types | int, float, bool, string, text | Corresponding basic pin types |
| Object Reference | object:Actor | UObject subclass reference |
| Soft Object | softobject:Texture2D | Soft object reference |
| Class Reference | class:Actor | Class reference |
| Soft Class Reference | softclass:AnimInstance | Soft class reference |
| Struct | struct:Vector, struct:Transform | Struct pin type |
| Enum | enum:ETraceTypeQuery | Enum byte type |
| Interface | interface:BPI_Interact | Interface reference |
| Array | array:int, array:object:Actor | TArray type |
SEH Safety Protection (Windows Only)
For high-risk operations (Blueprint compilation, material expression addition, package saving, etc.), the __try/__except Structured Exception Handling (SEH) mechanism is used. This means that even if an operation causes an internal engine crash (such as an access violation), the service will not completely crash, but will instead return an error message.
Undo Transaction Support
All tool calls that modify Blueprints are wrapped in Undo/Redo transactions. This means that when used in the editor, operations executed by AI can be undone with Ctrl+Z.
| Category | Description | Impact |
|---|---|---|
| Multi-User | The service is designed for single-user; simultaneous multi-user operations are not supported | ⚠️ Medium |
| Network | Only listens on 127.0.0.1, remote access not supported | 🔒 Security Design |
| Version Compatibility | Based on UE5.4+ API, not tested on UE4 | ⚠️ High |
| Platform | SEH protection is Windows-only; material system SEH has a dedicated implementation | ⚠️ Medium |
| Hot Reload | Plugin module needs to reconnect after hot reload | ⚠️ Low |
| Large Projects | Ultra-large projects with tens of thousands of Blueprints may take a few seconds for the initial scan | ⚠️ Medium |
| Compilation Safety | Blueprint compilation triggers the full compilation chain; complex Blueprints may be time-consuming | ⚠️ Medium |
| AI Understanding | AI models have limitations in understanding UE graph structures and pin types | ⚠️ Caution |
Using natural language to operate UE5 Blueprints through AI models presents the following core challenges:
A Blueprint graph is a two-dimensional visual structure. AI only sees a flat JSON node list, losing spatial information such as:
Impact: AI struggles to understand the "design intent" of a graph, only seeing structured connection data.
Pin types in UE5 are a complex system:
| Explicit Pin Information | Required Tacit Knowledge |
|---|---|
| PinCategory = "object" | Need to know the subclass inheritance tree |
| PinSubCategoryObject | Need to understand object reference vs. class reference |
| bIsReference | Need to know value vs. reference semantic differences |
| PinValueType | Need to understand key-value type relationships for Map/Set containers |
Impact: When constructing connect_pins requests, AI may provide semantically incorrect pin pairings.
A simple modification can trigger a chain reaction:
Impact: AI struggles to fully predict all cascading effects of a change, even with dryRun support.
| Term | Meaning in Different Contexts |
|---|---|
| "Node" | Can be a Blueprint node, material expression, animation state, or skeleton node |
| "Connection" | Can be a pin connection, state transition, or component parent-child relationship |
| "Type" | Can be a variable type, pin type, node type, or asset type |
| "Graph" | Can be EventGraph, FunctionGraph, AnimationGraph, or MaterialGraph |
Impact: AI may confuse terminology meanings across different contexts, leading to incorrect request parameters.
Impact: The plugin itself is stateless; each tool call is independent. AI models need to maintain state within the conversation, but context windows are limited.
Mitigation measures already implemented at the plugin level:
Q: Changes to Blueprint did not take effect
saved field in the returned JSON is trueQ: Blueprint compilation error
validate_blueprint tool to view specific error detailsrestore_graph to restoreQ: AI cannot find the specified Blueprint
list_blueprints tool to view all available BlueprintsQ: First list_blueprints call is slow
| Stat Item | Value |
|---|---|
| MCP Tools Total | 80+ |
| Capability Domains | 9 Major Categories |
| Supported Asset Types | Blueprint, Material, MaterialInstance, MaterialFunction, AnimBlueprint, UserDefinedStruct, UserDefinedEnum, BlendSpace |
| Blueprint Pin Type | Support Status |
|---|---|
| boolean, byte, int, int64, float, double, name, string, text | ✅ Full |
| object, softobject, class, softclass, interface | ✅ Full |
| struct (Vector, Transform, Rotator, Color, etc.) | ✅ Full |
| enum | ✅ Full |
| array, set, map | ✅ Basic Support |
| delegate, mcdelegate | ✅ Basic Support |
UECopilot's goal is to make AI a trusted co-pilot for UE5 developers — not to replace your judgment, but to help you complete repetitive tasks faster, reduce human error, and maintain accuracy and traceability in large-scale projects.
Recommendations for Users:
UECopilot - Empowering Unreal Engine development with AI wings