Unreal-MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| UNREAL_MCP_PORT | No | Force a specific TCP port for communication with the Unreal Engine plugin. Overrides automatic port detection from port file. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tasks | {
"list": {},
"cancel": {},
"requests": {
"tools": {
"call": {}
},
"prompts": {
"get": {}
},
"resources": {
"read": {}
}
}
} |
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| execute_pythonA | Execute arbitrary Python code inside the running Unreal Editor. The |
| health_checkA | Check if the UE5 editor bridge is running and responsive. |
| find_assetsA | 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) |
| list_assetsC | List assets in a Content Browser directory. Args: path: Content path (e.g. "/Game", "/Game/Materials") class_filter: Optional class shortcut (e.g. "material", "blueprint") |
| open_assetB | Open an asset in the UE5 editor (blueprint, material, data table, widget, etc.). |
| get_asset_infoC | Get asset metadata: class, package, and key properties. |
| get_asset_propertiesC | Get all editable properties of an asset. |
| set_asset_propertyC | Set a property on an asset. Args: property_name: Property name (e.g. "two_sided", "blend_mode") property_value: JSON-encoded value (e.g. "true", "0.5", '"translucent"') |
| find_referencesA | Find assets that reference or are referenced by the given asset. direction: "dependents" (who uses this), "dependencies" (what this uses), or "both" |
| duplicate_assetC | Duplicate an asset to a new location. |
| rename_assetA | Rename or move an asset. UE5 automatically fixes all references. |
| delete_assetA | Delete an asset or directory from the Content Browser. Checks for references first unless force=True. Paths without a dot are treated as directories. |
| save_assetC | Save a specific asset to disk. |
| save_allA | Save all unsaved (dirty) assets. |
| import_assetA | Import an external file (texture, mesh, FBX, etc.) into the Content Browser. Args: source_file: Absolute path to file on disk (e.g. "C:/textures/wood.png") destination_path: Content Browser path (e.g. "/Game/Textures") destination_name: Custom asset name (default: source filename without extension) replace_existing: Overwrite if asset already exists (default True) |
| import_assets_batchA | Import multiple files into the Content Browser in one batch. Provide EITHER 'files' (explicit list) OR 'source_directory' (scan a folder). Args: destination_path: Content Browser destination (e.g. "/Game/Textures") files: List of absolute file paths to import source_directory: Absolute path to a folder — all matching files will be imported extensions: File extensions to include when scanning a directory (e.g. ["png", "jpg", "fbx"]). If omitted with source_directory, all files are imported. replace_existing: Overwrite existing assets (default True) |
| get_selected_assetsA | Get currently selected assets in the Content Browser. |
| sync_browserB | Navigate the Content Browser to show a specific asset. |
| create_materialA | 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) |
| create_material_instanceA | 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) |
| build_material_graphA | Build a complete material node graph in one atomic operation. Creates expression nodes and wires them together in a single call. By default clears existing expressions first (safe rebuild — all external references stay intact). Args: material_path: Full path to existing material (e.g. "/Game/Materials/M_Portal") nodes: JSON array of node definitions. Each node has: - type: Short class name (e.g. "TextureCoordinate", "Custom", "ScalarParameter", "Constant3Vector", "TextureSample", "Multiply", "Add", "Panner", "Time", "VectorParameter", "LinearInterpolate", "ComponentMask") Auto-prefixed with "MaterialExpression" if needed. - pos_x, pos_y: Graph position (default -300, 0) - properties: Dict of editor properties to set. Common ones: - parameter_name: str — name shown in material instances - default_value: number or [r,g,b,a] - slider_min, slider_max: float — slider range - group: str — parameter group name - Values starting with "/" are loaded as assets - Lists of 3-4 become LinearColor, lists of 2 become Vector2D For Custom HLSL nodes (type="Custom"), also supports: - code: HLSL source code string - description: Node title in the graph - output_type: "float" | "float2" | "float3" | "float4" - inputs: List of input pin names (e.g. ["UV", "Speed"]) - outputs: List of {"name": str, "type": str} for additional outputs connections: JSON array of connections. Each connection has: - from_node: Source node index (int, 0-based into nodes array) - from_pin: Output pin name ("" for default output) - to_node: Target node index (int) 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 (FrontMaterial is for Substrate BSDF nodes — use get_available_material_pins to see which pins are active for a specific material) clear_existing: Remove existing expressions before building (default True) |
| get_material_infoA | Inspect a material's properties. Always returns: blend mode, shading model, two-sided, expression count. Use include (comma-separated) to request additional sections:
Omit include to get only basic properties (minimal tokens). Pass include="parameters,textures,statistics" for everything. |
| recompile_materialC | Force recompile and save a material. Reports success/failure. |
| get_material_errorsA | Get shader compilation errors for a material. Returns error messages and the node indices that caused them. Recompiles first by default to get fresh errors. |
| set_material_propertiesB | Bulk-set material-level properties in one call. Args: blend_mode: opaque | masked | translucent | additive | modulate | alpha_composite | alpha_holdout shading_model: default_lit | unlit | subsurface | clear_coat | etc. recompile: Recompile after setting properties (default True) |
| get_material_graph_nodesA | Read expression nodes in a material graph. Use verbosity to control response size:
Use type_filter to only return nodes matching a type substring (e.g. "Parameter" returns only parameter nodes). |
| add_material_expressionA | Add a single expression node without clearing other nodes. Returns the new node_index. Wire it up with connect_material_expressions. node is a JSON object: {"type": "ScalarParameter", "pos_x": -1200, "pos_y": -400, "properties": {"parameter_name": "Speed", "default_value": 0.5}} For Custom HLSL nodes, include top-level "code", "description", "output_type", "inputs", and "outputs" fields. |
| connect_material_expressionsA | 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) |
| delete_material_expressionA | Delete a single expression node by index. Recompiles and saves automatically. Remaining node indices may shift — re-query with get_material_graph_nodes afterwards. |
| add_material_commentsB | Add comment boxes to a material graph for organization. comments is a JSON array. Each entry: {text, pos_x, pos_y, size_x, size_y, font_size, color: [r,g,b], show_bubble, color_bubble, group_mode}. |
| get_material_expression_infoA | Get detailed info for a single node, including all available input/output pins. Use this before connecting nodes to discover exact pin names. |
| get_material_property_connectionsB | Query which expression node feeds each material output slot. Only lists slots that have something connected. |
| set_material_expression_propertyC | Set a property on an existing material expression node. Accepts snake_case ("parameter_name") or PascalCase ("ParameterName"). Common properties: parameter_name, default_value, slider_min, slider_max, group, texture, code, description, output_type, inputs, add_inputs, outputs, SpeedX, SpeedY, CoordinateIndex, R, Constant. |
| move_material_expressionB | Move a material expression node to a new graph position. |
| duplicate_material_expressionB | Duplicate a node (same type and properties, offset from original). Returns the new node_index. Connections are NOT copied. |
| layout_material_expressionsC | Auto-layout all nodes using Unreal's built-in arrangement algorithm. |
| get_material_instance_parametersC | Get all overridable parameters from a Material Instance (scalar, vector, texture, switch). |
| set_material_instance_parameterB | Set a parameter override on a Material Instance. Args: param_type: scalar | vector | texture | static_switch value: JSON-encoded — float, [r,g,b,a], "/Game/path", or true/false |
| list_material_expression_typesA | List available material expression node types. Use filter to narrow results (e.g. "texture", "parameter", "math", "noise"). Set max_results to limit output (0 = unlimited). Set include_details=false for compact output (type names only). |
| get_expression_type_infoA | Look up pin names and editable properties for a node type WITHOUT creating one. Returns input pins, output pins, and all editable properties with types and defaults. Use this BEFORE creating nodes to know exact pin names and avoid connection errors. Special node types:
Args: type_name: Short type name (e.g. "Multiply", "TextureSample", "Custom", "MaterialFunctionCall", "SubstrateSlabBSDF", "SubstrateShadingModels") function_path: For MaterialFunctionCall only — path to the material function to load (e.g. "/Engine/Functions/Engine_MaterialFunctions03/Blends/Blend_Overlay"). Populates the node with the function's actual input/output pins. |
| get_available_material_pinsA | 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. |
| disconnect_material_expressionB | 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 |
| search_material_functionsA | Search for Material Functions by name. Args: filter: Name substring to match (e.g. "Blend", "Normal", "Fresnel") path: Content Browser path to search in (default "/Game") max_results: Maximum results to return (default 50) include_engine: Include engine built-in material functions |
| validate_material_graphA | Diagnose connection issues in a material graph. Categorises every node into:
Returns healthy=true when no orphaned or dead-end nodes exist. |
| trace_material_connectionA | Trace connections upstream and/or downstream from a specific node. Shows exactly what feeds into each input pin and what consumes each output pin, including connections to material outputs (BaseColor, Normal, etc.). Args: node_index: The node to trace from direction: "upstream" (what feeds in), "downstream" (what consumes output), or "both" (default) max_depth: How many hops to trace recursively (1 = immediate neighbors, 2+ = follow the chain). Max 50. Default 1. |
| cleanup_material_graphA | Delete orphaned and/or dead-end nodes from a material graph. WARNING: NEVER call this tool unless the user explicitly asks to clean up or delete unconnected nodes. Users may intentionally keep disconnected nodes as references, scratchpads, or work-in-progress. Deleting them without permission will cause data loss and frustration. Args: mode: What to delete: "orphaned" — only nodes with NO connections at all (safest) "dead_ends" — nodes whose output goes nowhere (has inputs but no consumers) "all" — both orphaned and dead-ends dry_run: If true, reports what WOULD be deleted without actually deleting. Always use dry_run=true first to preview before deleting. |
| create_material_functionA | 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) |
| get_material_function_infoB | Inspect a Material Function: inputs, outputs, internal nodes. Returns all FunctionInput pins (name, type, default value, sort priority), all FunctionOutput pins (name, connections), and a summary of internal nodes. |
| build_material_function_graphA | Build the internal node graph of a Material Function in one atomic call. Same interface as build_material_graph but for Material Functions. FunctionInput nodes use type="FunctionInput" with extra fields: input_name, input_type (Scalar/Vector2/Vector3/Vector4/Texture2D/TextureCube/ Texture2DArray/VolumeTexture/StaticBool/MaterialAttributes/TextureExternal/Bool/Substrate), description, sort_priority, use_preview_as_default, preview_value ([x,y,z,w]) FunctionOutput nodes use type="FunctionOutput" with extra fields: output_name, description, sort_priority Connections between nodes use the same format as build_material_graph: from_node (int), from_pin (str), to_node (int), to_pin (str) To connect a node to a FunctionOutput's input, use to_pin="" (the output has a single unnamed input pin labeled "A" internally). Args: function_path: Full path to existing material function nodes: JSON array of node definitions connections: JSON array of connections clear_existing: Remove existing expressions before building (default True) |
| add_material_function_inputB | Add an input pin to a Material Function. Args: function_path: Full path to existing material function input_name: Pin name (e.g. "BaseColor", "Strength", "UV") input_type: Scalar | Vector2 | Vector3 | Vector4 | Texture2D | TextureCube | Texture2DArray | VolumeTexture | StaticBool | MaterialAttributes | TextureExternal | Bool | Substrate description: Tooltip text sort_priority: Controls display order (lower = higher) use_preview_as_default: Use preview_value as the default when input is unconnected preview_value: JSON array for default value (e.g. "[0.5]", "[1.0, 0.0, 0.0, 1.0]") pos_x: Graph X position (default -600) pos_y: Graph Y position (default 0) |
| add_material_function_outputB | Add an output pin to a Material Function. Args: function_path: Full path to existing material function output_name: Pin name (e.g. "Result", "Normal", "Mask") description: Tooltip text sort_priority: Controls display order (lower = higher) pos_x: Graph X position (default 200) pos_y: Graph Y position (default 0) |
| set_material_function_inputA | Modify an existing FunctionInput node's properties. Args: function_path: Full path to existing material function node_index: Index of the FunctionInput node (from get_material_function_info) input_name: New pin name input_type: New type (Scalar/Vector2/Vector3/Vector4/Texture2D/TextureCube/ Texture2DArray/VolumeTexture/StaticBool/MaterialAttributes/ TextureExternal/Bool/Substrate) description: New tooltip sort_priority: New display order use_preview_as_default: Use preview value as default preview_value: JSON array for default value (e.g. "[0.5]", "[1.0, 0.0, 0.0, 1.0]") |
| set_material_function_outputA | Modify an existing FunctionOutput node's properties. Args: function_path: Full path to existing material function node_index: Index of the FunctionOutput node (from get_material_function_info) output_name: New pin name description: New tooltip sort_priority: New display order |
| validate_material_functionA | Diagnose issues in a Material Function's internal graph. Reports:
Returns healthy=true when no issues found. |
| cleanup_material_functionA | Remove unconnected/orphaned nodes from a Material Function. Deletes:
WARNING: Only call when the user explicitly asks to clean up. Args: dry_run: If true, reports what would be deleted without deleting. |
| search_parent_classesA | Search for classes that can be used as Blueprint parents. Use this BEFORE create_blueprint to find the correct parent class name. Returns a filtered list of matching classes — never dumps all classes. Args: filter: Keyword to search for (e.g. "Miner", "Actor", "Pawn", "Widget") max_results: Maximum results (default 20, max 100) include_blueprint_classes: Also include Blueprint-generated classes (default True) |
| create_blueprintA | 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"). |
| add_component_to_blueprintA | Add a component to a Blueprint's default components. Args: blueprint_path: Full path to blueprint (e.g. "/Game/Blueprints/BP_MyActor") component_class: e.g. "StaticMeshComponent", "PointLightComponent" component_name: Optional custom name for the component |
| get_blueprint_class_defaultsA | Get all default property values from a Blueprint's generated class CDO. Unlike get_blueprint_variable_details (which only shows BP-defined variables), this reads the CDO and returns ALL editable properties — including C++ parent ones. Args: filter: Substring to filter property names (case-insensitive) include_inherited: Include properties from C++ parent (default True) |
| set_blueprint_class_defaultsA | Set default property values on a Blueprint's generated class CDO. Works on ALL editable properties — C++ parent properties and BP-defined variables alike (e.g. SlotWidgetClass, MaxHealth, bCanFly). Set a single property with property_name + property_value, or set multiple at once with a properties dict. Both can be used in the same call. Args: blueprint_path: Full path to blueprint (e.g. "/Game/Blueprints/BP_MyActor") property_name: Name of a single property to set property_value: Value for the single property (JSON-compatible) properties: Dict of property names to values for batch setting |
| spawn_actorB | Spawn an actor in the level. Args: name: Actor name actor_type: StaticMeshActor, PointLight, etc. location/rotation/scale: [x,y,z] arrays static_mesh: Path to static mesh asset (for mesh actors) |
| get_selected_actorsA | Get all currently selected actors in the editor viewport. |
| get_world_infoB | Get current editor level info (world name, actor count, actor list). |
| get_actor_propertiesA | 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:
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. |
| set_actor_propertyA | Set a property at any nested path on a placed level actor instance. Writes to the actual placed actor (not its CDO/Blueprint defaults), so editor overrides are preserved. Walks struct fields and array indices, fires PostEditChangeProperty on the top-level property, and marks the level dirty. Args: actor_label: Actor's display label in the Outliner (or its UObject name). property_path: Dot-separated property path. Examples: "Settings.BloomIntensity" "Settings.ColorGradingHighlights.Gain" "Tags[0]" "Settings.bOverride_BloomIntensity" property_value: The value to write. Accepts: - Numbers, bools, strings for primitives and enums - JSON object for structs ({"R":1.0,"G":0.5,"B":0.0,"A":1.0} for FLinearColor) - UE text format string for structs ("(R=1.0,G=0.5,B=0.0,A=1.0)") - Asset path string for object/class references component_name: Optional. If set, the path is resolved starting from a component on the actor instead of the actor itself. Returns: actor identification + the resolved top-level FProperty name. |
| get_actor_property_metadataA | 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. Pair with cursor for pagination. cursor: Pagination offset. Use _summary.next_cursor from the previous response to fetch the next page. component_name: Optional. Anchor target object to a named component. |
| spawn_actor_by_classA | Spawn ANY AActor subclass by full path, short name, or Blueprint asset path. Replaces the hardcoded whitelist of spawn_actor. Resolves class_path in this order:
Validates: must be AActor subclass, not abstract, not deprecated. Uses UEditorActorSubsystem::SpawnActorFromClass when available so Ctrl+Z restores. Args: class_path: Full path, BP asset path, or short class name. name: Optional outliner label + UObject name. location: [x, y, z] world location. rotation: [pitch, yaw, roll] degrees. scale: [x, y, z] scale. |
| find_actorsA | 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. |
| get_data_table_rowsC | Get all rows and their field data from a Data Table asset. |
| get_data_table_rowC | Get a single row from a Data Table by its row name. |
| get_data_table_schemaC | Get column names and types defined by the Data Table's row struct. |
| add_data_table_rowB | Add a new row, optionally setting initial field values. data is a JSON string mapping field names to values, e.g. '{"FieldA": 1}'. |
| update_data_table_rowA | Update specific fields on an existing row (partial update). Only fields present in data are modified; everything else keeps its value. data is a JSON string, e.g. '{"DisplayName": "Miner"}'. |
| delete_data_table_rowC | Delete a row from a Data Table by name. |
| rename_data_table_rowB | Rename a row in-place (preserves row order). |
| duplicate_data_table_rowB | Copy an existing row under a new name. |
| add_blueprint_nodeC | Add a node to a Blueprint graph. Node types by category: FLOW: Branch, Comparison, Switch, SwitchEnum, SwitchInteger, ExecutionSequence DATA: VariableGet, VariableSet, MakeArray CASTING: DynamicCast, ClassDynamicCast, CastByteToEnum UTILITY: Print, CallFunction, Select, SpawnActor SPECIAL: Timeline, GetDataTableRow, AddComponentByClass, Self, Knot EVENT: Event (specify event_type: BeginPlay, Tick, Destroyed, etc.) Extra args are only needed for specific node types (message for Print, variable_name for Variable nodes, target_function for CallFunction, etc.). |
| connect_blueprint_nodesB | 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) |
| create_blueprint_variableC | Create a variable in a Blueprint. variable_type: bool, int, float, string, vector, rotator |
| set_blueprint_variable_propertiesA | Modify properties of an existing Blueprint variable. All parameters besides blueprint_name and variable_name are optional — only provided values are changed. |
| add_event_nodeC | Add an event node (ReceiveBeginPlay, ReceiveTick, ReceiveDestroyed, etc.). |
| delete_blueprint_nodeC | Delete a node from a Blueprint graph by GUID. |
| set_blueprint_node_propertyC | Set a node property or perform semantic editing. Semantic actions (pass via 'action'): add_pin, remove_pin, set_enum_type, set_pin_type, set_value_type, set_cast_target, set_function_call, set_event_type Each action has associated params (pin_type, pin_name, enum_type, new_type, target_type, target_function, target_class, event_type). |
| create_blueprint_functionC | Create a new function in a Blueprint. |
| add_function_inputB | Add an input parameter to a Blueprint function. |
| add_function_outputC | Add an output parameter to a Blueprint function. |
| delete_blueprint_functionB | Delete a function from a Blueprint. |
| rename_blueprint_functionC | Rename a function in a Blueprint. |
| read_blueprint_contentB | Read complete Blueprint content: event graph, functions, variables, components. |
| analyze_blueprint_graphC | Analyze a specific graph — nodes, connections, and execution flow. |
| get_blueprint_variable_detailsB | Get detailed info about Blueprint variables (empty name = all variables). |
| get_blueprint_function_detailsB | Get detailed info about Blueprint functions (empty name = all functions). |
| compile_blueprintC | Compile a Blueprint. |
| get_actors_in_levelA | List all actors in the current level. |
| find_actors_by_nameC | Find actors whose name matches the given pattern. |
| delete_actorB | Delete an actor from the level by name. |
| set_actor_transformC | Set an actor's location, rotation, and/or scale. |
| spawn_blueprint_actorC | Spawn a Blueprint actor instance in the level. |
| set_static_mesh_propertiesC | Set the static mesh on a StaticMeshComponent in a Blueprint. |
| set_physics_propertiesC | Set physics properties on a Blueprint component. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/aadeshrao123/Unreal-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server