The cu CLI
This content is not available in your language yet.
cu is the Bash entry point for Unreal commands. Where the typed MCP surface
exposes the 13 hot-path actions (spawn / move / inspect / screenshot / etc.),
cu covers the ~362 long-tail commands across Blueprint nodes, UMG, Niagara,
Sequencer, materials, foliage, and the rest.
Both halves share the same TCP bridge (127.0.0.1:55557) and the same JSON
protocol. From an agent’s perspective: typed MCP is “things I always know how
to do”; cu is “things I look up when needed”.
Why two surfaces?
Section titled “Why two surfaces?”Eager-loading 370 MCP tools at session start cost ~144K tokens of schema in clients that don’t support deferred loading — burning ~72% of an Opus 4.7 context window before the user types. The hybrid split keeps session-start context to ~7K tokens while preserving every UE5 capability behind a one-step search-and-execute lookup. See the Architecture concept page for the full picture.
Where it comes from
Section titled “Where it comes from”The CLI ships inside the plugin at <plugin>/Resources/MCP/cli/cu.py. On
plugin startup, FClaudeUnrealModule::ConfigureCu writes a wrapper at
<ProjectDir>/.claude/cu and adds Bash(cu *) to .claude/settings.local.json
— so Claude Code can invoke it without a permission prompt.
Quick demo
Section titled “Quick demo”# Probe the bridgecu ping
# Browse 5 tools in a category (no TCP — local manifest read)cu list --category camera --limit 5
# Get the full reference for one command (no TCP)cu help spawn_actor
# Run a commandcu exec spawn_actor --name MyCube --type StaticMeshActor --location 0,0,100Exit codes
Section titled “Exit codes”| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Bridge returned an error (handler failed) |
| 2 | Connection error (editor not running, port blocked) |
| 3 | CLI usage error (unknown command, missing required param) |
- Commands reference — full reference for every
cusubcommand. - Discovery flow — how to find the right command when you don’t already know its name.