Native Unreal Engine 5 plugin that runs a full MCP (Model Context Protocol) server inside the Unreal Editor. Control your project directly from Claude Code, VS Code, or any MCP client — no Python sidecar, no Node.js process, no external dependencies.
169 built-in tools across 17 categories, plus a Python-backed dynamic tool layer.
Copy the UECortex folder into your project's Plugins/ directory and enable it in your .uproject:
{
"Name": "UECortex",
"Enabled": true
}Reopen the project. The server starts automatically on editor launch.
Claude Code:
claude mcp add uecortex --transport http http://localhost:7777/mcpVS Code (.vscode/mcp.json):
{ "servers": { "uecortex": { "url": "http://localhost:7777/mcp" } } }Claude Desktop (claude_desktop_config.json):
{ "mcpServers": { "uecortex": { "url": "http://localhost:7777/mcp" } } }Health check:
GET http://localhost:7777/health
Discover what's available before diving into the full tools list.
| Tool | What it does |
|---|---|
list_tool_groups |
Lists all categories with tool counts and names |
Spawn, move, delete, and inspect actors in the current level.
| Tool | What it does |
|---|---|
actor_spawn |
Spawn an actor by class at a given location/rotation/scale |
actor_spawn_on_surface |
Spawn an actor snapped to the nearest surface below a point |
actor_delete |
Delete an actor from the level |
actor_duplicate |
Duplicate an actor with optional offset |
actor_set_transform |
Set an actor's position, rotation, and/or scale |
actor_set_property |
Set a property on an actor by name |
actor_get_properties |
Read all exposed properties of an actor |
actor_get_selected |
Get the currently selected actors in the editor |
actor_list |
List all actors in the level, with optional class filter |
actor_find_by_name |
Find an actor by label name |
level_get_info |
Get level name, world bounds, and actor count |
line_trace |
Cast a ray and return what it hits (location, normal, actor) |
viewport_focus |
Focus the editor viewport on an actor |
viewport_set_camera |
Set the editor camera position and rotation |
console_command |
Execute an Unreal console command |
Create and wire Blueprint assets programmatically.
| Tool | What it does |
|---|---|
blueprint_create |
Create a new Blueprint class from a parent class |
blueprint_add_component |
Add a component (mesh, camera, audio, etc.) to a Blueprint |
blueprint_set_component_property |
Set a property on a Blueprint component |
blueprint_set_cdo_property |
Set a Class Default Object property |
blueprint_set_inherited_component_property |
Set a property on an inherited component |
blueprint_add_variable |
Add a typed variable to a Blueprint |
blueprint_set_variable |
Set the default value of a Blueprint variable |
blueprint_add_function |
Add a new function to a Blueprint |
blueprint_add_event_node |
Add an event node (BeginPlay, Tick, custom event, etc.) |
blueprint_add_function_call |
Add a function call node to a Blueprint graph |
blueprint_connect_pins |
Connect two pins in a Blueprint graph |
blueprint_compile |
Compile a Blueprint asset |
blueprint_get_graph |
Read the full node/pin/connection graph as JSON |
blueprint_find_node |
Find a node by class or title |
blueprint_set_node_property |
Set a property on a graph node |
blueprint_spawn_in_level |
Add a Blueprint actor to the current level |
blueprint_create_input_action |
Create an Enhanced Input action and bind it |
blueprint_add_gamemode |
Create a GameMode Blueprint and set it as the default |
Generate C++ source files and trigger editor recompilation.
| Tool | What it does |
|---|---|
cpp_create_actor |
Generate a new AActor subclass (.h + .cpp) |
cpp_create_component |
Generate a new UActorComponent subclass |
cpp_create_interface |
Generate a new UInterface |
cpp_create_gas_ability |
Generate a UGameplayAbility subclass |
cpp_create_gas_effect |
Generate a UGameplayEffect subclass |
cpp_create_attribute_set |
Generate a UAttributeSet subclass |
cpp_add_include |
Add a #include to an existing header |
cpp_add_uproperty |
Add a UPROPERTY to an existing class |
cpp_add_ufunction |
Add a UFUNCTION to an existing class |
cpp_get_class_info |
Read the properties and functions declared on a class |
cpp_hot_reload |
Trigger a hot reload of the project module |
cpp_run_ubt |
Run a full UnrealBuildTool compile |
Control Lumen, Nanite, shadows, post-process, fog, sky, and materials at runtime.
| Tool | What it does |
|---|---|
render_set_lumen |
Enable/disable Lumen GI and configure quality settings |
render_get_lumen_settings |
Read current Lumen settings |
render_set_nanite |
Enable/disable Nanite on a Static Mesh |
render_get_nanite_settings |
Read Nanite settings for a mesh |
render_set_shadows |
Configure shadow distance, cascades, and quality |
render_set_post_process |
Set post-process volume settings (bloom, AO, DOF, etc.) |
render_get_post_process |
Read current post-process settings |
render_set_fog |
Configure exponential height fog |
render_set_sky_atmosphere |
Configure the sky atmosphere component |
render_set_sky_light |
Set sky light intensity and source type |
render_set_ambient_occlusion |
Configure SSAO settings |
render_get_materials |
List materials assigned to a mesh |
render_set_material |
Assign a material to a mesh slot |
render_set_material_param |
Set a scalar or vector parameter on a material instance |
render_create_material_instance |
Create a Material Instance from a parent material |
Build spline paths and place trigger/blocking volumes.
| Tool | What it does |
|---|---|
spline_create |
Create a new Spline actor in the level |
spline_add_point |
Add a point to a spline |
spline_modify_point |
Move or change the tangent of an existing spline point |
spline_query |
Read all points and metadata from a spline |
spline_attach_mesh |
Attach a Static Mesh along a spline |
volume_create |
Create a volume actor (trigger, blocking, post-process, etc.) |
volume_set_properties |
Resize and reposition an existing volume |
Build and execute PCG graphs for procedural level population.
| Tool | What it does |
|---|---|
pcg_create_graph |
Create a new PCG Graph asset |
pcg_add_node |
Add a node to a PCG graph |
pcg_connect_pins |
Connect two nodes in a PCG graph |
pcg_disconnect_pins |
Disconnect a pin connection |
pcg_get_graph |
Read the full PCG graph as JSON |
pcg_get_node_params |
Read the parameters on a PCG node |
pcg_set_node_param |
Set a parameter on a PCG node |
pcg_set_graph_param |
Set a graph-level parameter (exposed input) |
pcg_list_node_types |
List all available PCG node types |
pcg_execute_graph |
Trigger a PCG graph to regenerate |
pcg_create_attribute_node |
Create an attribute node with a given name/type |
pcg_create_subgraph |
Create a subgraph node referencing another PCG asset |
pcg_place_volume |
Place a PCG Volume in the level and assign a graph |
pcg_place_seed_actor |
Place a PCG seed actor for point-based generation |
Wire up GAS components, abilities, attributes, and gameplay tags.
| Tool | What it does |
|---|---|
gas_add_ability_component |
Add an Ability System Component to a Blueprint |
gas_grant_ability |
Grant a gameplay ability to an actor |
gas_revoke_ability |
Remove a granted ability from an actor |
gas_get_abilities |
List all abilities granted to an actor |
gas_apply_effect |
Apply a Gameplay Effect to an actor |
gas_get_active_effects |
List active effects on an actor |
gas_get_attributes |
Read all attribute values on an actor |
gas_set_attribute |
Set an attribute value directly |
gas_add_gameplay_tag |
Add a gameplay tag to an actor |
gas_remove_gameplay_tag |
Remove a gameplay tag from an actor |
gas_get_gameplay_tags |
List all gameplay tags on an actor |
gas_list_registered_tags |
List all gameplay tags registered in the project |
Spawn, configure, and control Niagara particle systems.
| Tool | What it does |
|---|---|
niagara_list_systems |
List all Niagara System assets in the project |
niagara_create_system |
Create a new Niagara System asset |
niagara_list_emitters |
List emitters inside a Niagara System |
niagara_get_parameters |
Read user-exposed parameters on a Niagara System |
niagara_set_parameter |
Set a parameter value on a Niagara System asset |
niagara_spawn_component |
Spawn a Niagara component on an actor in the level |
niagara_activate_component |
Activate or deactivate a spawned Niagara component |
niagara_set_component_parameter |
Set a runtime parameter on a spawned Niagara component |
Build Animation Blueprints, state machines, and retarget animations across skeletons.
Inspection
| Tool | What it does |
|---|---|
anim_list_skeletons |
List all Skeleton assets in the project |
anim_list_skeletal_meshes |
List all Skeletal Mesh assets |
anim_list_anim_blueprints |
List all Animation Blueprints |
anim_list_sequences |
List AnimSequences compatible with a given skeleton |
anim_get_skeleton_bones |
List every bone name and parent in a skeleton |
anim_get_anim_graph |
Inspect all graphs, states, and nodes in an AnimBP |
Building Animation Blueprints
| Tool | What it does |
|---|---|
anim_create_anim_blueprint |
Create a new Animation Blueprint for a skeleton |
anim_add_state_machine |
Add a State Machine node to the AnimGraph |
anim_add_state |
Add a named state to a State Machine |
anim_set_state_animation |
Assign an AnimSequence or BlendSpace to a state |
anim_add_transition |
Add a transition arrow between two states |
anim_set_transition_condition |
Wire a variable condition onto a transition rule (supports always_true) |
anim_set_entry_state |
Connect the Entry node to a named state in a State Machine |
anim_compile_anim_blueprint |
Compile and save an Animation Blueprint |
anim_create_locomotion_setup |
One-call full locomotion setup: SM + 5 states + transitions + EventGraph wiring |
IK Retargeting (requires IKRig plugin)
| Tool | What it does |
|---|---|
ik_rig_assign_mesh |
Assign a SkeletalMesh to an IK Rig (required first step) |
ik_rig_set_retarget_root |
Set the retarget root bone on an IK Rig |
ik_rig_add_retarget_chain |
Add a retarget chain (limb, spine, head, etc.) |
ik_rig_remove_retarget_chain |
Remove a retarget chain by name |
ik_retarget_create |
Create an IK Retargeter pairing two IK Rigs with auto chain-mapping |
anim_retarget_batch |
Batch-retarget a list of animations to a new skeleton |
Maintenance
| Tool | What it does |
|---|---|
skeleton_fix_broken_references |
Repair broken skeleton references across anim assets |
Animation Blueprint workflow: add variable → add state machine → add states → assign animations → add transitions → compile → set transition conditions → compile again. Compile must happen before
anim_set_transition_conditionso the variable getter can resolve its type.For standard locomotion, use
anim_create_locomotion_setupto do all of the above in a single call (includes EventGraph wiring for Speed and IsInAir).
Create and populate Widget Blueprint UIs.
| Tool | What it does |
|---|---|
umg_list_widgets |
List all Widget Blueprint assets |
umg_create_widget |
Create a new Widget Blueprint |
umg_get_widget_tree |
Read the full widget tree as JSON |
umg_add_widget |
Add a widget (Text, Button, Image, etc.) to the tree |
umg_set_text |
Set the text content of a Text widget |
umg_set_canvas_slot |
Set position and size of a widget on a Canvas Panel |
umg_set_anchor |
Set anchor alignment on a Canvas Slot |
umg_set_visibility |
Show or hide a widget |
umg_add_variable |
Add a variable to a Widget Blueprint |
umg_compile_widget |
Compile a Widget Blueprint |
Build cinematic Level Sequences with camera cuts, tracks, and keyframes.
| Tool | What it does |
|---|---|
seq_create |
Create a new Level Sequence asset |
seq_list |
List all Level Sequences in the project |
seq_get_info |
Read sequence duration, framerate, and track layout |
seq_set_playback_range |
Set the in/out point of a sequence |
seq_add_actor_binding |
Bind an actor to a sequence for animation |
seq_add_transform_track |
Add a transform (movement) track to a bound actor |
seq_add_keyframe |
Set a keyframe value at a given frame |
seq_add_camera_cut |
Add a camera cut section |
seq_add_spawnable_camera |
Add a new spawnable camera actor to the sequence |
seq_add_visibility_track |
Add a visibility track to a bound actor |
Browse, move, copy, delete, and migrate content browser assets.
| Tool | What it does |
|---|---|
asset_list |
List assets in a folder (with optional class filter) |
asset_get_info |
Get metadata for an asset (class, path, size, dependencies) |
asset_get_references |
List assets that reference a given asset |
asset_get_dependencies |
List assets that a given asset depends on |
asset_move |
Move or rename an asset |
asset_copy |
Duplicate an asset to a new path |
asset_delete |
Delete an asset permanently |
asset_create_folder |
Create a new content browser folder |
asset_list_redirectors |
List all redirector assets in a path |
asset_fix_redirectors |
Consolidate and remove redirectors |
asset_migrate |
Migrate an asset and all dependencies to another project |
Capture screenshots and drive the editor UI programmatically.
| Tool | What it does |
|---|---|
viewport_capture |
Capture the 3D viewport or full editor window as a PNG |
viewport_focus |
Focus the viewport on an actor |
viewport_set_camera |
Set the editor camera position and rotation |
editor_input |
Simulate mouse clicks and keyboard input on the editor window |
Search and inspect assets from the Fab marketplace inside the editor.
| Tool | What it does |
|---|---|
fab_login_status |
Check EOS login state (required before purchases) |
fab_search |
Search Fab for assets by keyword (dynamic — load once per session) |
fab_get_asset |
Get full details for a Fab asset by ID (dynamic — load once per session) |
Load the dynamic tools once per session:
python_reload_tools_from_file → Scripts/fab_tools.json
Purchase consent policy:
fab_get_assetis information-only. Every response includes an explicitCONSENT REQUIREDnotice. AI agents must never trigger a purchase, add-to-cart, or any payment action without explicit user confirmation.
Execute Python in the editor context and register new tools at runtime without recompiling.
| Tool | What it does |
|---|---|
python_exec |
Run a Python snippet in the editor's Python environment |
python_exec_file |
Run a Python script file from the project's Scripts folder |
python_check |
Check whether a Python expression evaluates without error |
python_set_var |
Store a named variable for use across python_exec calls |
python_get_var |
Read a stored variable |
python_list_scripts |
List available Python scripts in the Scripts folder |
python_register_tool |
Register a new MCP tool backed by a Python snippet |
python_unregister_tool |
Remove a dynamically registered tool |
python_list_dynamic_tools |
List all currently registered dynamic tools |
python_reload_tools_from_file |
Load a batch of tools from a JSON file |
Example — register a tool at runtime:
{
"name": "python_register_tool",
"arguments": {
"name": "count_actors",
"description": "Count all actors in the current level.",
"code": "import unreal\nactors = unreal.get_editor_subsystem(unreal.EditorActorSubsystem).get_all_level_actors()\n_mcp_result = f'{len(actors)} actors'"
}
}Tools receive their arguments as _mcp_params (dict) and return a result by assigning _mcp_result (string).
Batch load from a JSON file:
[
{ "name": "tool_a", "description": "...", "code": "..." },
{ "name": "tool_b", "description": "...", "code": "..." }
]Some categories only activate when their plugin is enabled:
| Category | Required Plugin | Enable via |
|---|---|---|
| PCG | Procedural Content Generation | Plugins window |
| GAS | Gameplay Abilities | Plugins window |
| Niagara | Niagara | Enabled by default in UE5 |
| IK Retarget | IKRig | Plugins window |
All other categories load unconditionally.
- Transport: HTTP + SSE on
localhost:7777 - Protocol: MCP 2024-11-05 / JSON-RPC 2.0
- Engine version: UE 5.6+ (5.7 compatible)
- Module type: Editor plugin,
PostEngineInit - Threading: HTTP handlers run on the game thread tick — all UE API calls are direct, no
AsyncTaskwrappers
| Module | Contents |
|---|---|
UECortex |
Core server, router, registry, level/blueprint/rendering/spline/volume/cpp/viewport/fab/meta tools |
UECortexAsset |
Asset management tools |
UECortexAnim |
Animation Blueprint, skeleton, and state machine tools |
UECortexIKRetarget |
IK Rig setup and batch retarget tools (optional — requires IKRig) |
UECortexUMG |
Widget Blueprint tools |
UECortexSequencer |
Level Sequence / cinematics tools |
UECortexPCG |
PCG graph tools (optional — requires PCG plugin) |
UECortexGAS |
Gameplay Ability System tools (optional — requires GameplayAbilities) |
UECortexNiagara |
Niagara VFX tools |
UECortexPython |
Python executor + dynamic tool registration |