ECABridge
Health Uyari
- No license — Repository has no license file
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Gecti
- Code scan — Scanned 11 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
This tool is an MCP server plugin that provides over 390 commands for automating Unreal Engine 5. It allows AI agents like Claude or ChatGPT to programmatically interact with the game engine to build scenes, customize characters, and introspect assets.
Security Assessment
The overall risk is rated as Low. The automated code scan checked 11 files and found no dangerous patterns, hardcoded secrets, or requests for excessive permissions. It runs a local HTTP/SSE server on localhost:3000 to facilitate communication between the AI and the game editor. While it does not make external network requests or execute arbitrary shell commands, users should be aware that granting an AI agent the ability to read and modify local project files always carries an inherent risk of unintended alterations to your workspace.
Quality Assessment
The project is highly active, with its most recent code push occurring today. However, it currently suffers from low community visibility, having only 5 GitHub stars. More critically, the repository lacks a designated open-source license. From a legal standpoint, this means "all rights reserved" by the creator, which could restrict how developers use or modify the code in commercial or collaborative environments.
Verdict
Safe to use, but developers should proceed with caution regarding the strict unlicensed status before integrating it into commercial projects.
ECABridge - AI-powered Unreal Engine 5 MCP plugin for character customization, scene building, and automation
ECABridge — AI-Powered Unreal Engine 5 MCP Plugin
390+ MCP tools for UE5 editor automation via Claude, ChatGPT, or any MCP-compatible AI agent.
Using this with an AI agent? Pair it with ue5-mcp — a Claude Code / Cowork skill that loads the hard-won knowledge your agent needs to use these tools without crashing the editor or wasting hours on silent-fail APIs. ECABridge is the plugin (what tools exist); ue5-mcp is the field manual (which calls actually work, which crash, and the workarounds). Install both.
Features
- 390+ MCP tools organized by category
- 12 Rosetta Stone commands — full JSON dumps of assets, blueprints, levels, materials, Niagara, sequencer, widgets, animation, MetaSound, and DataTables
- 6 workflow commands — project overview, cross-blueprint search, asset validation, snapshot/diff, undo-batching, class hierarchy
- 5 refactoring commands — replace references, bulk rename, search-and-replace properties, world settings
- 5 advanced system commands — landscape, source control, PCG graphs, Control Rig, Gameplay Ability System
- 22 MetaHuman commands — full procedural pipeline from asset creation through cloud texture/rig through groom attachment and outfit tinting
- 5 Enhanced Input commands — actions, mapping contexts, key bindings
- 2 Niagara Data Channel commands — create and dump cross-system data channels
- HTTP/SSE MCP server on localhost:3000 (Streamable HTTP transport)
- UE 5.7 compatible (built and tested against 5.7.4)
- No engine modifications — drop-in plugin
Rosetta Stone: Deep Introspection
LLMs can't read binary .uasset or .umap files. These commands serialize UE5 assets into structured JSON, making any asset fully legible in a single MCP call:
| Command | What it does |
|---|---|
dump_asset |
Full JSON of any asset — all UPROPERTYs, sub-objects, references, metadata, optional thumbnail |
dump_blueprint_graph |
Complete Blueprint — all graphs, nodes, pins, connections, variables, components |
dump_level |
Full level state — all actors with transforms, components, tags. Lightweight or deep mode |
find_assets |
Search the asset registry by class, path, or name wildcard |
get_asset_references |
Dependency graph — what references what, with recursive depth |
dump_material_graph |
Complete material — all expression nodes, connections, material properties, compilation errors |
dump_niagara_system |
Full Niagara system — emitter stacks per stage, renderers, module inputs, parameters |
dump_level_sequence |
Complete sequencer — all bindings, tracks, sections, keyframe channel data |
dump_widget_tree |
Hierarchical widget tree — parent-child structure, slot properties, visibility |
dump_animation_blueprint |
AnimBP — state machines, states, transitions, AnimGraph nodes, variables |
dump_metasound_graph |
Full MetaSound — all nodes, pins, connections, source inputs/outputs |
dump_datatable |
Complete DataTable — schema with types + all row data in one call |
# See everything about a material
dump_asset(asset_path="/Game/Materials/M_Hero")
# Search for all blueprints in a folder
find_assets(class_filter="Blueprint", path_filter="/Game/Blueprints/")
# Read the full node graph of a blueprint
dump_blueprint_graph(blueprint_path="/Game/Blueprints/BP_Enemy")
# Get all actors in the current level (lightweight mode)
dump_level(max_actors=100)
# What would break if I changed this texture?
get_asset_references(asset_path="/Game/Textures/T_Hero_D", direction="referencers")
# Full Niagara system with module stacks and renderers
dump_niagara_system(system_path="/Game/Effects/NS_Fire")
# Read a complete sequencer timeline with keyframes
dump_level_sequence(sequence_path="/Game/Cinematics/MySeq")
# Inspect a widget tree hierarchy
dump_widget_tree(widget_path="/Game/UI/WBP_MainMenu")
Command Categories
| Category | Commands | Highlights |
|---|---|---|
| Actor | 35+ | Spawn, delete, transform, find, duplicate, select, describe, hierarchy, tags, folders, visibility, mobility |
| Blueprint | 25+ | Create, compile, add nodes/variables/components, wire graphs, Blueprint Lisp DSL |
| Blueprint Node | 34+ | Events, functions, macros, casts, flow control, batch ops, auto-layout, full graph dump |
| Material | 16+ | Create materials/instances, edit node graphs, set parameters |
| Material Node | 20+ | Add/delete/connect nodes, set properties, auto-layout, error checking |
| Mesh | 40+ | Primitives, booleans, extrude, subdivide, simplify, UVs, import/export |
| Niagara | 20+ | Create systems/emitters, add modules/renderers, set parameters |
| MetaSound | 15+ | Create sources, add/connect nodes, set inputs, preview |
| MVVM | 7 | ViewModel binding, text/visibility/image bindings |
| Widget/UMG | 15+ | Create widgets, add text/buttons/images, bind events |
| Mutable/CO | 16 | Character customization: create/edit CO graphs, compile, runtime params, spawn actors |
| MetaHuman | 22 | Full procedural pipeline: create, describe (NL), face presets, body constraints, groom attach, makeup, cloud textures/rig, tint outfit, editor screenshot |
| Sequencer | 8 | Create sequences, bind actors, keyframe transforms, spawn cameras, camera properties (FOV/aperture), float key animation |
| Animation | 6 | Play/stop animations, list compatible anims, set AnimBP, skeleton info, create animations programmatically from bone keyframes |
| Lighting | 4 | Set light properties, get light info, one-command 3-point rig, post-process settings |
| Movie Render Queue | 2 | Render sequences to PNG/JPG/MP4 with configurable resolution, check render progress |
| Environment/PCG | 28+ | Generate grids/circles, walls, fog, sky, splines, gravity, batch spawn/set/destroy, physics simulation, impulse, visibility, teleport, scene stats, camera screenshots, decals, 3D text, describe actor, clone arrays, audio, triggers, align/distribute, scene snapshots, time dilation, measurements, scatter |
| AI/Navigation | 4 | Build navmesh, find paths, move actors, navmesh info |
| Data Table | 4 | Schema, rows, CRUD |
| Editor | 10+ | Viewport control, screenshots, PIE, console commands, save/open levels, full level dump |
| View | 3 | Camera control, scene description, frustum queries |
| Asset | 15+ | Import/export, create materials, thumbnails, dump_asset, find_assets, get_asset_references |
| Component | 5 | Properties, transforms, physics, static mesh |
| Project | 3+ | Settings, input mappings |
Quick Start
- Copy the plugin folder to your project's
Plugins/directory - Add to your
.uproject:{"Name": "ECABridge", "Enabled": true} - Build and launch the editor
- ECABridge starts automatically on
localhost:3000
Claude Desktop Config
{
"mcpServers": {
"ue5": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:3000/mcp"]
}
}
}
Test with curl
# Initialize MCP session
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
# List all tools
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
# Spawn a cube
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"create_actor","arguments":{"actor_type":"StaticMeshActor","name":"MyCube","location":{"x":0,"y":0,"z":100},"mesh":"/Engine/BasicShapes/Cube"}}}'
Mutable Character Customization
The plugin includes 15 commands for Epic's Mutable (Customizable Object) system, enabling AI-driven character creation:
# Create a customizable object
create_co → add_co_node → set_co_node_property → connect_co_nodes → compile_co
# Modify characters at runtime
set_co_instance_param(actor_name="CharacterActor", param_name="Body Type 1", param_value="Strong")
set_co_instance_param(actor_name="CharacterActor", param_name="Skin Tone", param_value=0.5)
set_co_instance_param(actor_name="CharacterActor", param_name="Head Accessories", param_value="Helmet")
Level Sequencer
6 commands for cinematic creation:
create_level_sequence → add_sequence_camera → add_sequence_transform_key → play_sequence
MetaHuman: Zero-Touch Procedural Character Creation
22 commands that drive Epic's MetaHuman Character pipeline end-to-end from natural-language prompts. No UI clicks required (after Epic sign-in).
Extending MetaHuman support? Read
docs/METAHUMAN.mdfirst — it points to the canonical technical reference with the reflection patterns, the Collection+Instance groom flow, theEMetaHumanCharacterSkinPreviewMaterialenum inversion gotcha, Epic sign-in requirements, and every 5.7 API pitfall we've already walked into. Copy the patterns; don't reinvent them.
The full pipeline:
create_metahuman(package_path="/Game/Characters", asset_name="MH_Hero")
describe_metahuman(character_path=".../MH_Hero",
description="tall muscular with vivid purple hair and green eyes and light freckled skin")
# matches: body, skin, eyes, hair keywords → sets 7+ properties
set_metahuman_face_preset(character_path=".../MH_Hero",
preset_path="/MetaHumanCharacter/Optional/Presets/Grace")
# 29 preset faces: Ada, Bruce, Celeste, Dominic, Grace, Isaiah, Jelena, Kelvin, Lorenzo, ...
set_metahuman_body_type(character_path=".../MH_Hero", body_type="f_tal_nrw")
# 18 body presets: {gender}_{height}_{weight}, e.g. m_tal_ovw, f_med_nrw
set_metahuman_body_constraints(character_path=".../MH_Hero", constraints=[
{name: "Height", target_measurement: 178, active: true},
{name: "Chest", target_measurement: 94, active: true},
{name: "Waist", target_measurement: 72, active: true}
]) # 30 parametric body dimensions in cm
set_metahuman_makeup(character_path=".../MH_Hero",
lip_type="Natural", lip_color={r:0.5,g:0.15,b:0.2,a:1},
eye_type="SoftSmokey", blush_type="Apple")
set_metahuman_preview_mode(character_path=".../MH_Hero", mode="skin")
open_metahuman_editor(character_path=".../MH_Hero")
download_metahuman_textures(character_path=".../MH_Hero") # cloud — needs Epic sign-in
rig_metahuman(character_path=".../MH_Hero", rig_type="full") # cloud
attach_metahuman_groom(slot_name="Hair",
wardrobe_item_path="/MetaHumanCharacter/Optional/Grooms/Bindings/Hair/WI_Hair_L_Straight")
attach_metahuman_groom(slot_name="Eyebrows",
wardrobe_item_path="/MetaHumanCharacter/Optional/Grooms/Bindings/Eyebrows/WI_Eyebrows_M_Dense")
# 96 hair/beard/eyebrow/eyelash grooms ship with the engine
refresh_metahuman_preview(character_path=".../MH_Hero")
spawn_metahuman_actor(character_path=".../MH_Hero")
tint_metahuman_outfit(actor_name="MetaHumanDefaultEditorPipelineActor0",
shirt_color={r:0.6,g:0.1,b:0.1,a:1})
take_metahuman_editor_screenshot(character_path=".../MH_Hero",
file_path="D:/Screenshots/Hero.png")
Photo → MetaHuman workflow: pair Claude's vision with the MetaHuman commands. The AI analyzes a photo, extracts features (skin tone, hair style, face shape, beard, etc.), picks the closest preset from Epic's 29, attaches matching grooms, and builds a photo-inspired character. Not a perfect likeness (that needs Epic's Mesh-to-MetaHuman scan pipeline) but genuinely readable.
Commands: create, dump, describe, set_property, preview_mode, open_editor, build, download_textures, rig, spawn_actor, get/set_body_constraints, set_body_type, attach_groom, list_grooms, list_presets, set_face_preset, set_makeup, refresh_preview, take_editor_screenshot, tint_outfit.
Requires: Epic sign-in (click the person icon in the MetaHuman editor toolbar) for cloud operations — texture synthesis and auto-rigging both hit Epic's MetaHuman service.
Things to Try
Once the editor is running with ECABridge loaded, point your AI agent at it and try these:
See your whole level as JSON for the first time:
dump_level(max_actors=200)
Reverse-engineer any Blueprint without opening the editor:
dump_blueprint_graph(blueprint_path="/Game/Blueprints/BP_PlayerCharacter")
Understand a material's full node graph:
dump_material_graph(material_path="/Game/Materials/M_Landscape")
Find every asset of a type and then deep-dive one:
find_assets(class_filter="NiagaraSystem", path_filter="/Game/Effects/")
dump_niagara_system(system_path="/Game/Effects/NS_Explosion")
Check what would break before you change something:
get_asset_references(asset_path="/Game/Textures/T_BaseColor", direction="referencers", depth=2)
Read back a cinematic you built, keyframes and all:
dump_level_sequence(sequence_path="/Game/Cinematics/Intro", include_keyframes=true)
Inspect a UI widget tree hierarchy:
dump_widget_tree(widget_path="/Game/UI/WBP_HUD")
See an Animation Blueprint's state machine structure:
dump_animation_blueprint(anim_bp_path="/Game/Characters/ABP_Mannequin")
Dump a DataTable — schema and all rows at once:
dump_datatable(asset_path="/Game/Data/DT_WeaponStats")
Serialize any asset you can't otherwise read:
dump_asset(asset_path="/Game/SomeOpaqueAsset", include_thumbnail=true)
Get a bird's-eye view of an unfamiliar project:
get_project_overview(path="/Game/", max_depth=3)
Find every Blueprint that calls a specific function:
search_blueprint_usage(search_term="SetActorLocation", path_filter="/Game/Blueprints/")
Understand a class before you use it:
get_class_hierarchy(class_name="Character", include_functions=true)
Validate your work after making changes:
validate_asset(asset_path="/Game/Blueprints/BP_Enemy")
Track what changed — snapshot before, diff after:
snapshot_asset(asset_path="/Game/Materials/M_Hero")
# ...make changes...
diff_asset(asset_path="/Game/Materials/M_Hero", snapshot_id="<id from snapshot>")
Batch multiple operations into a single undo step:
batch_operation(
description="Setup enemy spawner",
commands=[
{name: "create_actor", arguments: {actor_type: "StaticMeshActor", name: "Spawner", ...}},
{name: "set_actor_material", arguments: {actor_name: "Spawner", material_path: "..."}},
{name: "add_actor_tag", arguments: {actor_name: "Spawner", tag: "EnemySpawn"}}
]
)
Swap all references to one asset with another (safe refactoring):
replace_asset_references(old_asset_path="/Game/Materials/M_Old", new_asset_path="/Game/Materials/M_New", dry_run=true)
Bulk rename assets with find/replace:
bulk_rename_assets(path_filter="/Game/Textures/", find="T_Old", replace="T_New", dry_run=true)
Change a property on every actor of a class at once:
search_and_replace_property(class_filter="PointLight", property_name="Intensity", find_value="5000", replace_value="3000")
Read or change world settings:
get_world_settings()
set_world_settings(property="KillZ", value="-10000")
Understand a class hierarchy before working with it:
get_class_hierarchy(class_name="Character", include_functions=true)
Inspect landscape terrain — components, layers, material:
dump_landscape()
Check source control status for pending changes:
get_source_control_status(path_filter="/Game/", include_unchanged=false)
Dump a PCG graph — all nodes, edges, parameters:
dump_pcg_graph(graph_path="/Game/PCG/PCGG_ForestSpawner")
Read a Control Rig's hierarchy (bones, controls, nulls):
dump_control_rig(rig_path="/Game/Characters/CR_Mannequin")
Inspect a Gameplay Ability / Effect / AttributeSet:
dump_gameplay_ability(asset_path="/Game/GAS/GA_Fireball")
Create a MetaHuman procedurally from natural language:
create_metahuman(package_path="/Game/Characters", asset_name="MH_Kai")
describe_metahuman(character_path="/Game/Characters/MH_Kai",
description="tall muscular dark-skinned man with brown eyes and black hair")
set_metahuman_face_preset(character_path="/Game/Characters/MH_Kai",
preset_path="/MetaHumanCharacter/Optional/Presets/Kelvin")
set_metahuman_body_type(character_path="/Game/Characters/MH_Kai", body_type="m_tal_ovw")
open_metahuman_editor(character_path="/Game/Characters/MH_Kai")
download_metahuman_textures(character_path="/Game/Characters/MH_Kai") # Epic cloud
rig_metahuman(character_path="/Game/Characters/MH_Kai", rig_type="full") # Epic cloud
attach_metahuman_groom(character_path="/Game/Characters/MH_Kai", slot_name="Hair",
wardrobe_item_path="/MetaHumanCharacter/Optional/Grooms/Bindings/Hair/WI_Hair_S_CurlyFade")
attach_metahuman_groom(character_path="/Game/Characters/MH_Kai", slot_name="Beard",
wardrobe_item_path="/MetaHumanCharacter/Optional/Grooms/Bindings/Beards/WI_Beard_L_Full")
refresh_metahuman_preview(character_path="/Game/Characters/MH_Kai")
Discover what groom assets you have available:
list_metahuman_grooms() # Groups 96 engine-shipped wardrobe items by slot
list_metahuman_presets() # Lists the 29 preset faces
Morph a MetaHuman's body with 30 parametric dimensions:
get_metahuman_body_constraints(character_path="/Game/Characters/MH_Hero")
set_metahuman_body_constraints(character_path="/Game/Characters/MH_Hero", constraints=[
{name: "Height", target_measurement: 185, active: true},
{name: "Chest", target_measurement: 108, active: true},
{name: "Thigh", target_measurement: 62, active: true}
])
Apply Hollywood makeup in one call:
set_metahuman_makeup(character_path="/Game/Characters/MH_Hero",
lip_type="Hollywood", lip_color={r:0.5,g:0.1,b:0.15,a:1},
eye_type="SoftSmokey", blush_type="Apple", foundation=true)
Drop a MetaHuman into the level and tint their outfit per-actor:
spawn_metahuman_actor(character_path="/Game/Characters/MH_Hero")
tint_metahuman_outfit(actor_name="MetaHumanDefaultEditorPipelineActor0",
shirt_color={r:0.1,g:0.3,b:0.8,a:1})
Capture the MetaHuman editor tab remotely:
take_metahuman_editor_screenshot(character_path="/Game/Characters/MH_Hero",
file_path="D:/Shots/hero.png")
Photo → MetaHuman (with Claude's vision in the loop): Share a photo with your AI agent. It analyzes the image (skin tone, hair, face shape, beard, etc.), picks the closest face preset, attaches matching grooms, and builds a photo-inspired MetaHuman. Not a perfect likeness — that requires Epic's Mesh-to-MetaHuman scan tool — but genuinely recognizable.
Build an input system from scratch:
create_input_action(asset_path="/Game/Input/IA_Jump", value_type="Digital")
create_input_mapping_context(asset_path="/Game/Input/IMC_Gameplay")
add_input_mapping(context_path="/Game/Input/IMC_Gameplay",
action_path="/Game/Input/IA_Jump", key="SpaceBar")
dump_input_mapping_context(context_path="/Game/Input/IMC_Gameplay")
Create a Niagara Data Channel for cross-system communication:
create_niagara_data_channel(
asset_path="/Game/FX/NDC_Hits",
variables=[{name: "Position", type: "Vector"}, {name: "Damage", type: "Float"}]
)
Requirements
- Unreal Engine 5.7+
- Visual Studio 2022 (for building)
- For Mutable commands:
Mutableplugin enabled - For MetaHuman commands:
MetaHumanCharacterplugin enabled
License
Internal use — Agile Lens / ibrews
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi