UnrealEngine Bridge
Enables AI agents to interact with Unreal Engine 5.7, providing capabilities to manipulate actors, query scene hierarchies, manage materials and assets, execute editor commands, and perform viewport perception through screenshots and metadata.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@UnrealEngine Bridgefind the actor named 'Cube' and change its material to 'M_Brick_Red'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
UnrealEngine Bridge
Give Claude Code full control of Unreal Engine 5.7. Spawn actors, tweak materials, capture the viewport, keyframe animations — all through natural language via the Model Context Protocol.
51 MCP tools | 12 tool modules | 372 tests | Python 3.11+
How It Works
graph LR
subgraph Claude Code
A[MCP Client]
end
subgraph Python
B[MCP Server<br/><i>FastMCP · stdio</i>]
B --> C[Tool Modules<br/><i>12 modules · 51 tools</i>]
C --> D[Remote Control Bridge<br/><i>httpx · circuit breaker</i>]
end
subgraph Unreal Engine 5.7
E[Remote Control API<br/><i>localhost:30010</i>]
E --> F[Editor Runtime]
G[ViewportPerception<br/><i>localhost:30011</i>]
G --> F
end
A -- stdio --> B
D -- HTTP --> E
C -. viewport capture .-> G
style A fill:#6C47FF,color:#fff
style B fill:#1a1a2e,color:#fff
style C fill:#1a1a2e,color:#fff
style D fill:#1a1a2e,color:#fff
style E fill:#0d47a1,color:#fff
style F fill:#0d47a1,color:#fff
style G fill:#0d47a1,color:#fffQuick Start
Prerequisites
Requirement | Version |
Unreal Engine | 5.7 |
Python | 3.11+ |
Remote Control API plugin | Enabled in UE5 (ships with engine) |
1. Clone & Install
git clone https://github.com/JosephOIbrahim/UnrealEngine_Bridge.git
cd UnrealEngine_Bridge
pip install -e .2. Open the UE5 Project
Open
UnrealEngine_Bridge.uprojectin Unreal Engine 5.7Verify the Remote Control API plugin is enabled (Edit > Plugins)
Confirm
localhost:30010is reachable (check Output Log for "Remote Control Web Server started")
3. Connect Claude Code
Add this to your Claude Code MCP configuration (~/.claude/settings.json or project .mcp.json):
{
"mcpServers": {
"unreal": {
"command": "python",
"args": ["-m", "ue_mcp.mcp_server"],
"cwd": "/path/to/UnrealEngine_Bridge"
}
}
}4. Start Building
Open Claude Code and try:
"Spawn a cube at the origin, make it red, and rotate it 45 degrees"
Claude will use ue_spawn_actor, ue_create_material, ue_assign_material, and ue_set_transform automatically.
MCP Tools Reference
Actors (6 tools)
Tool | Description |
| Create an actor by class name with position/rotation |
| Remove an actor from the level |
| List all level actors, optionally filtered by class |
| Set location, rotation, and/or scale |
| Clone an actor with an offset |
| Get axis-aligned bounding box |
Scene Understanding (4 tools)
Tool | Description |
| Full inspection: class, transform, components, tags, parent |
| Multi-filter search (class, tag, name pattern, spatial proximity) |
| Deep component info (mesh assets, materials, light properties) |
| Recursive parent-child attachment tree |
Materials (4 tools)
Tool | Description |
| Create a MaterialInstanceConstant from a parent material |
| Set scalar, vector, or texture parameters |
| List all exposed parameters with current values |
| Apply a material to a specific mesh slot |
Blueprints (7 tools)
Tool | Description |
| Create a new Blueprint asset |
| Add a component to a live actor |
| Set a property on a component |
| Override CDO default values |
| Compile and save a Blueprint |
| List all components on an actor |
| Spawn a Blueprint instance into the level |
Sequencer & Animation (4 tools)
Tool | Description |
| Create a new LevelSequence asset |
| Play or scrub a sequence at a given time/rate |
| Bind a level actor to a sequence |
| Add a keyframe for a property at a given time |
Perception (4 tools)
Tool | Description |
| Capture the viewport with camera, selection, and scene metadata |
| Start/stop continuous viewport capture |
| Configure capture resolution, format, and rate |
| Two-snapshot structural diff (actors, camera, selection changes) |
Level (4 tools)
Tool | Description |
| Save the current level |
| Get level name and actor count |
| Load a level by content path |
| Streaming levels, world settings, game mode |
Assets (3 tools)
Tool | Description |
| Search the Content Browser by pattern and class |
| Create a material with BaseColor/Roughness/Metallic nodes |
| Delete an asset from the Content Browser |
Motion Graphics (3 tools)
Tool | Description |
| ClonerEffector procedural instancing |
| Spawn a Niagara particle system |
| Create a PCG procedural generation volume |
Editor Utilities (5 tools)
Tool | Description |
| Execute console commands with structured output parsing |
| Undo or redo the last editor transaction |
| Focus the viewport camera on an actor |
| Set editor selection by label |
Properties (2 tools)
Tool | Description |
| Read any UObject property by path |
| Write any UObject property by path |
Python Execution (1 tool)
Tool | Description |
| Run arbitrary Python in the editor (AST-sandboxed) |
Architecture
graph TB
subgraph "Python Layer"
MCP["MCP Server<br/><code>ue_mcp/mcp_server.py</code>"]
Tools["Tool Modules (12)<br/><code>ue_mcp/tools/</code>"]
RC["Remote Control Bridge<br/><code>remote_control/</code>"]
Val["Validation & Sandbox<br/><code>_validation.py</code>"]
Met["Metrics & Circuit Breaker<br/><code>metrics.py</code>"]
Log["JSON Logger<br/><code>logging.py</code>"]
end
subgraph "File Bridge Layer"
Orch["Bridge Orchestrator<br/><code>bridge_orchestrator.py</code>"]
USD["USD Bridge<br/><code>usd_bridge/</code>"]
FS[("~/.translators/<br/>bridge_state.usda<br/>heartbeat.json")]
end
subgraph "C++ Plugins (UE5)"
Sub["UEBridgeSubsystem<br/><i>State machine · polling</i>"]
Ed["BridgeEditorSubsystem<br/><i>File watching · process mgmt</i>"]
VP["ViewportPerception<br/><i>GPU readback · ring buffer</i>"]
RCAPI["Remote Control API<br/><i>REST · port 30010</i>"]
end
MCP --> Tools
Tools --> Val
Tools --> RC
RC --> Met
MCP --> Log
RC -- "HTTP" --> RCAPI
RCAPI --> Sub
Orch --> USD
USD --> FS
FS --> Sub
Sub --> Ed
VP -- "HTTP :30011" --> Tools
style MCP fill:#6C47FF,color:#fff
style Tools fill:#6C47FF,color:#fff
style RCAPI fill:#0d47a1,color:#fff
style Sub fill:#0d47a1,color:#fff
style VP fill:#0d47a1,color:#fffResilience
Pattern | Detail |
Circuit breaker | CLOSED → OPEN (5 failures) → HALF_OPEN (30s, 1 probe) → CLOSED |
Connection pooling | 10 max connections, 5 keepalive |
Timeout | 10s adaptive default |
Atomic file I/O |
|
Python sandbox | AST-based validation blocking |
Security
All Python code executed in UE5 is validated through a multi-layer sandbox:
Blocked modules:
os,sys,subprocess,shutil,socket,pickle,importlib, and 20+ moreBlocked builtins:
exec,eval,open,getattr,globals,__import__Blocked attributes:
system,popen,rmtree,kill, plus dangerous dundersPath validation: Content path traversal (
..) prevention on all inputsConsole safety: Blocked commands (
exit,quit,crash) and newline injection prevention
Project Structure
UnrealEngine_Bridge/
├── ue_mcp/ # MCP server package
│ ├── mcp_server.py # FastMCP entry point (stdio)
│ ├── metrics.py # Telemetry + observability
│ ├── logging.py # Structured JSON logging
│ └── tools/ # 12 tool modules (51 tools)
│ ├── actors.py # Spawn, delete, list, transform
│ ├── scene.py # Query, details, hierarchy
│ ├── materials.py # Create, set params, assign
│ ├── blueprints.py # Create, compile, components
│ ├── sequencer.py # Animation / Level Sequence
│ ├── perception.py # Viewport capture + diff
│ ├── editor.py # Console, undo/redo, focus
│ ├── level.py # Save, load, world info
│ ├── assets.py # Find, create, delete
│ ├── mograph.py # Cloner, Niagara, PCG
│ ├── properties.py # Get/set UObject properties
│ ├── python_exec.py # Sandboxed Python execution
│ ├── _validation.py # Input sanitization + AST sandbox
│ ├── _codegen.py # Shared code generation snippets
│ ├── _console_parsers.py # Structured stat output parsers
│ └── _types.py # Protocol types
│
├── remote_control/ # UE5 HTTP bridge package
│ ├── circuit_breaker.py # CLOSED/OPEN/HALF_OPEN state machine
│ ├── async_client.py # AsyncUnrealRemoteControl (MCP)
│ ├── sync_client.py # UnrealRemoteControl (standalone)
│ ├── codegen.py # UE5 Python script generation
│ ├── execution.py # File-based result polling
│ └── constants.py # URLs, timeouts, pool config
│
├── usd_bridge/ # USD file I/O package
│ ├── io.py # Atomic writes, locking, paths
│ ├── question.py # Question read/write
│ ├── transition.py # State transitions, finales
│ ├── signals.py # Behavioral signal extraction
│ ├── profile.py # Cognitive profiling + checksums
│ └── validation.py # Bridge state validation
│
├── Plugins/
│ ├── UEBridge/ # Core bridge C++ plugin
│ │ ├── UEBridgeRuntime/ # Subsystem, types, UI, style
│ │ └── UEBridgeEditor/ # File watching, process management
│ └── ViewportPerception/ # GPU readback, ring buffer, HTTP endpoint
│
├── bridge_orchestrator.py # Game flow orchestration
├── remote_control_bridge.py # Backward-compat shim → remote_control/
├── usd_bridge.py # Backward-compat shim → usd_bridge/
├── tests/ # 372 tests (pytest)
├── pyproject.toml # Build config, dependencies, tooling
└── .github/workflows/ci.yml # CI: Python 3.11/3.12, coverage, lintDevelopment
Running Tests
pip install -e ".[dev]"
python -m pytest tests/ -vRunning with Coverage
python -m pytest tests/ --cov=ue_mcp --cov=remote_control --cov-report=term-missingLinting
pip install ruff
ruff check ue_mcp/ remote_control/ tests/Adding a New Tool
Create
ue_mcp/tools/your_module.pyDefine a
register(server: MCPServer, ue: UEBridge) -> NonefunctionUse
@server.tool()decorators insideregister()Validate inputs with sanitizers from
_validation.pyRegister in
ue_mcp/tools/__init__.pyAdd tests in
tests/
License
Copyright 2026 Joseph Ibrahim. All rights reserved.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Appeared in Searches
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JosephOIbrahim/UnrealEngine_Bridge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server