You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
README: bump Niagara section to 96 commands + full 280 total
Niagara category grew from 54 to 96 commands. Regrouped the section so
the new authoring surface is easy to find:
- Added "Stack Input Binding Loop" subsection —
get_niagara_module_input_binding / clear_niagara_module_input /
list_niagara_input_source_menu, the read/clear/discover trio that
answers "what is this input actually bound to?" with nested-child
recursion.
- Added "Script Properties (Details Panel)" subsection covering the
full FVersionedNiagaraScriptData surface including TArray<FName>
dependencies.
- Added "Script Parameters (Input / Output)" subsection with the
CRUD set that now cascades to Map Get / Map Set pins on remove.
- Added "Graph Introspection" subsection —
get_niagara_graph_nodes (3 resolver modes: scratch pad, emitter
stack graph, standalone script), get_niagara_node_info,
trace_niagara_connection, validate_niagara_graph.
- Added "Graph Node CRUD" subsection covering
add_niagara_graph_node (Op / FunctionCall / DataInterfaceFunction
/ ParameterMapGet / ParameterMapSet / Reroute / Input) and
delete_niagara_graph_node. Highlighted the DataInterfaceFunction
path — it's what lets you spawn real array.Length / array.Get
nodes instead of HLSL workarounds.
- Added "Pin Management" subsection —
add_niagara_map_get_pin / add_niagara_map_set_pin /
add_niagara_node_pin / rename_niagara_node_pin /
remove_niagara_node_pin + connect/disconnect.
- Added "Custom HLSL" subsection with pin-level CRUD.
- Reorganized "Scratch Pad" into a proper CRUD block including
apply_niagara_scratch_pad and apply_and_save_niagara_scratch_pad
so the Apply / Apply & Save buttons show up clearly.
- Expanded "Discovery" — list_niagara_data_interface_functions,
find_niagara_scratch_pad_usage, resolve_niagara_built_in_dynamic_input,
get_niagara_schema_actions, describe_niagara_type with the
UEnum/UScriptStruct reflection fallback noted.
- Called out the renderer binding reader's new fields
(binding_name / bound_variable_type / dataset_variable) inline.
- Noted nested-path support on set_niagara_module_input,
set_niagara_dynamic_input, link_niagara_parameter, and
clear_niagara_module_input.
Also bumped the header count (238 → 280) and the category table
entry.
Copy file name to clipboardExpand all lines: README.md
+89-19Lines changed: 89 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# UnrealMCP — AI Bridge for Unreal Engine 5
2
2
3
-
Control Unreal Engine 5 editor from AI coding assistants (Claude Code, Cursor, Windsurf, etc.). Create materials, blueprints, Niagara VFX, StateTrees, spawn actors, manage data tables, profile performance, and more — **238 commands** across 13 categories, all without leaving your terminal.
3
+
Control Unreal Engine 5 editor from AI coding assistants (Claude Code, Cursor, Windsurf, etc.). Create materials, blueprints, Niagara VFX, StateTrees, spawn actors, manage data tables, profile performance, and more — **280 commands** across 13 categories, all without leaving your terminal.
4
4
5
5
**Two ways to use it:**
6
6
@@ -55,7 +55,7 @@ pip install unrealmcp
55
55
│ │
56
56
│ C++ Plugin (UnrealMCPBridge) │
57
57
│ TCP server on localhost:55557 │
58
-
│ 238 commands: materials, blueprints, │
58
+
│ 280 commands: materials, blueprints, │
59
59
│ niagara, statetree, actors, data │
60
60
│ tables, profiling, and more │
61
61
└──────────────┬───────────────────────────┘
@@ -72,7 +72,7 @@ pip install unrealmcp
72
72
└───────────────────┘ └────────────────────┘
73
73
```
74
74
75
-
The C++ plugin runs inside the editor and exposes 238 commands over TCP. The CLI and MCP server are two different front doors to the same plugin.
75
+
The C++ plugin runs inside the editor and exposes 280 commands over TCP. The CLI and MCP server are two different front doors to the same plugin.
76
76
77
77
---
78
78
@@ -439,7 +439,7 @@ The script asks where to create the MCP config:
439
439
440
440
---
441
441
442
-
## All 238 Commands
442
+
## All 280 Commands
443
443
444
444
| Category | Count | Highlights |
445
445
|----------|------:|-----------|
@@ -452,7 +452,7 @@ The script asks where to create the MCP config:
Full coverage of the Niagara editor — create systems from templates, add and configure emitters, manage modules and renderers, write scratch pad HLSL, and spawn effects in the level. Built on Niagara's ViewModel API for safe asset modification.
611
+
End-to-end Niagara authoring — read the full stack, mutate any binding (top-level or nested), author scratch-pad dynamic inputs from scratch, spawn arbitrary graph nodes including data-interface member functions, and discover every valid option the editor's dropdowns expose. Built on Niagara's exported ViewModel / Stack Graph APIs with safe replication of non-exported helpers.
612
612
613
613
#### Systems
614
614
| Command | Description |
@@ -643,38 +643,99 @@ Full coverage of the Niagara editor — create systems from templates, add and c
643
643
|`set_niagara_module_enabled`| Enable/disable a module |
644
644
|`reorder_niagara_module`| Reorder within stack |
645
645
|`get_niagara_module_inputs`| Inspect module inputs with current values |
646
-
|`set_niagara_module_input`| Set static value on a module input|
647
-
|`set_niagara_dynamic_input`| Replace input with a dynamic input function |
646
+
|`set_niagara_module_input`| Set literal value (auto-routes Module.* inputs to rapid-iteration; supports nested dot-paths like `"Spawn Count.int32001"`)|
647
+
|`set_niagara_dynamic_input`| Replace input with a dynamic input function (nested-path aware) |
648
648
|`set_niagara_curve`| Set curve points on a curve input |
649
649
|`get_niagara_module_versions`| List script versions |
650
650
651
+
#### Stack Input Binding Loop
652
+
| Command | Description |
653
+
|---------|-------------|
654
+
|`get_niagara_module_input_binding`| Resolve mode (Default/Local/Linked/Dynamic/Data/Expression) + target + **recursive children** for every input in one call |
655
+
|`clear_niagara_module_input`| Reset an input (or nested path) to default — equivalent to "Reset to Default" in the stack UI |
656
+
|`list_niagara_input_source_menu`| Reproduces the editor's source dropdown — engine dynamic-input assets + scratch-pad DIs + link parameters grouped by namespace |
657
+
651
658
#### Parameters & Bindings
652
659
| Command | Description |
653
660
|---------|-------------|
654
661
|`get_niagara_user_parameters`| List User-namespace parameters |
655
662
|`add_niagara_user_parameter`| Add a User parameter |
656
663
|`set_niagara_user_parameter`| Set a User parameter value |
657
664
|`remove_niagara_user_parameter`| Remove a User parameter |
658
-
|`link_niagara_parameter`| Bind module input to a parameter |
665
+
|`link_niagara_parameter`| Bind module input to a parameter (supports nested dot-paths) |
659
666
|`get_niagara_rapid_iteration_parameters`| RI param introspection |
660
667
|`set_niagara_rapid_iteration_parameter`| Set RI param value |
668
+
|`list_niagara_available_parameters`| Enumerate well-known + user + scratch-pad-scoped parameters |
|`add_niagara_graph_node`| Spawn Op / FunctionCall / **DataInterfaceFunction** / ParameterMapGet / ParameterMapSet / Reroute / Input node. DI member functions (e.g. `Array.Length`) use `UNiagaraDataInterface::GetFunctionSignatures` — same path as the right-click "Functions" submenu |
718
+
|`delete_niagara_graph_node`| Delete by index or GUID, mirrors on asset + edit-copy |
|`list_niagara_data_interfaces`| Available data interfaces (DI_*) |
761
+
|`list_niagara_data_interface_functions`|**Member functions on a DI class** (Array.Length, Array.Get, etc.) — pass result to `add_niagara_graph_node(node_type="DataInterfaceFunction")`|
700
762
|`list_niagara_parameter_types`| Parameter type registry |
763
+
|`list_niagara_node_types`| Spawnable node classes with pin schema |
764
+
|`get_niagara_node_type_info`| Pin schema for a node class or script asset |
765
+
|`search_niagara_functions`| Find Niagara script assets by usage + name |
766
+
|`get_niagara_schema_actions`| Full graph right-click menu — same source the editor uses. Returns `op_name` / `function_script` / `input_name` for direct use with `add_niagara_graph_node`|
767
+
|`describe_niagara_type`| Type query — `FNiagaraTypeRegistry` types + **UEnum / UScriptStruct reflection fallback** for script-property enums and custom types |
768
+
|`get_niagara_data_interface_schema`| Walk a DI class's editable property schema |
769
+
|`find_niagara_scratch_pad_usage`| Reverse lookup — where is this scratch pad referenced? |
770
+
|`resolve_niagara_built_in_dynamic_input`| AssetRegistry scan for engine-shipped DI scripts (no more hardcoded paths) |
701
771
702
772
### StateTree (33, NEW)
703
773
@@ -853,7 +923,7 @@ Each editor picks a unique port automatically. The CLI and MCP server read the p
0 commit comments