Concepts
Enough of the model to evaluate the plugin and reason about what your agent is doing. You don't need this to use it day to day — the agent handles it — but it explains the design choices.
One tool, ~1,200 RPCs
The MCP server exposes exactly one tool: call. Every operation — across 50+
namespaces and ~1,200 RPCs — travels as a string in that tool's method argument,
with parameters in args. A flat list of 1,200 tools would swamp an agent's context;
a single self-documenting tool keeps it lean and lets the agent discover only what it needs.
The three call modes
The same tool does discovery and execution, switched by argument shape:
| You call | You get |
|---|---|
call() | The root namespace index. |
call("material") | The wiki page for that namespace or method (omit args). |
call("material.compile_mgir", {…}) | Executes the RPC with those parameters. |
Method names are dotted namespace.verb (e.g. actor.spawn,
blueprint.compile). The discovery pages are the agent's reference — there is no
separate human RPC catalog to keep in sync.
Text IRs & round-trip
Several asset graphs can be expressed as a compact text intermediate representation. Four round-trip — the agent can author from text and read it back: BPIR (Blueprint), MGIR (Material), AGIR (Animation Blueprint), CRIR (Control Rig). Five are decompile-only, for review and diffing: BTIR (Behavior Tree), SCIR (Sound Cue), MSIR (MetaSound), NIR (Niagara), PCGIR (PCG).
Round-trip means logical equivalence — same nodes, connections, and values. Pure layout (comment boxes, node colors, reroute knots) is not preserved by design.
Ports
The endpoint is http://127.0.0.1:<port>/mcp. By default the port is a fixed
19880, the same on every machine, so committed agent configs stay portable. Two editors
both binding 19880 will collide — the one that loses the bind refuses to serve.
To run several projects at once, enable Auto-derive Port From Project Path in Project
Settings: each project folder gets a stable, distinct port in 19880–30119
(19880 + hash(projectPath) % 10240). Or set a fixed HttpPort yourself.
Onboarding bakes the resolved URL into each agent's config, so agents never discover the port at runtime.
Long-running operations
Most calls return synchronously. An operation that takes a while returns a job ticket
right away; the agent polls progress by calling system.job_status. Default request
timeout is 120 seconds, max 300; the request body limit is 1 MB.
Security model
- The module is editor-only and the endpoint is loopback-only by default.
- Requests can inspect and mutate assets and editor state — create, edit, save, delete, compile. Treat it as a local dev tool with write access to your project.
- Don't expose the port beyond localhost; use only trusted local agents.
- Agents talk through their MCP client's
calltool — never raw HTTP,curl, or legacy paths. - Keep your project under source control and review generated changes before committing.