UnrealMCP โ AI Bridge for Unreal Engine 5
Control the Unreal Engine 5 editor from Claude Code, Cursor, Windsurf, or any MCP client.
Build materials, wire Blueprint graphs, author Niagara systems, spawn actors, edit data tables and
profile performance, all by asking for it. 288 commands across 15 categories, no leaving your
terminal.

This is the community edition
It is stable and feature complete for what it covers. It is not abandoned, and it is not in
active development either: new subsystem work now goes into
CodeFizz Editor Agent,
the maintained commercial build. Everything here keeps working, issues still get read, and the
MIT licence is permanent.
If you want Control Rig, PCG, Sequencer, Mutable, Procedural Vegetation, audio and MetaSounds,
Behavior Trees and EQS, or packaged binaries for UE 5.6 / 5.7 / 5.8, that lives in Pro.
Community edition vs Pro
| Community (this repo) | CodeFizz Editor Agent (Pro) |
|---|
| Commands | 288 | 900+ |
| Categories | 15 | 28 |
| Engine support | Build it yourself | 5.6, 5.7, 5.8 |
| Blueprints, Materials, Niagara, StateTree | Yes | Yes, and deeper |
| Control Rig, PCG, Sequencer | No | Yes |
| Mutable, Procedural Vegetation | No | Yes |
| Audio, MetaSounds, Sound Cues | No | Yes |
| Behavior Trees, EQS | No | Yes |
| Insights profiling | Basic | Full trace analysis |
| Install | Clone, build, configure | One command, no compiler needed |
| Updates | Community pace | Shipped continuously |
| Support | GitHub issues | Priority, private Discord |
See the full command list โ
ยท Docs
ยท 3 day free trial
Already on UE 5.8? Epic now ships a first-party MCP server in 5.8 (Experimental, localhost
only). It is worth trying before you buy anything. This repo and Pro both also cover 5.6 and
5.7, which Epic's does not.
Two ways to use this repo
| CLI | MCP Server |
|---|
| Install | npm install -g unrealcli | pip install unrealmcp |
| Dependencies | None (single binary) | Python 3.10+ |
| Works with | Claude Code (via Bash) | Claude Code, Cursor, Windsurf, VS Code, Gemini CLI, Rider, Zed, Amazon Q |
| Protocol | Direct TCP | MCP over stdio |
Both talk to the same C++ plugin inside the editor. Use whichever fits your workflow, or both.
Quick Start
Option A: CLI (Recommended for Claude Code)
# 1. Install
npm install -g unrealcli
# 2. Go to any UE5 project and install the plugin
cd YourProject/
ue-cli init
# 3. Open the editor, then verify
ue-cli health_check
That's it. No Python, no config files, no MCP setup.
Option B: MCP Server (For Cursor, Windsurf, etc.)
# 1. Clone the plugin into your project
git clone https://github.com/aadeshrao123/Unreal-MCP.git Plugins/UnrealMCP
# 2. Install the Python MCP server
pip install unrealmcp
# 3. Add to your AI tool's config (see MCP Setup section below)
How It Works
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Unreal Engine 5 Editor โ
โ โ
โ C++ Plugin (UnrealMCPBridge) โ
โ TCP server on localhost:55557 โ
โ 288 commands: materials, blueprints, โ
โ niagara, statetree, actors, data โ
โ tables, profiling, and more โ
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ TCP/JSON
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โโโโโโโโโโโดโโโโโโโโโโ โโโโโโโโโโโดโโโโโโโโโโโ
โ CLI (ue-cli) โ โ MCP Server โ
โ Go binary โ โ Python (unrealmcp)โ
โ Direct TCP โ โ stdio โ TCP โ
โ โ โ โ
โ Claude Code โ โ Cursor, Windsurf, โ
โ (via Bash tool) โ โ VS Code, Rider... โ
โโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ
The C++ plugin runs inside the editor and exposes 288 commands over TCP. The CLI and MCP server are two different front doors to the same plugin.
CLI Reference
Installation
# From npm (recommended)
npm install -g unrealcli
# Or download binary directly from GitHub Releases
# https://github.com/aadeshrao123/Unreal-MCP/releases
Platforms: Windows (x64), macOS (Intel + Apple Silicon), Linux (x64 + ARM64)
Setup
# Navigate to your UE5 project
cd MyProject/
# Install the C++ plugin (one-time)
ue-cli init
# โ Creates Plugins/UnrealMCP/ with C++ source
# โ Patches .uproject to enable the plugin
# โ Open editor to compile, then you're ready
# Verify everything works
ue-cli doctor
Usage
# Every command follows this pattern:
ue-cli <command> [--flag value]
# Examples:
ue-cli health_check
ue-cli find_assets --class-type material --path /Game
ue-cli spawn_actor --name MyCube --type StaticMeshActor --location "[0,0,100]"
ue-cli get_data_table_rows --data-table-path /Game/Data/DT_Items
ue-cli save_all
# For complex params, use --json:
ue-cli build_material_graph --json '{"material_path":"/Game/M_Test","nodes":[...],"connections":[...]}'
# Or pipe from stdin:
echo '{"material_path":"/Game/M_Test","nodes":[...]}' | ue-cli build_material_graph --json -
Help & Discovery
# See all commands grouped by category
ue-cli --help
# See flags for a specific command
ue-cli find_assets --help
# Dump all commands with descriptions, flags, and examples (for AI assistants)
ue-cli list_commands
Global Flags
| Flag | Description |
|---|
--port <int> | TCP port override (default: auto-discover from port file) |
--timeout <int> | Timeout in seconds (default: 30, large ops: 300) |
--json <string> | Full params as JSON string (use - for stdin) |
--version | Print version |
Key Commands
Assets
ue-cli find_assets --class-type material --path /Game/Materials
ue-cli list_assets --path /Game --class-filter blueprint
ue-cli get_asset_properties --asset-path /Game/Materials/M_Base
ue-cli import_asset --source-file "C:/Art/texture.png" --destination-path /Game/Textures
ue-cli save_asset --asset-path /Game/Materials/M_Base
ue-cli save_all
Blueprints
ue-cli create_blueprint --name BP_MyActor --parent-class Actor
ue-cli add_component_to_blueprint --blueprint-path /Game/BP_MyActor --component-class StaticMeshComponent
ue-cli add_event_node --blueprint-name BP_MyActor --event-name BeginPlay
ue-cli compile_blueprint --blueprint-name BP_MyActor
ue-cli read_blueprint_content --blueprint-path /Game/BP_MyActor
Materials
ue-cli create_material --name M_Red --path /Game/Materials
ue-cli build_material_graph --material-path /Game/Materials/M_Red \
--nodes '[{"type":"Constant3Vector","pos_x":-400,"properties":{"Constant":"(R=1,G=0,B=0)"}}]' \
--connections '[{"from_node":0,"to_node":"material","to_pin":"BaseColor"}]'
ue-cli create_material_instance --parent-path /Game/Materials/M_Base --name MI_Red
Data Tables
ue-cli get_data_table_schema --data-table-path /Game/Data/DT_Items
ue-cli get_data_table_rows --data-table-path /Game/Data/DT_Items
ue-cli add_data_table_row --data-table-path /Game/Data/DT_Items --row-name CopperOre \
--data '{"DisplayName":"Copper Ore","StackSize":100}'
ue-cli update_data_table_row --data-table-path /Game/Data/DT_Items --row-name CopperOre \
--data '{"StackSize":200}'
Actors & Level
ue-cli get_actors_in_level
ue-cli spawn_actor --name MyCube --type StaticMeshActor --location "[0,0,100]"
ue-cli spawn_blueprint_actor --blueprint-path /Game/BP_MyActor --location "[500,0,0]"
ue-cli find_actors_by_name --pattern "Light"
ue-cli get_world_info
ue-cli take_screenshot
Performance Profiling
# Record โ Stop โ Analyze
ue-cli performance_start_trace --channels "cpu,gpu,frame"
# ... play the game ...
ue-cli performance_stop_trace
ue-cli performance_analyze_insight --query diagnose
ue-cli performance_analyze_insight --query flame --count 20
ue-cli performance_analyze_insight --query search --filter "ConveyorProcessor"
Enhanced Input
ue-cli create_input_action --asset-path /Game/Input/IA_Jump --value-type Boolean
ue-cli create_input_mapping_context --asset-path /Game/Input/IMC_Default
ue-cli add_key_mapping --context-path /Game/Input/IMC_Default --action-path /Game/Input/IA_Jump --key SpaceBar