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

The Jutsu Unreal MCP listing on Fab, showing its Blueprint authoring gallery image

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.

  1. 01 · Build

    First commit: MCP transport inside the editor

    Loopback HTTP server and end-to-end harness

  2. 02 · Deploy

    Published on Fab

    Version 1.1.0

  3. 03 · Architecture

    Measured what response formats cost an agent

    204 real responses; JSON was cheapest

  4. 04 · Deploy

    Fab packages aligned across UE 5.5 to 5.8

    One source revision, one package per engine

  5. 05 · Architecture

    CLI versus MCP measurement gate

    32 independent agent sessions

  6. 06 · Architecture

    Eight-tool contract accepted

    ADR 0003

  7. 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.