Unreal Engine, by typed call. Every write read back.
An editor plugin and an MCP server that let an AI agent, an MCP client or any HTTP client drive the Unreal Editor through 717 typed endpoints. Each reply reports what the editor holds after the call.
exec_consoleBLOCKED1 ms'exec_console' is refused: the MifBridge safety gate is in 'scratch' mode. This endpoint either persists to disk, takes the editor loop, or executes outside the
set_cvarREFUSED1 msno console variable named 'mif.BridgeWriteMode'
exec_consoleBLOCKED0.9 ms'exec_console' is refused: the MifBridge safety gate is in 'scratch' mode. This endpoint either persists to disk, takes the editor loop, or executes outside the
export_assetWRITE9 ms
export_assetWRITE8.8 ms
import_assetBLOCKED0.9 ms'import_asset' is refused: the MifBridge safety gate is in 'scratch' mode. This endpoint either persists to disk, takes the editor loop, or executes outside the
describe_endpointREAD8 ms
list_level_actorsREAD1 ms
run_console_capturedBLOCKED1 ms'run_console_captured' is refused: the MifBridge safety gate is in 'scratch' mode. This endpoint either persists to disk, takes the editor loop, or executes out
invoke_editor_tabWRITE1.2 ms
invoke_editor_commandBLOCKED0.9 ms'invoke_editor_command' is refused: the MifBridge safety gate is in 'scratch' mode. This endpoint either persists to disk, takes the editor loop, or executes ou
send_editor_keyBLOCKED1 ms'send_editor_key' is refused: the MifBridge safety gate is in 'scratch' mode. This endpoint either persists to disk, takes the editor loop, or executes outside
The in-editor panel, redrawn. Every row is a real call recorded from a UE 5.7 test project on 2026-09-13, labeled by the panel’s own rules.
MIFBRIDGE, COUNTEDFROM THE REPOSITORY · 2026-10-15
717UE endpointsunique MIF_BIND registrations
447undoableendpoints whose writes are editor transactions
92categoriesof the editor, in the API reference
1145MCP toolsUnreal and Blender, @mcp.tool() decorators
6engines swept5.3 → 5.8 · 322–333 suites each, 0 failed, 1 timed out on each, 2026-09-28 to 2026-09-29
NEW IN 1.2
Gameplay, multiplayer and cinematics. A whole kit from Blender in one call.
Author StateTrees with Subtree parameters and linked overrides, pause play when an actor’s StateTree enters a named state, run EQS queries in play, and write the Gameplay Ability System’s C++ classes. gameplay_recipe’s enemy AI can use a StateTree brain.
02
Multiplayer in Play-In-Editor
Add a client to a running play session, reconnect one, read what replicates for each client, and send an RPC from call_function with the side it ran on in the answer.
03
Blueprint lint
lint_blueprints finds replication mistakes, costly ticks and casts, and untidy graphs. Copy components and nodes between Blueprints, restructure a graph and read its exec order.
04
Movie Render Graphs
Make, check and render Movie Render Graphs layer by layer, with OCIO and multipart EXR, plus Sequencer constraints and markerless body motion capture from one camera.
05
A change cap
Any call that would change more than 25 things shows the list first and writes nothing until that list is committed. A write whose reply timed out is never run twice.
06
A whole kit from Blender
With the free MifBlender add-on: modular kit pieces, rocks, plants and trees, LOD chains, collision hulls, and a game-ready pass that sends a whole kit to Unreal in one call.
HOW IT WORKS
Four hops. The last one checks the first.
Nothing between your agent and the editor guesses. Each hop does exactly what it was asked, or says why not.
01 / YOUR AGENTAsks for a change
Any MCP client, or anything that can send HTTP.
02 / MCP SERVERThree tools reach them all
On your machine. A default session loads find_tools, mif_call and run_python, and reaches every endpoint on demand. A reply is the endpoint’s JSON, unchanged.
03 / THE PLUGINChecks, then acts
Inside the editor. The token, the write mode and every parameter are checked before anything changes.
127.0.0.1:8791
04 / THE EDITORAnswers with what it holds
The change is made, undoable wherever the editor allows it, then read back from the asset or actor. That reading is the reply.
A mismatch is an answer too. If the editor holds something other than what was asked, the response says so instead of reporting success.
The default mode, scratch, refuses saves, Play-In-Editor, cooks and console commands. Only a person raises it: it is not an endpoint, a console variable or a command.
02
Loopback and a token
The plugin answers 127.0.0.1 only and rejects every other caller in the handler. Each request carries your token.
03
Strict input
An unknown or misspelled key is refused with the accepted keys and the likely correction. describe_endpoint says what any endpoint takes.
04
Consequences, reported
A write returns what the editor holds afterwards. A clamped value or a switched-on override flag gets its own field, and a refusal says what to do instead.
05
Undo with Ctrl+Z
447 of the 717 endpoints write through editor transactions, and batch runs many operations as one.
06
Destructive calls ask twice
Deleting assets, actors, nodes or variables, renaming, and writing DataTable rows need confirm: true. Bulk renames, moves and consolidations take dryRun: true to list exactly what they would change first.
Built in Unreal Engine 5.7 by 5662 typed MifBridge calls, filmed while it was built: create_material_instance ×6, spawn_many ×119, set_actor_transform ×4320.
Unreal
An island at sunset, from the landscape to the last tree
Built in Unreal Engine 5.7 by 5628 typed MifBridge calls, filmed while it was built: create_material_instance ×6, create_landscape, spawn_many ×52, set_actor_transform ×3870.
Unreal
A maze raised, flooded and solved
Built in Unreal Engine 5.7 by 13513 typed MifBridge calls, filmed while it was built: create_material_instance ×16, spawn_many ×844, set_actor_transform ×11436.
Unreal
A sunset drawn in 2,304 cubes
Built in Unreal Engine 5.7 by 22308 typed MifBridge calls, filmed while it was built: create_material_instance ×16, spawn_many ×339, set_actor_transform ×20736.
Unreal
A double helix, one base pair at a time
Built in Unreal Engine 5.7 by 6636 typed MifBridge calls, filmed while it was built: create_material_instance ×7, spawn_many ×65, set_actor_transform ×5348.
Unreal
Lanterns rising at dusk
Built in Unreal Engine 5.7 by 51771 typed MifBridge calls, filmed while it was built: create_material_instance ×8, spawn_many ×123, create_material, add_material_expression ×3.
One request a day at most, and nothing about you. The plugin asks mifshowcase.store, at most once every 24 hours, whether a newer version is out, and shows a notification when there is one; the request carries only the plugin’s and the engine’s version. Turn it off in Editor Preferences ▸ Plugins ▸ Mif Bridge, or with MIF_BRIDGE_NO_UPDATE_CHECK=1. Pressing Set up Claude Code also downloads the MCP server’s packages from PyPI, and from 1.2 a call that asks for a real place’s heights (import_landscape_heightmap with an elevation area) makes the MCP server download them from the public AWS Terrain Tiles dataset, sending only the tile coordinates. Otherwise the plugin and the MCP server talk only to each other, over loopback on your machine. More on the privacy page.
Does it end up in my packaged game?
No. MifBridge is an editor module, so a packaged build leaves it out.
Which versions of Unreal Engine?
UE 5.3 to 5.8, each built and swept. The engine matrix shows the record for every version.
Does it work on cooked projects?
Yes, and it says what cooking removed instead of returning an empty answer. Packages, material parameters, the class hierarchy and project structure can all be read: see Cooked projects.
Which AI tools can use it?
Any MCP client can use the MCP server, and anything that sends HTTP can call the plugin directly. With Claude Code installed, SETUP ▸ Set up Claude Code in the editor connects it in one press, and there is a step-by-step guide for installing it with Claude.
Can an agent save or delete things?
Not on its own. Saves, cooks and console commands need the full write mode, which only a person can set, and deletions need confirm: true.
METHOD AND CANDOR
Every number on this page is counted.
The endpoint counts come from the plugin’s own registrations, and every engine version has a sweep behind it. See how each was established.