A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal Engine via Remote Control API. Built with TypeScript and designed for game development automation.
1.2K
13 Tools
Version 4.43 or later needs to be installed to add the server automatically
Use cases
About
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal Engine via Remote Control API. Built with TypeScript and designed for game development automation.
Attribute | Details |
---|---|
Docker Image | mcp/unreal-engine-mcp-server |
Author | ChiR24 |
Repository | https://github.com/ChiR24/Unreal_mcp |
Docker Image built by|Docker Inc.
Docker Scout Health Score| Verify Signature|
COSIGN_REPOSITORY=mcp/signatures cosign verify mcp/unreal-engine-mcp-server --key https://raw.githubusercontent.com/docker/keyring/refs/heads/main/public/mcp/latest.pub
Licence|MIT License
Tools provided by this Server | Short Description |
---|---|
animation_physics | Animation and physics rigging helper covering Anim BPs, montage playback, and ragdoll setup. |
build_environment | Environment authoring toolkit for landscapes and foliage, from sculpting to procedural scatters. |
console_command | Guarded console command executor for one-off stat , r.* , or viewmode commands. |
control_actor | Viewport actor toolkit for spawning, removing, or nudging actors with physics forces. |
control_editor | Editor session controls for PIE playback, camera placement, and view modes. |
create_effect | FX sandbox for spawning Niagara systems, particle presets, or disposable debug shapes. |
inspect | Introspection utility for reading or mutating properties on actors, components, or CDOs. |
manage_asset | Asset library utility for browsing, importing, and bootstrapping simple materials. |
manage_blueprint | Blueprint scaffolding helper for creating assets and attaching components. |
manage_level | Level management helper for loading/saving, streaming, light creation, and lighting builds. |
manage_rc | Remote Control preset helper for building, exposing, and mutating RC assets. |
manage_sequence | Sequencer automation helper for Level Sequences: asset management, bindings, and playback control. |
system_control | Runtime/system controls for profiling, quality tiers, audio/UI triggers, screenshots, and editor lifecycle. |
animation_physics
Animation and physics rigging helper covering Anim BPs, montage playback, and ragdoll setup.
Use it when you need to:
Supported actions: create_animation_bp, play_montage, setup_ragdoll.
Parameters | Type | Description |
---|---|---|
action | string | Action type |
actorName | string optional | Actor label/name in the level to apply animation to. Required for play_montage and setup_ragdoll actions. |
animationPath | string optional | Content path to animation sequence asset to play. Alternative to montagePath for play_montage action. |
blendWeight | number optional | Blend weight between animated and ragdoll physics (0.0 to 1.0). 0.0 is fully animated, 1.0 is fully ragdoll. Optional, defaults to 1.0. |
montagePath | string optional | Content path to animation montage asset to play. Required for play_montage if animationPath not provided. |
name | string optional | Name for the created animation blueprint asset. Required for create_animation_bp action. |
physicsAssetName | string optional | Name or path to physics asset for ragdoll simulation. Required for setup_ragdoll action. |
playRate | number optional | Animation playback speed multiplier. 1.0 is normal speed, 2.0 is double speed, 0.5 is half speed. Optional, defaults to 1.0. |
savePath | string optional | Content path where animation blueprint will be saved (e.g., "/Game/Animations"). Required for create_animation_bp action. |
skeletonPath | string optional | Content path to skeleton asset (e.g., "/Game/Characters/MySkeleton"). Required for create_animation_bp action. |
build_environment
Environment authoring toolkit for landscapes and foliage, from sculpting to procedural scatters.
Use it when you need to:
Supported actions: create_landscape, sculpt, add_foliage, paint_foliage, create_procedural_terrain, create_procedural_foliage, add_foliage_instances, create_landscape_grass_type.
Parameters | Type | Description |
---|---|---|
action | string | Environment action |
bounds | object optional | |
brushSize | number optional | Radius of foliage paint brush in centimeters. Typical range: 500-5000. Required for paint_foliage action. |
density | number optional | Foliage placement density (instances per unit area). Typical range: 0.1 to 10.0. Required for add_foliage and affects procedural foliage. |
foliageType | string optional | |
foliageTypes | array optional | |
heightFunction | string optional | Mathematical function or algorithm for terrain height generation (e.g., "perlin", "simplex", custom formula). Optional for create_procedural_terrain. |
location | object optional | World space location for terrain placement. Required for create_procedural_terrain. |
materialPath | string optional | Content path to material for terrain/landscape (e.g., "/Game/Materials/TerrainMat"). Optional. |
meshPath | string optional | Content path to static mesh for foliage (e.g., "/Game/Foliage/TreeMesh"). Required for add_foliage action. |
name | string optional | Name for landscape, foliage type, or grass type actor. Optional for most actions, auto-generated if not provided. |
position | object optional | World space position for foliage paint brush center. Required for paint_foliage action. |
seed | number optional | |
sizeX | number optional | Landscape width in components. Each component is typically 63 quads. Required for create_landscape action. |
sizeY | number optional | Landscape height in components. Each component is typically 63 quads. Required for create_landscape action. |
strength | number optional | Paint tool strength/intensity (0.0 to 1.0). Higher values place more instances. Optional for paint_foliage, defaults to 0.5. |
subdivisions | number optional | Number of subdivisions for procedural terrain mesh. Higher values create more detailed terrain. Optional for create_procedural_terrain. |
tool | string optional | Landscape sculpt tool to use (Sculpt, Smooth, Flatten, Ramp, Erosion, Hydro, Noise). Required for sculpt action. |
transforms | array optional |
console_command
Guarded console command executor for one-off stat
, r.*
, or viewmode commands.
Use it when higher-level tools don't cover the console tweak you need. Hazardous commands (quit/exit, crash triggers, unsafe viewmodes) are blocked, and unknown commands respond with a warning instead of executing blindly.
Parameters | Type | Description |
---|---|---|
command | string | Console command to execute in Unreal Engine (e.g., "stat fps", "r.SetRes 1920x1080", "viewmode lit"). Dangerous commands like quit/exit and crash triggers are blocked. Required. |
control_actor
Viewport actor toolkit for spawning, removing, or nudging actors with physics forces.
Use it when you need to:
Supported actions: spawn, delete, apply_force.
Parameters | Type | Description |
---|---|---|
action | string | Action to perform |
actorName | string optional | Actor label/name (optional for spawn, auto-generated if not provided; required for delete). Case-insensitive for delete action. |
classPath | string optional | Actor class (e.g., "StaticMeshActor", "CameraActor") OR asset path (e.g., "/Engine/BasicShapes/Cube", "/Game/MyMesh"). Asset paths will automatically spawn as StaticMeshActor with the mesh applied. Required for spawn action. |
force | object optional | Force vector to apply in Newtons. Required for apply_force action. Actor must have physics simulation enabled. |
location | object optional | World space location in centimeters (Unreal units). Optional for spawn, defaults to origin. |
rotation | object optional | World space rotation in degrees. Optional for spawn, defaults to zero rotation. |
control_editor
Editor session controls for PIE playback, camera placement, and view modes.
Use it when you need to:
Supported actions: play, stop, set_camera, set_view_mode (with validation).
Parameters | Type | Description |
---|---|---|
action | string | Editor action |
location | object optional | World space camera location for set_camera action. All coordinates required. |
rotation | object optional | Camera rotation for set_camera action. All rotation components required. |
viewMode | string optional | View mode for set_view_mode action. Supported: Lit, Unlit, Wireframe, DetailLighting, LightingOnly, LightComplexity, ShaderComplexity. Required for set_view_mode. |
create_effect
FX sandbox for spawning Niagara systems, particle presets, or disposable debug shapes.
Use it when you need to:
Supported actions: niagara, particle, debug_shape.
Parameters | Type | Description |
---|---|---|
action | string | Effect type |
color | array optional | RGBA color array with values 0-255 (e.g., [255, 0, 0, 255] for red). Optional, defaults to white. |
duration | number optional | How long debug shape persists in seconds. 0 means one frame, -1 means permanent until cleared. Optional, defaults to 0. |
effectType | string optional | Preset particle effect type (Fire, Smoke, Water, Explosion, etc.). Used for particle action to spawn common effects. |
location | object optional | World space location where effect will be spawned in centimeters. Optional, defaults to origin. |
name | string optional | Name for the spawned effect actor. Optional, auto-generated if not provided. |
scale | number optional | Uniform scale multiplier for Niagara effect. 1.0 is normal size. Optional, defaults to 1.0. |
shape | string optional | Debug shape type to draw (Line, Box, Sphere, Capsule, Cone, Cylinder, Arrow). Required for debug_shape action. |
size | number optional | Size/radius of debug shape in centimeters. For Line, this is thickness. For shapes, this is radius/extent. Optional, defaults vary by shape. |
systemPath | string optional | Content path to Niagara system asset (e.g., "/Game/Effects/MyNiagaraSystem"). Required for niagara action. |
inspect
Introspection utility for reading or mutating properties on actors, components, or CDOs.
Use it when you need to:
Supported actions: inspect_object, set_property.
Parameters | Type | Description |
---|---|---|
action | string | Introspection action: "inspect_object" retrieves all properties, "set_property" modifies a specific property. Required. |
objectPath | string optional | Full object path in Unreal format (e.g., "/Game/Maps/Level.Level:PersistentLevel.StaticMeshActor_0" or "/Script/Engine.Default__StaticMeshActor" for CDO). Required for both actions. |
propertyName | string optional | Name of the property to modify (e.g., "RelativeLocation", "Mobility", "bHidden"). Required for set_property action. |
value | string optional | New property value. Must be JSON-serializable and compatible with property type (e.g., {"X":100,"Y":0,"Z":0} for vectors, 5.0 for floats, true for bools, "Value" for strings). Required for set_property action. |
manage_asset
Asset library utility for browsing, importing, and bootstrapping simple materials.
Use it when you need to:
Supported actions: list, import, create_material.
Parameters | Type | Description |
---|---|---|
action | string | Action to perform |
destinationPath | string optional | Destination path in project content where asset will be imported. Example: "/Game/ImportedAssets" |
directory | string optional | Directory path to list (shows immediate children only). Automatically maps /Content to /Game. Example: "/Game/MyAssets" |
name | string optional | Name for the new material asset. Example: "MyMaterial" |
path | string optional | Content path where material will be saved. Example: "/Game/Materials" |
sourcePath | string optional | Source file path on disk to import (FBX, PNG, WAV, EXR supported). Example: "C:/MyAssets/mesh.fbx" |
manage_blueprint
Blueprint scaffolding helper for creating assets and attaching components.
Use it when you need to:
Supported actions: create, add_component.
Parameters | Type | Description |
---|---|---|
action | string | Blueprint action |
name | string | Name for the blueprint asset. Required for create action. For add_component, this is the blueprint asset name or path. |
blueprintType | string optional | Base class type for blueprint (Actor, Pawn, Character, Object, ActorComponent, SceneComponent, etc.). Required for create action. |
componentName | string optional | Unique name for the component instance within the blueprint. Required for add_component action. |
componentType | string optional | Component class to add (StaticMeshComponent, SkeletalMeshComponent, CameraComponent, etc.). Required for add_component action. |
savePath | string optional | Content path where blueprint will be saved (e.g., "/Game/Blueprints"). Required for create action. |
manage_level
Level management helper for loading/saving, streaming, light creation, and lighting builds.
Use it when you need to:
Supported actions: load, save, stream, create_light, build_lighting.
Parameters | Type | Description |
---|---|---|
action | string | Level action |
intensity | number optional | Light intensity value in lumens (for Point/Spot) or lux (for Directional). Typical range: 1000-10000. Optional for create_light. |
levelName | string optional | Level name for streaming operations. Required for stream action. |
levelPath | string optional | Full content path to level asset (e.g., "/Game/Maps/MyLevel"). Required for load action. |
lightType | string optional | Type of light to create. Directional for sun-like lighting, Point for omni-directional, Spot for cone-shaped, Rect for area lighting. Required for create_light. |
location | object optional | World space location for light placement in centimeters. Optional for create_light, defaults to origin. |
name | string optional | Name for the spawned light actor. Optional, auto-generated if not provided. |
quality | string optional | Lighting build quality level. Preview is fastest, Production is highest quality. Required for build_lighting action. |
shouldBeLoaded | boolean optional | Whether to load (true) or unload (false) the streaming level. Required for stream action. |
shouldBeVisible | boolean optional | Whether the streaming level should be visible after loading. Optional for stream action. |
streaming | boolean optional | Whether to use streaming load (true) or direct load (false). Optional for load action. |
manage_rc
Remote Control preset helper for building, exposing, and mutating RC assets.
Use it when you need to:
Supported actions: create_preset, expose_actor, expose_property, list_fields, set_property, get_property.
Parameters | Type | Description |
---|---|---|
action | string | RC action |
actorName | string optional | Actor label/name in level to expose to Remote Control preset. Required for expose_actor action. |
name | string optional | Name for Remote Control preset asset. Required for create_preset action. |
objectPath | string optional | Full object path for property operations (e.g., "/Game/Maps/Level.Level:PersistentLevel.StaticMeshActor_0"). Required for expose_property, set_property, and get_property actions. |
path | string optional | Content path where preset will be saved (e.g., "/Game/RCPresets"). Required for create_preset action. |
presetPath | string optional | Full content path to existing Remote Control preset asset (e.g., "/Game/RCPresets/MyPreset"). Required for expose_actor, expose_property, list_fields, set_property, and get_property actions. |
propertyName | string optional | Name of the property to expose, get, or set (e.g., "RelativeLocation", "Intensity", "bHidden"). Required for expose_property, set_property, and get_property actions. |
value | string optional | New value to set for property. Must be JSON-serializable and compatible with property type (e.g., {"X":100,"Y":200,"Z":300} for location, true/false for bool, number for numeric types). Required for set_property action. |
manage_sequence
Sequencer automation helper for Level Sequences: asset management, bindings, and playback control.
Use it when you need to:
Supported actions: create, open, add_camera, add_actor, add_actors, remove_actors, get_bindings, add_spawnable_from_class, play, pause, stop, set_properties, get_properties, set_playback_speed.
Parameters | Type | Description |
---|---|---|
action | string | Sequence action |
actorName | string optional | Actor label/name in level to add as possessable binding to sequence. Required for add_actor action. |
actorNames | array optional | Array of actor labels/names for batch add or remove operations. Required for add_actors and remove_actors actions. |
className | string optional | Unreal class name for spawnable actor (e.g., "StaticMeshActor", "CineCameraActor", "SkeletalMeshActor"). Required for add_spawnable_from_class action. |
frameRate | number optional | Sequence frame rate in frames per second (e.g., 24, 30, 60). Required for set_properties when changing frame rate. |
lengthInFrames | number optional | Total sequence length measured in frames. Required for set_properties when changing duration. |
loopMode | string optional | How sequence loops: "once" plays once and stops, "loop" repeats from start, "pingpong" plays forward then backward. Optional for set_properties. |
name | string optional | Name for new Level Sequence asset. Required for create action. |
path | string optional | Content path - for create action: save location (e.g., "/Game/Cinematics"); for open/operations: full asset path (e.g., "/Game/Cinematics/MySequence"). Required for create and open actions. |
playbackEnd | number optional | Last frame of playback range (inclusive). Optional for set_properties. |
playbackStart | number optional | First frame of playback range (inclusive). Optional for set_properties. |
spawnable | boolean optional | If true, camera is spawnable (owned by sequence); if false, camera is possessable (references level actor). Optional for add_camera, defaults to true. |
speed | number optional | Playback speed multiplier. 1.0 is normal speed, 2.0 is double speed, 0.5 is half speed. Required for set_playback_speed action. |
system_control
Runtime/system controls for profiling, quality tiers, audio/UI triggers, screenshots, and editor lifecycle.
Use it when you need to:
Supported actions: profile, show_fps, set_quality, play_sound, create_widget, show_widget, screenshot, engine_start, engine_quit.
Parameters | Type | Description |
---|---|---|
action | string | System action |
category | string optional | Scalability quality category to adjust: ViewDistance, AntiAliasing, Shadow/Shadows, PostProcess/PostProcessing, Texture/Textures, Effects, Foliage, Shading. Required for set_quality action. |
editorExe | string optional | Absolute path to Unreal Editor executable (e.g., "C:/UnrealEngine/Engine/Binaries/Win64/UnrealEditor.exe"). Required for engine_start unless UE_EDITOR_EXE environment variable is set. |
enabled | boolean optional | Enable (true) or disable (false) profiling/FPS display. Required for profile and show_fps actions. |
is3D | boolean optional | Whether sound should be played as 3D positional audio (true) or 2D (false). Optional for play_sound, defaults to false. |
level | number optional | Quality level (0=Low, 1=Medium, 2=High, 3=Epic, 4=Cinematic). Required for set_quality action. |
location | object optional | World space location for 3D sound playback. Required if is3D is true for play_sound action. |
profileType | string optional | Type of profiling to enable: CPU (stat cpu), GPU (stat gpu), Memory (stat memory), FPS (stat fps), Unit (stat unit). Required for profile action. |
projectPath | string optional | Absolute path to .uproject file (e.g., "C:/Projects/MyGame/MyGame.uproject"). Required for engine_start unless UE_PROJECT_PATH environment variable is set. |
resolution | string optional | Screenshot resolution in WIDTHxHEIGHT format (e.g., "1920x1080", "3840x2160"). Optional for screenshot action, uses viewport size if not specified. |
soundPath | string optional | Content path to sound asset (SoundCue or SoundWave, e.g., "/Game/Audio/MySound"). Required for play_sound action. |
verbose | boolean optional | Show verbose profiling output with additional details. Optional for profile action. |
visible | boolean optional | Whether widget should be visible (true) or hidden (false). Required for show_widget action. |
volume | number optional | Volume multiplier (0.0=silent, 1.0=full volume). Optional for play_sound, defaults to 1.0. |
widgetName | string optional | Name for widget asset or instance. Required for create_widget and show_widget actions. |
widgetType | string optional | Widget blueprint type or category (HUD, Menu, Dialog, Notification, etc.). Optional for create_widget, helps categorize the widget. |
{
"mcpServers": {
"unreal-engine-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"UE_HOST",
"-e",
"UE_RC_HTTP_PORT",
"-e",
"UE_RC_WS_PORT",
"-e",
"LOG_LEVEL",
"mcp/unreal-engine-mcp-server"
],
"env": {
"UE_HOST": "<nil>",
"UE_RC_HTTP_PORT": "<nil>",
"UE_RC_WS_PORT": "<nil>",
"LOG_LEVEL": "<nil>"
}
}
}
}
Manual installation
You can install the MCP server using:
Installation for