Case Study
Jutsu Unreal MCP
An Unreal Engine editor plugin, sold on Fab, that lets AI coding agents author Unreal projects and check the result through eight MCP tools.
- Period
- – present
- Role
- Founder & sole engineer
523
Editor operations behind 8 MCP tools (UE 5.8)
102,442
Lines of C++
10 days
First commit to Fab release
68
End-to-end test cases against a live editor

A plugin on Fab that lets AI agents change an Unreal project and show that the change held
Problem
AI coding agents handle text files well and Unreal projects badly. Blueprints, materials, levels and gameplay assets live behind editor APIs, so an agent either cannot touch them or edits them blind: it reports "done" on a Blueprint that never compiled, spends its context on oversized dumps, and has no way to see what happens in Play In Editor.
What was built
Jutsu Unreal MCP is an editor-only C++ module that runs an MCP server inside the Unreal Editor over loopback HTTP, with no Python, Node or cloud service. Eight fixed tools (context, find, inspect, apply, verify, jobs, read and capabilities) front a versioned registry of 523 editor operations on UE 5.8: Blueprints, UMG, materials, animation, Niagara, MetaSound, PCG, the Gameplay Ability System, StateTree, World Partition and more. Input and output schemas are closed, so a malformed call is refused before it touches the project, and the refusal names the expected value and the capability that would have been correct.
The hard parts were honesty and size. Every change returns a receipt with per-step outcomes and compile and save state; verification answers passed, failed or unknown with the observed value, including checks inside a Play In Editor session held open by a job. Every response is capped at 65,536 bytes by default, with explicit continuation and no silent truncation, so a large graph can be read completely without flooding the agent. One source tree builds a separate package for each of UE 5.5, 5.6, 5.7 and 5.8, guarded by per-engine contract baselines and 68 end-to-end cases that drive a live editor.
Outcome
Published on Fab on August 11, 2026, ten days after the first commit. The current release, 4.0.1 (September 2026), runs on Unreal Engine 5.5 to 5.8 on Windows and is tested with Claude Code, Codex and OpenCode. Public documentation and support issues live in the JutsuUnrealMcpPublic repository on GitHub.
Shipping Timeline
From zero to production.
01 · Build
First commit: MCP transport inside the editor
Loopback HTTP server and end-to-end harness
02 · Deploy
Published on Fab
Version 1.1.0
03 · Architecture
Measured what response formats cost an agent
204 real responses; JSON was cheapest
04 · Deploy
Fab packages aligned across UE 5.5 to 5.8
One source revision, one package per engine
05 · Architecture
CLI versus MCP measurement gate
32 independent agent sessions
06 · Architecture
Eight-tool contract accepted
ADR 0003
07 · Deploy
Released 4.0.1 with application API 5
CLI removed; MCP is the single workflow
Engineering
How it is built.
Stack
- Python
- C++
- Unreal Engine
- Model Context Protocol (MCP)
Decisions
- Eight fixed tools over a capability registry
- Instead of publishing hundreds of domain commands as MCP tools, the plugin exposes eight stable entry tools and validates specialised arguments against the registry. Agents get a small typed surface that does not grow as domains are added, and the existing handlers and canonical IDs stay intact.
- Compact Blueprint graphs by default, full reads on request
- Graph inspection returns node identities, links and meaningful pin values without expanding every reflected property. Everything stays reachable through explicit full reads and bounded continuation, and a cursor from a graph that has since changed is rejected instead of mixing two states.
- Measure tokens before building a renderer
- Re-encoding responses as Markdown, tables or indented text was measured over 204 real response bodies: every alternative cost more tokens than the JSON it replaced (Markdown 123%, flattened paths 252%). Responses stay JSON, and any rendering proposal has to pass the same measurement.
- Retire the CLI once MCP absorbed what it proved
- A thin command-line front end cut failed calls per task from 1.500 to 0.938 across 32 agent sessions. Rather than maintain two agent workflows, its useful parts (file-path addressing, a wrong-project check, single-value property reads) moved into MCP, and the CLI was removed after a retirement gate passed with no failed calls.
- Bounded responses, never silently truncated
- Every tool result has a byte ceiling and carries page metadata stating whether it is complete and how to continue. A caller can ask for a smaller budget; the server never drops data without saying so.

