# UECortex

> An Unreal Engine native MCP server and tools to interface with LLM models such as Claude to automate various workflows

- **Type:** MCP server
- **Install:** `agentstack add mcp-ashd-007-uecortex`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [ashd-007](https://agentstack.voostack.com/s/ashd-007)
- **Installs:** 0
- **Category:** [AI & ML](https://agentstack.voostack.com/c/ai-and-ml)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [ashd-007](https://github.com/ashd-007)
- **Source:** https://github.com/ashd-007/UECortex

## Install

```sh
agentstack add mcp-ashd-007-uecortex
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# UECortex

Native Unreal Engine 5 plugin that runs a full [MCP (Model Context Protocol)](https://modelcontextprotocol.io) 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.

---

## Quick Start

### 1. Install

Copy the `UECortex` folder into your project's `Plugins/` directory and enable it in your `.uproject`:

```json
{
  "Name": "UECortex",
  "Enabled": true
}
```

Reopen the project. The server starts automatically on editor launch.

### 2. Connect

**Claude Code:**
```bash
claude mcp add uecortex --transport http http://localhost:7777/mcp
```

**VS Code** (`.vscode/mcp.json`):
```json
{ "servers": { "uecortex": { "url": "http://localhost:7777/mcp" } } }
```

**Claude Desktop** (`claude_desktop_config.json`):
```json
{ "mcpServers": { "uecortex": { "url": "http://localhost:7777/mcp" } } }
```

**Health check:**
```
GET http://localhost:7777/health
```

---

## Tool Categories

### Meta
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 |

---

### Level & Actors
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 |

---

### Blueprints
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 |

---

### C++ Code Generation
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 |

---

### Rendering & Materials
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 |

---

### Splines & Volumes
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 |

---

### PCG *(requires Procedural Content Generation plugin)*
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 |

---

### Gameplay Ability System *(requires GameplayAbilities plugin)*
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 |

---

### Niagara VFX
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 |

---

### Animation
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_condition` so the variable getter can resolve its type.
>
> For standard locomotion, use `anim_create_locomotion_setup` to do all of the above in a single call (includes EventGraph wiring for Speed and IsInAir).

---

### UMG Widgets
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 |

---

### Sequencer
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 |

---

### Asset Management
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 |

---

### Viewport & Input
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 |

---

### Fab Marketplace
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_asset` is information-only. Every response includes an explicit `CONSENT REQUIRED` notice. AI agents must never trigger a purchase, add-to-cart, or any payment action without explicit user confirmation.

---

### Python & Dynamic Tools
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 P

…

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [ashd-007](https://github.com/ashd-007)
- **Source:** [ashd-007/UECortex](https://github.com/ashd-007/UECortex)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-ashd-007-uecortex
- Seller: https://agentstack.voostack.com/s/ashd-007
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
