Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

UnrealMCP — AI Bridge for Unreal Engine 5

PYPI · UNREALMCP

Control the Unreal Engine 5 editor from any MCP client: Blueprints, materials, Niagara.

Available components

0 this week 0 Trust /100

Last scanned (14 hours ago)

Scores higher than 0% of PyPI servers

Category Developer Tools

Recent critical change

Known CVEs (13 Oct 2026). See the changelog before you install this server.

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security25
Provenance & Transparency45
Schema Quality & AI Usability68
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 35352 tokens (~123/item across 286 items; 286 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management83
  • Stability observed for 25 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 0% of tool parameters carry a description.Fail
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 31 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "execute_python" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 287 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
What we tested

Checks we ran (15)

  • Known CVEs
  • Install scripts
  • Dependency health
  • Source repository
  • Provenance
  • License
  • Maintenance
  • Security disclosure
  • Schema quality
  • Stability
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol

Checks we could not complete (1)

These are gaps on our side, not findings about this package. We only credit what we can confirm, so a category made up entirely of them scores 0.

  • Malware scan in Supply Chain SecurityMalware scan not yet available for this package.

Does not apply to this package (2)

  • Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
  • Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.

The score does not measure everything. What the score does not measure →

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 0
    • Malware scan: pass → unverified ▼ security
    • Stability: pass → 0.80 functional
  • 2 Nov 26 0
    • Provenance: unverified → fail ▼ security
  • 31 Oct 26 0
    • Provenance: fail → unverified ▼ security
  • 30 Oct 26 0
    • Malware scan: unverified → pass ▲ security
    • Stability: 0.97 → pass security
  • 29 Oct 26 0
    • Stability: pass → 0.97 functional
  • 26 Oct 26 0
    • Malware scan: pass → unverified ▼ security
  • 23 Oct 26 0
    • Stability: 0.97 → pass security
  • 22 Oct 26 0
    • Stability: pass → 0.97 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 6 Nov 2026 · Analysed pypi/unrealmcp@1.3.1

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi
Reason No attestation published

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend Known build tool setuptools.build_meta

Background: Why install scripts are a supply-chain risk →

Vulnerabilities 6 findings
ID CVE Severity Vector Fix available
GHSA-m8x7-r2rg-vh5g CVE-2025-64340 medium CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H yes
GHSA-rww4-4w9c-7733 CVE-2026-27124 high yes
GHSA-vv7q-7jx5-f767 CVE-2026-32871 critical CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H yes
PYSEC-2026-2475 CVE-2025-64340 medium CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:H yes
PYSEC-2026-2476 CVE-2026-27124 none yes
PYSEC-2026-338 CVE-2026-32871 critical CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 75 packages
Packages resolved 75
Stale 5
No linked repository 3
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 286 exposed · ~35,325 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
compile_niagara_system ~63

Compile a Niagara System and report any errors. Args: system_path: Path to the Niagara System asset wait_for_completion: If true, block until compilation finishes

NameTypeReqDescription
system_pathstringyes–
wait_for_completionboolean––
NameTypeReqDescription
resultstringyes–

No examples provided.

compile_statetree ~42

Compile a StateTree and return errors/warnings. Args: asset_path: Content path to the StateTree asset

NameTypeReqDescription
asset_pathstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

connect_blueprint_nodes ~128

Connect two nodes in a Blueprint graph. Args: source_node_id: GUID of the source node source_pin_name: Output pin name on source target_node_id: GUID of the target node target_pin_name: Input pin name on target function_name: Function graph (empty = EventGraph)

NameTypeReqDescription
blueprint_namestringyes–
function_namestring––
source_node_idstringyes–
source_pin_namestringyes–
target_node_idstringyes–
target_pin_namestringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

connect_material_expressions ~197

Connect two expression nodes using their indices. Args: from_node: Source node index to_node: Target node index (e.g. "5") or "material" for material output to_pin: Input pin name, or material property when to_node="material": BaseColor, Metallic, Specular, Roughness, Anisotropy, EmissiveColor, Opacity, OpacityMask, Normal, Tangent, WorldPositionOffset, Displacement, SubsurfaceColor, CustomData0, CustomData1, AmbientOcclusion, Refraction, PixelDepthOffset, ShadingModel, SurfaceThickness, FrontMaterial from_pin: Output pin name ("" = primary output)

NameTypeReqDescription
from_nodeintegeryes–
from_pinstring––
material_pathstringyes–
to_nodestringyes–
to_pinstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

connect_niagara_pins ~144

Wire one node's output pin to another node's input pin inside a scratch pad graph. Connection is validated via UEdGraphSchema_Niagara::TryCreateConnection so type mismatches are rejected cleanly. Identify each side via the (class | index | id) trio.

NameTypeReqDescription
from_node_class–––
from_node_id–––
from_node_index–––
from_pinstringyes–
module_namestringyes–
system_pathstringyes–
to_node_class–––
to_node_id–––
to_node_index–––
to_pinstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

control_niagara_effect ~68

Control a Niagara effect actor in the level. Args: actor_name: Name/label of the Niagara actor action: Control action — "activate", "deactivate", "reset", "destroy"

NameTypeReqDescription
actionstringyes–
actor_namestringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

create_blueprint ~112

Create a new Blueprint asset from any C++ or Blueprint parent class. Supports parent classes from ANY module (Engine, Game, plugins, etc.). Use search_parent_classes first to find the correct name. parent_class accepts short names ("MinerActor"), prefixed ("AMinerActor"), full paths ("/Script/Jiggify.AMinerActor"), or BP paths ("/Game/Blueprints/BP_Base").

NameTypeReqDescription
namestringyes–
parent_classstring––
pathstring––
NameTypeReqDescription
resultstringyes–

No examples provided.

create_blueprint_function ~42

Create a new function in a Blueprint.

NameTypeReqDescription
blueprint_namestringyes–
function_namestringyes–
return_typestring––
NameTypeReqDescription
resultstringyes–

No examples provided.

create_blueprint_variable ~87

Create a variable in a Blueprint. variable_type: bool, int, float, string, vector, rotator

NameTypeReqDescription
blueprint_namestringyes–
categorystring––
default_valuestring––
is_publicboolean––
tooltipstring––
variable_namestringyes–
variable_typestringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

create_data_asset ~122

Create a new data asset of any UDataAsset subclass. Args: class_name: Short name ("ItemData") or full path ("/Script/Jiggify.UItemData") asset_path: Full content path including name (e.g. "/Game/Data/Items/DA_IronOre") initial_properties: Optional dict of property values to set after creation. Supports primitives, structs, arrays, object paths, gameplay tags, etc.

NameTypeReqDescription
asset_pathstringyes–
class_namestringyes–
initial_properties–––
NameTypeReqDescription
resultstringyes–

No examples provided.

create_input_action ~92

Create a new UInputAction asset. Args: asset_path: Full content path including name (e.g. "/Game/Input/IA_Jump") value_type: Boolean | Axis1D | Axis2D | Axis3D properties: Optional dict of additional properties to set after creation

NameTypeReqDescription
asset_pathstringyes–
properties–––
value_typestring––
NameTypeReqDescription
resultstringyes–

No examples provided.

create_input_mapping_context ~64

Create a new UInputMappingContext asset. Args: asset_path: Full content path including name (e.g. "/Game/Input/IMC_Default") description: Optional localized description

NameTypeReqDescription
asset_pathstringyes–
descriptionstring––
NameTypeReqDescription
resultstringyes–

No examples provided.

create_material ~222

Create a new Material asset. Returns error if the asset already exists (avoids editor overwrite popup). Pass force=true to delete and recreate. Args: name: Material name (e.g. "M_MyMaterial") path: Content Browser path blend_mode: opaque | masked | translucent | additive | modulate | alpha_composite | alpha_holdout shading_model: default_lit | unlit | subsurface | clear_coat | subsurface_profile | two_sided_foliage | cloth | eye | thin_translucent two_sided: Render on both sides opacity_mask_clip_value: Clip value for masked blend mode (0.0-1.0) force: If true, delete existing asset and recreate (default false)

NameTypeReqDescription
blend_modestring––
forceboolean––
namestringyes–
opacity_mask_clip_value–––
pathstring––
shading_modelstring––
two_sidedboolean––
NameTypeReqDescription
resultstringyes–

No examples provided.

create_material_function ~133

Create a new Material Function asset. Returns error if asset already exists. Pass force=true to delete and recreate. Args: name: Function name (e.g. "MF_CustomBlend") path: Content Browser path description: Function description shown in tooltips expose_to_library: Whether the function appears in the material editor's function library force: If true, delete existing asset and recreate (default false)

NameTypeReqDescription
descriptionstring––
expose_to_libraryboolean––
forceboolean––
namestringyes–
pathstring––
NameTypeReqDescription
resultstringyes–

No examples provided.

create_material_instance ~212

Create a Material Instance from a parent material. Returns error if asset already exists. Pass force=true to delete and recreate. Args: parent_path: Full path to parent (e.g. "/Game/Materials/M_Base") name: Instance name (e.g. "MI_Red") scalar_params: JSON dict of scalar overrides — {"Opacity": 0.5, "Metallic": 1.0} vector_params: JSON dict of vector overrides — {"BaseColor": [1.0, 0.0, 0.0, 1.0]} texture_params: JSON dict of texture overrides — {"Texture": "/Game/Textures/T_Wood"} force: If true, delete existing asset and recreate (default false)

NameTypeReqDescription
forceboolean––
namestringyes–
parent_pathstringyes–
pathstring––
scalar_params–––
texture_params–––
vector_params–––
NameTypeReqDescription
resultstringyes–

No examples provided.

create_niagara_module_asset ~120

Create a standalone Niagara script asset (module / dynamic input / function). Duplicates the editor's default template when available so the produced asset has the same initial graph as one created via the Niagara asset wizard. Args: asset_path: Full content path including name (e.g. "/Game/FX/Modules/MyModule") module_type: "module", "dynamic_input", or "function" description: Optional description text

NameTypeReqDescription
asset_pathstringyes–
description–––
module_typestring––
NameTypeReqDescription
resultstringyes–

No examples provided.

create_niagara_scratch_pad_module ~172

Create a new scratch pad script on a Niagara System. Duplicates the editor's default template (DefaultModuleScript / DefaultDynamicInputScript / DefaultFunctionScript from NiagaraEditorSettings) so the resulting graph is pre-wired with Input / MapGet / MapSet / Output just like clicking "Create New Module" in the Scratch Script Manager. Falls back to a manually-built minimal graph if the template asset is unavailable. Args: system_path: Niagara System asset path module_name: Desired scratch script name (unique within the system's ScratchPadScripts) module_type: "module" (default), "dynamic_input", or "function"

NameTypeReqDescription
module_namestring––
module_typestring––
system_pathstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

create_niagara_system ~79

Create a new Niagara System asset. Args: asset_path: Full content path including name (e.g. "/Game/FX/NS_Fire") template: Template to base the system on — "empty" or a path to an existing system/template

NameTypeReqDescription
asset_pathstringyes–
templatestring––
NameTypeReqDescription
resultstringyes–

No examples provided.

create_statetree ~93

Create a new StateTree asset with the specified schema. Args: asset_path: Content path for the new asset (e.g. "/Game/AI/ST_MyTree") schema_class: Schema class name (e.g. "MassStateTreeSchema", "StateTreeComponentSchema", "StateTreeAIComponentSchema")

NameTypeReqDescription
asset_pathstringyes–
schema_classstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

delete_actor ~24

Delete an actor from the level by name.

NameTypeReqDescription
namestringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

delete_asset ~50

Delete an asset or directory from the Content Browser. Checks for references first unless force=True. Paths without a dot are treated as directories.

NameTypeReqDescription
asset_pathstringyes–
forceboolean––
NameTypeReqDescription
resultstringyes–

No examples provided.

delete_blueprint_function ~33

Delete a function from a Blueprint.

NameTypeReqDescription
blueprint_namestringyes–
function_namestringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

delete_blueprint_node ~44

Delete a node from a Blueprint graph by GUID.

NameTypeReqDescription
blueprint_namestringyes–
function_namestring––
node_idstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

delete_data_table_row ~37

Delete a row from a Data Table by name.

NameTypeReqDescription
data_table_pathstringyes–
row_namestringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

delete_material_expression ~55

Delete a single expression node by index. Recompiles and saves automatically. Remaining node indices may shift — re-query with get_material_graph_nodes afterwards.

NameTypeReqDescription
material_pathstringyes–
node_indexintegeryes–
NameTypeReqDescription
resultstringyes–

No examples provided.

delete_niagara_graph_node ~77

Delete a node from a Niagara graph (asset + edit-copy). Provide node_index (ordinal) OR node_id (FGuid string from get_niagara_graph_nodes).

NameTypeReqDescription
module_name–––
node_id–––
node_index–––
script_path–––
system_path–––
NameTypeReqDescription
resultstringyes–

No examples provided.

delete_niagara_scratch_pad_module ~40

Delete a scratch pad module from a Niagara System.

NameTypeReqDescription
module_namestringyes–
system_pathstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

delete_niagara_system ~58

Delete a Niagara System asset. Args: system_path: Path to the Niagara System asset force: If true, skip reference checks and force deletion

NameTypeReqDescription
forceboolean––
system_pathstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

describe_niagara_type ~206

Return the full schema of any Niagara type — primitive, enum, struct, or data interface. Built on a generic FProperty introspector, so the output handles every Unreal property kind recursively (bool / int{8,16,32,64} / uint{16,32,64} / float / double / string / name / text / enum / struct / array / map / set / object / class / soft_object / soft_class / interface / delegate). For enums, returns every entry with name + display_name + value + tooltip. For structs, walks every editable field. For data interfaces, returns the full CDO schema. Args: type: Type identifier — built-in name ("float", "vec3", "Color"), registered Niagara type, UEnum / UScriptStruct path, or UNiagaraDataInterface subclass name (with or without the U prefix).

NameTypeReqDescription
typestringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

disconnect_material_expression ~72

Disconnect a specific input pin on a material expression node. Args: node_index: The target node whose input pin will be disconnected input_pin: Name of the input pin to disconnect

NameTypeReqDescription
input_pinstringyes–
material_pathstringyes–
node_indexintegeryes–
NameTypeReqDescription
resultstringyes–

No examples provided.

disconnect_niagara_pins ~70

Break all connections on a specific pin of a node in a scratch pad graph.

NameTypeReqDescription
module_namestringyes–
node_class–––
node_id–––
node_index–––
pin_namestringyes–
system_pathstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

duplicate_asset ~40

Duplicate an asset to a new location.

NameTypeReqDescription
dest_namestringyes–
dest_pathstringyes–
source_pathstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

duplicate_data_table_row ~46

Copy an existing row under a new name.

NameTypeReqDescription
data_table_pathstringyes–
new_row_namestringyes–
source_row_namestringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

duplicate_material_expression ~65

Duplicate a node (same type and properties, offset from original). Returns the new node_index. Connections are NOT copied.

NameTypeReqDescription
material_pathstringyes–
node_indexintegeryes–
offset_xinteger––
offset_yinteger––
NameTypeReqDescription
resultstringyes–

No examples provided.

duplicate_niagara_emitter ~77

Duplicate an emitter within a Niagara System. Args: system_path: Path to the Niagara System asset emitter_name: Name of the emitter to duplicate new_name: Optional name for the duplicated emitter

NameTypeReqDescription
emitter_namestringyes–
new_name–––
system_pathstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

duplicate_niagara_scratch_pad_module ~83

Duplicate an existing scratch pad module on a system. Args: system_path: Niagara System asset path module_name: Source scratch pad module name new_name: Optional new name (defaults to "<source>_Copy")

NameTypeReqDescription
module_namestringyes–
new_name–––
system_pathstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

duplicate_widget ~56

Deep-copy a widget including children. Auto-renames on conflicts.

NameTypeReqDescription
new_namestring––
parent_widget_namestring––
widget_blueprint_pathstringyes–
widget_namestringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

execute_python ~52

Execute arbitrary Python code inside the running Unreal Editor. The `unreal` module is pre-imported. Set a variable named `result` to return structured data back to Claude Code.

NameTypeReqDescription
codestringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

find_actors ~277

Flexible actor search across the level — combine any number of filters. Use this to answer "is X in the world", "first 5 actors of class Y", "all actors starting with name Z and tagged W". All filters AND together. Returns total count scanned/matched even when results are truncated. Args: name_pattern: Case-insensitive substring on UObject name (e.g. "Light"). label_pattern: Case-insensitive substring on outliner display label. class_filter: Class name (short or full path). When it resolves to a real UClass, uses IsA() (or exact_class for ==). Otherwise falls back to substring match on the actor's class name/path. tag: Match actors with this FName in their Tags. exact_class: When class_filter resolves to a UClass, require exact match instead of subclass. max_results: Cap on returned entries (0 = unlimited; truncated flag set). include_transform: Include location/rotation/scale per entry.

NameTypeReqDescription
class_filterstring––
exact_classboolean––
include_transformboolean––
label_patternstring––
max_resultsinteger––
name_patternstring––
tagstring––
NameTypeReqDescription
resultstringyes–

No examples provided.

find_actors_by_name ~27

Find actors whose name matches the given pattern.

NameTypeReqDescription
patternstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

find_assets ~153

Search the Asset Registry by class, path, and/or name pattern. Args: class_type: Shortcut ("material", "blueprint", "static_mesh", "texture", "data_table", "niagara_system", etc.) or "PackagePath.ClassName" path: Content path filter (e.g. "/Game/Materials") name_pattern: Substring match on asset name (case-insensitive) recursive: Search subdirectories (default True) max_results: Maximum results to return (default 200)

NameTypeReqDescription
class_typestring––
max_resultsinteger––
name_patternstring––
pathstring––
recursiveboolean––
NameTypeReqDescription
resultstringyes–

No examples provided.

find_niagara_scratch_pad_usage ~132

Reverse lookup: find where a scratch pad script is referenced in the stack. Scans every emitter/system script graph (system_spawn, system_update, emitter_spawn, emitter_update, particle_spawn, particle_update) for UNiagaraNodeFunctionCall nodes whose FunctionScript matches the named scratch pad. Returns each site as {emitter, script_usage, function_name, node_id, is_dynamic_input}. Use this to answer "what uses GetDataInterfaceLength?" without walking every emitter manually.

NameTypeReqDescription
module_namestringyes–
system_pathstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

find_references ~59

Find assets that reference or are referenced by the given asset. direction: "dependents" (who uses this), "dependencies" (what this uses), or "both"

NameTypeReqDescription
asset_pathstringyes–
directionstring––
NameTypeReqDescription
resultstringyes–

No examples provided.

get_actor_material_info ~27

Get material slot info for a level actor.

NameTypeReqDescription
actor_namestringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

get_actor_properties ~359

Get property values from a live actor instance placed in the world. Unlike get_blueprint_class_defaults (CDO), this reads the placed instance — per-instance overrides are returned correctly. Two output modes: - Nested (default, flat=False): top-level FProperty names, structs as nested JSON. Filter only matches top-level names — best for quickly inspecting one actor. - Flat (flat=True): every leaf returned as "Settings.BloomIntensity": value with a path-aware filter. Best for AI search ("find me everything containing 'bloom'"). Args: actor_label: Outliner label or UObject name. filter: Case-insensitive substring. Nested mode = top-level only; flat mode = matches full dotted path. include_components: Also return components' properties. flat: Return flat dotted-path dict instead of nested structure. max_depth: (flat mode) Max struct nesting depth. Default 3. include_metadata: (flat mode) Replace each value with full metadata object (type info, clamps, enum values, etc.). expand_arrays: (flat mode) Emit array elements as Field[N] entries. array_element_limit: (flat mode) Max elements emitted per array. Default 16.

NameTypeReqDescription
actor_labelstringyes–
array_element_limitinteger––
categorystring––
cursorinteger––
expand_arraysboolean––
filterstring––
flatboolean––
include_componentsboolean––
include_inheritedboolean––
include_metadataboolean––
max_depthinteger––
max_entriesinteger––
NameTypeReqDescription
resultstringyes–

No examples provided.

get_actor_property_metadata ~571

Inspect type/clamp/enum metadata for properties on a placed actor. Returns a flat dict keyed by dotted path with per-property metadata (cpp_type, ue_type, category, display_name, tooltip, current_value, clamp_min/max, ui_min/max, valid_values for enums, inner/element/key/value types for containers, object_class / meta_class for refs, plus is_struct/is_array/is_enum/is_object /is_bool / editable / transient / readonly flags). ALSO returns a "_summary" header containing total_available, total_returned, truncated, next_cursor, own_count, inherited_count, class_chain, and a "categories" map (UPROPERTY Category -> count) — use this to navigate without flooding context. max_entries=0 returns ONLY the summary so you can plan first. Args: actor_label: Outliner label or UObject name. property_path: Optional dotted path. Empty = enumerate top-level properties. If the path is a struct, enumerates that struct's fields. If a leaf scalar/enum, returns metadata for just that property. If an OBJECT REFERENCE, returns single-property metadata for the ref + a hint (use component_name to inspect the target's properties), unless descend_into_objects=True is passed. filter: Case-insensitive substring on full dotted path. category: Case-insensitive exact match against UPROPERTY(Category="X"). Sub-categories use "|" — e.g. "Lens|Bloom". depth: How many struct levels to expand below the start point. 0 = flat. expand_enums: Include valid_values list for enum-typed fields. include_inherited: Include properties from super classes. False = only those declared on the most-derived class (use to scope down components). descend_into_objects: When property_path lands on an FObjectProperty, enumerate the target object's class instead of returning a single metadata blob. Disabled by default — prefer component_name. max_entries: Hard cap on emitted entries. Default 50. 0 = summary only.…

NameTypeReqDescription
actor_labelstringyes–
categorystring––
component_namestring––
cursorinteger––
depthinteger––
descend_into_objectsboolean––
expand_enumsboolean––
filterstring––
include_inheritedboolean––
max_entriesinteger––
property_pathstring––
NameTypeReqDescription
resultstringyes–

No examples provided.

get_actors_in_level ~19

List all actors in the current level.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes–

No examples provided.

get_asset_info ~29

Get asset metadata: class, package, and key properties.

NameTypeReqDescription
asset_pathstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

get_asset_properties ~25

Get all editable properties of an asset.

NameTypeReqDescription
asset_pathstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

get_available_material_pins ~109

Query all available material output pins for a specific material. Returns every pin that is currently visible (based on material settings), whether it's connected, what type it expects, and which node feeds it. Use this to discover valid to_pin values for connect_material_expressions with to_node="material". The available pins change based on blend mode, shading model, and whether Substrate is enabled. Also reports substrate_enabled and has_front_material_connected status.

NameTypeReqDescription
material_pathstringyes–
NameTypeReqDescription
resultstringyes–

No examples provided.

Install

How do I install the UnrealMCP — AI Bridge for Unreal Engine 5 MCP server?

UnrealMCP — AI Bridge for Unreal Engine 5 runs locally as a PyPI package, launched with uvx unrealmcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · unrealmcp

# add to Claude Code
claude mcp add aadeshrao123-unreal-mcp -- uvx unrealmcp
Common questions

What is the UnrealMCP — AI Bridge for Unreal Engine 5 MCP server?

UnrealMCP — AI Bridge for Unreal Engine 5 is an MCP server listed in the public MCP registry as io.github.aadeshrao123/unreal-mcp. Control the Unreal Engine 5 editor from any MCP client: Blueprints, materials, Niagara. This page covers its PyPI package (unrealmcp).

What tools does the UnrealMCP — AI Bridge for Unreal Engine 5 MCP server expose?

UnrealMCP — AI Bridge for Unreal Engine 5 exposes 286 tools: execute_python, health_check, find_assets, list_assets, open_asset, and 281 more. Their descriptions and schemas cost roughly 35,325 tokens of context every time the server is loaded.

Is the UnrealMCP — AI Bridge for Unreal Engine 5 MCP server still maintained?

UnrealMCP — AI Bridge for Unreal Engine 5 is still listed as active in the MCP registry. We last reached this channel on 6 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the UnrealMCP — AI Bridge for Unreal Engine 5 MCP server under?

UnrealMCP — AI Bridge for Unreal Engine 5 declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.