Skip to main content
Glama
elemenopyunome

unreal-engine-mcp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
UE_ENGINE_PATHYesPath to the Unreal Engine installation directory
UE_PROJECT_PATHYesPath to the Unreal project file (.uproject)
UE_MCP_ALLOW_WRITENoSet to 'false' to enable read-only mode (mutating tools disabled)

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
editor_stateA

Return engine/project/level info and the live actor count.

Call this first to confirm the Remote Control connection is working.

run_console_commandA

Execute an Unreal console command in the running editor.

Examples: 'stat fps', 'r.ScreenPercentage 50', 'ShowFlag.Bounds 1', 'Slomo 0.5', 'BuildPaths'. Anything you could type into the in-editor console works here.

save_allA

Save all dirty levels and content under /Game.

list_actorsB

List actors in the current level.

name_filter matches the World Outliner label (case-insensitive substring); class_filter matches the actor class name.

get_actorA

Get details (class, transform, path) for one actor by label or name.

spawn_actorB

Spawn an actor from a class.

actor_class accepts a short engine class name ('StaticMeshActor', 'PointLight', 'CameraActor'), a full class path ('/Script/Engine.StaticMeshActor'), or a Blueprint generated-class path ('/Game/BP/MyActor.MyActor_C'). location/rotation/scale are [x,y,z] (rotation is [roll,pitch,yaw]).

spawn_static_meshB

Spawn a StaticMeshActor using a static mesh asset.

mesh_asset is a content path, e.g. '/Engine/BasicShapes/Cube.Cube' or '/Game/Meshes/Rock.Rock'.

set_actor_transformC

Move/rotate/scale an actor. Only the provided components change.

set_actor_propertyB

Set an editor property on an actor (e.g. 'mobility', 'hidden', a light's 'intensity'). value is passed through to Unreal as-is.

destroy_actorB

Delete an actor from the level by label or name.

list_assetsB

List asset object paths under a content path.

class_filter keeps only assets whose class name contains the filter (e.g. 'StaticMesh', 'Material', 'Texture').

asset_existsB

Check whether an asset exists at the given object path.

asset_infoB

Return class/package info for an asset.

import_assetA

Import an external file (FBX/OBJ/glTF, PNG/EXR, WAV, …) into /Game.

source_file is an absolute path on the machine running the editor; destination_path is a content path like '/Game/Imported'.

duplicate_assetC

Duplicate an asset to a new object path.

rename_assetB

Rename/move an asset to a new object path.

save_assetC

Save a single asset to disk.

delete_assetA

Delete an asset. Destructive — fails if other assets still reference it.

new_levelA

Create a new empty level asset at a content path (e.g. '/Game/Maps/Test').

load_levelA

Open a level by content path, replacing the currently open level.

save_current_levelB

Save the currently open level.

create_materialA

Create a new empty Material asset.

package_path is the destination folder (e.g. '/Game/Materials'); name is the asset name. Use execute_python for wiring up material expression graphs, which the unreal.MaterialEditingLibrary exposes.

create_blueprintA

Create a Blueprint asset deriving from parent_class.

parent_class may be an engine class name ('Actor', 'Pawn', 'Character', 'ActorComponent') or a class path. The generated class is available to spawn_actor as '._C'.

compile_blueprintD

Compile a Blueprint asset by object path.

take_screenshotB

Capture a high-resolution screenshot of the active editor viewport.

filename is an absolute path on the editor machine where the PNG is written. Useful for letting the agent visually verify scene changes.

build_lightingA

Build static lighting for the current level via console.

quality is one of Preview, Medium, High, Production.

execute_pythonA

Run Python inside the running Unreal Editor.

With evaluate=False (default) code is run as statements and the captured log/print output is returned. With evaluate=True code must be a single expression and its value's repr is returned.

The unreal module is already imported in the editor's interpreter. Example (statements): import unreal for a in unreal.get_editor_subsystem(unreal.EditorActorSubsystem).get_all_level_actors(): unreal.log(a.get_actor_label()) Example (evaluate=True): len(unreal.get_editor_subsystem(unreal.EditorActorSubsystem).get_all_level_actors())

search_unreal_classesA

Search names in the live unreal module (classes, enums, libraries).

e.g. 'Niagara', 'Landscape', 'Sequencer', 'PCG', 'AbilitySystem', 'Spline', 'Foliage', 'Chaos'. Use this to discover what's available (including from enabled plugins) before writing execute_python.

introspect_unreal_classA

List methods and properties of an unreal class, with its docstring.

e.g. 'EditorActorSubsystem', 'NiagaraSystem', 'LandscapeProxy', 'MovieSceneSequence', 'StaticMeshEditorSubsystem'.

run_automation_testsA

Run Automation Framework tests headlessly.

test_filter matches test names (empty runs all). Requires UE_PROJECT_PATH and UE_ENGINE_PATH. Returns exit code and a tail of the log. This launches a short-lived headless editor — it does not use the live editor connection.

run_python_fileB

Execute a .py file headlessly via -ExecutePythonScript.

Useful for long batch jobs that shouldn't tie up the interactive editor.

cook_contentC

Cook project content for a target platform (Windows, Linux, Mac, Android…).

rc_get_propertyA

Read a UObject property directly via Remote Control (no Python bridge).

object_path is a full object path, e.g. '/Game/Maps/Test.Test:PersistentLevel.PointLight_1.LightComponent0'.

rc_set_propertyB

Write a UObject property directly via Remote Control (transacted/undoable).

rc_call_functionC

Call a UFunction on a UObject directly via Remote Control.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/elemenopyunome/unreal-engine-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server