Skip to content
ClaudeUnreal
GitHub

VFX — Niagara

This content is not available in your language yet.

23 tools — 0 typed MCP · 23 via cu CLI.

  • Niagara — Systems & Emitters — 15 tools
  • Niagara — Parameters & Module Inputs — 8 tools

Create Niagara particle systems for VFX

@mcp.tool()
@showcase(
"Create Niagara particle systems for VFX",
featured=True,
)
def create_niagara_system(
ctx: Context,
name: str,
path: str = None,
template: str = None,
) -> ToolResult:
"""[Niagara] Create a new Niagara System asset.
Anti-patterns:
- Do not pass a ``path`` that fails ``IsValidLongPackageName``
(engine paths, malformed slashes, etc.) — handler returns
"Invalid package path: <path>".
- Do not pass a ``template`` that doesn't resolve to a
``UNiagaraSystem`` — handler returns "Template Niagara System
not found".
- Do not call without the **Niagara** plugin enabled — the
``UNiagaraSystem`` class lookups fail and the system is not
created.
Args:
ctx: The MCP context
name: Asset name for the Niagara System (e.g. "NS_Fire")
path: Content path (default "/Game/FX")
template: Optional path to an existing Niagara System to clone from
(e.g. "/Game/FX/NS_Template")
"""
from claude_unreal_server import get_unreal_connection
try:
unreal = get_unreal_connection()
if not unreal:
logger.warning("Failed to connect to Unreal Engine")
return err("Failed to create Niagara System: no response from Unreal Engine")
params = {"name": name}
if path is not None:
params["path"] = path
if template is not None:
params["template"] = template
response = unreal.send_command("create_niagara_system", params)
if not response:
return err("Failed to create Niagara System: no response from Unreal Engine")
if response.get("status") == "error":
return err("Failed to create Niagara System", error=response.get("error", "Unknown error"))
result = response.get("result", response)
return ok(
f"Created Niagara System '{name}' at {result.get('path', path or '/Game/FX')}",
name=result.get("name", name),
path=result.get("path", ""),
num_emitters=result.get("num_emitters", 0),
)
except Exception as e:
logger.error(f"Error creating Niagara System: {e}")
return err("Failed to create Niagara System", error=str(e))