Skip to main content
Glama
aadeshrao123

Unreal-MCP

by aadeshrao123

build_material_graph

Construct a material node graph by defining nodes and connections in a single call, safely replacing the existing expressions.

Instructions

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)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nodesYes
connectionsYes
material_pathYes
clear_existingNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavior: atomic operation, clears existing by default but external references stay intact, auto-prefixes expression types, and details special cases like values starting with '/' becoming assets. It covers all behavioral traits needed for safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-organized with sections (Args for each parameter) and embedded examples. It is front-loaded with the core purpose. Slight redundancy could be trimmed, but overall it is efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (4 parameters, 3 required, one boolean with default) and no nested objects in schema, the description covers all necessary details: JSON formats, special property behaviors, and material output pin names. An output schema exists for return values, so completeness for invocation is high.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must fully explain parameters. It does so extensively, detailing the structure of nodes (type, pos_x/y, properties with examples) and connections (from_node, from_pin, to_node, to_pin, material pins). This adds immense meaning beyond the raw schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Build a complete material node graph in one atomic operation' with specific verb and resource. It distinguishes from sibling tools like add_material_expression and connect_material_expressions by emphasizing that it handles multiple nodes and connections in a single call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the parameter clear_existing and notes the atomic nature, but does not explicitly state when to use this tool vs alternatives for individual node operations. It implies bulk rebuilding but lacks explicit when-not or prerequisite guidance (e.g., material must exist).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

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/aadeshrao123/Unreal-MCP'

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