by ZiggyMar
Provides token‑efficient Blueprint reading, editing, and a persistent project index for AI coding agents within Unreal Engine 5.6/5.8.
Unreal MCP enables AI assistants (e.g., Claude, Cursor) to interact with Unreal Engine projects without transmitting massive raw Blueprint JSON. It offers compact, tier‑ed reads, diff‑based edits, and an incrementally‑updated project index so the model works with concise, relevant data.
UnrealMCPBridge into <YourProject>/Plugins/UnrealMCPBridge/ (or copy the source and compile).cd mcp-server && npm install && npm run build
node mcp-server/dist/index.js --doctor
The tool reports plugin reachability, protocol match, index status, and PIE conflicts.{
"mcpServers": {
"unreal": {
"command": "node",
"args": ["/full/path/to/unreal-mcp/mcp-server/dist/index.js"]
}
}
}
Then invoke unreal_ping or other RPCs from the client.UNREAL_MCP_LOCAL_LLM_URL to a local model (Ollama, OpenAI‑compatible) for token‑free summarisation.search_project, find_references, get_project_overview expose project‑wide insights.Q: Do I need Unreal Engine source code? A: No. The plugin builds against a stock Epic Games Launcher install.
Q: Which Unreal versions are supported? A: UE 5.6 and UE 5.8, using the same plugin binary.
Q: Is a local LLM required? A: Optional. Without it the index is built purely from engine metadata; a local model only reduces token cost for summarisation.
Q: How are node edits persisted? A: All write operations are wrapped in a named "MCP:" transaction, making them undoable with Ctrl+Z.
Q: What if the plugin fails to load?
A: The --doctor command reports mismatched engine versions, missing plugin activation, or PIE session conflicts with remediation steps.

An MCP server that allows AI agents (Claude, Cursor) to directly control and manipulate Unreal Engine.
This server lets Claude (or any MCP client) read and edit Unreal Engine 5.6/5.8 Blueprints directly, without burning your context window on raw engine JSON, and without needing anything beyond a stock Epic Games Launcher install.
If you've tried pointing an AI assistant at a real Unreal project, you've hit this: Blueprints don't fit in a context window. A single graph dumped as raw engine data is enormous, so either the model never sees enough of the project to have real context, or you spend most of your budget re-explaining what already exists every time you open a new conversation.
This project is built around one idea: the model should never receive a raw engine dump. Every hop between the Unreal Editor and Claude compacts the data: tiered reads, diff-based edits, and a persistent index that's built once and updated incrementally instead of re-scanned on every question.
Two pieces:
UnrealMCPBridge is a C++ editor plugin that runs inside UnrealEditor.exe and exposes a local TCP interface over the engine's own Kismet2/EdGraph/AssetRegistry APIs. Built against a stock launcher install: no engine source required to build or run it.mcp-server is a Node/TypeScript MCP server that translates MCP tool calls into bridge requests, and is responsible for keeping every response cheap: compact field names, capped result sizes, and no re-serializing verbose engine data verbatim.See ARCHITECTURE.md for the full design.
There are several Unreal MCP projects on GitHub already, and as of UE 5.8 Epic ships its own experimental first-party MCP plugin (5.8 only, opt-in, requires manually enabling an "Editor Toolset"). Worth being direct about where this project actually differs, rather than just claiming "better":
AssetRegistry delegates as you edit, instead of rescanning the project on every query. find_references answers "what actually uses this Blueprint" without the model having to enumerate the project itself.UNREAL_MCP_LOCAL_LLM_URL at a local model (Ollama or anything OpenAI-compatible), indexing summaries are generated there instead of spending Claude's tokens on mechanical scanning work. Fully optional. The index works without it.Full survey of the existing ecosystem (licenses, architectures, what each one does well) is in docs/COMPETITIVE_LANDSCAPE.md.
There is also a companion document that starts from the other end: docs/COMPLAINTS_SOLVED.md collects the complaints people actually file about Unreal MCP servers, each with its source link, and states plainly whether this project solves it, partly solves it, or does not. The open rows are left open on purpose.
This is being built and verified in public, milestone by milestone. Each milestone's status doc is written honestly, including what's compiled/tested versus what's still unverified:
search_project, find_references, get_project_overview, optional local-model enrichment for search results.unreal_find_node and unreal_get_node_signature, reading the running engine's real Blueprint-callable surface via reflection (12,402 functions on 5.6, 15,775 on 5.8, built in ~0.1s). unreal_add_node now answers a wrong function name with didYouMean near-misses instead of a dead end.All four milestones are build-verified, protocol-verified, and live-verified on both engine versions. See docs/LIVE_VERIFICATION.md for the 5.8 session against a real ~20-Blueprint project and docs/UE56_STATUS.md for the 5.6 one: reads returning correct real data, a full create/wire/compile/save write round-trip, and confirmation that the incremental project index actually stays fresh without restarting the editor (M3's core claim).
Both live sessions earned their keep by catching a real bug that no amount of compiling or protocol
testing would have surfaced. On 5.8 it was add_node duplicating an already-present override-event
node. On 5.6 it was the .uplugin hard-pinning EngineVersion to 5.8.0: every build check passed
because UnrealBuildTool ignores that field, but the runtime plugin loader honors it, so the editor
stopped on a modal incompatibility dialog and the bridge never started.
Since then, all of that has been exercised live too: remove_node and VariableGet are covered by
the node-id and control-flow suites, and add_node now places Branch, Sequence, Cast, and
standard-library macros (ForEachLoop, WhileLoop, ...) directly, verified by building and
compiling a real conditional graph through the bridge alone. Node ids are persistent GUIDs, and
every write is undoable with Ctrl+Z under a named "MCP:" transaction. Still outstanding:
CustomEvent/VariableSet node types have not had a dedicated live check, and the M5 catalog
covers UFunction-backed nodes; native UK2Node types are placed via the dedicated nodeType
values rather than discovered through unreal_find_node.
Ensure you have Node.js 18+ and a UE 5.6 / 5.8 project.
Easiest path: download the prebuilt plugin for your engine version and unzip it into your
project's Plugins/UnrealMCPBridge/ folder, so you never compile it yourself:
Or build it yourself by copying the UnrealMCPBridge plugin folder to your Unreal project's
Plugins/ directory:
# macOS / Linux
mkdir -p "/path/to/YourProject/Plugins" && cp -r UnrealMCPBridge "/path/to/YourProject/Plugins/"
# Windows (PowerShell)
New-Item -ItemType Directory -Force -Path "C:\path\to\YourProject\Plugins"; Copy-Item -Recurse UnrealMCPBridge "C:\path\to\YourProject\Plugins\"
Note: Rebuild/open your Unreal project to compile the plugin, and ensure it is enabled in the editor.
Install the node dependencies and compile the typescript codebase:
cd mcp-server && npm install && npm run build
With the editor open, run:
node mcp-server/dist/index.js --doctor
It reports whether the plugin is reachable, whether its protocol matches the server, whether the project index is built or still scanning, whether the engine's node catalog is readable, and whether a PIE session is in the way. Every failed check comes with the remedy, so you never have to guess which of six things is wrong. Exit code 1 means the editor could not be reached.
Connect the server to your MCP client using the absolute path to mcp-server/dist/index.js:
Claude Code:
claude mcp add unreal -- node "/path/to/unreal-mcp/mcp-server/dist/index.js"
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"unreal": {
"command": "node",
"args": ["/path/to/unreal-mcp/mcp-server/dist/index.js"]
}
}
}
Once registered, open your project in the Unreal Editor and verify the connection via unreal_ping.
For more configuration options and details, see mcp-server/README.md.
Issues and PRs welcome. This project is young and moving fast, so check the status docs above before assuming something works end-to-end.
MIT. See LICENSE.
Please log in to share your review and rating for this MCP.
Explore related MCPs that share similar capabilities and solve comparable challenges
by modelcontextprotocol
A Model Context Protocol server for Git repository interaction and automation.
by zed-industries
A high‑performance, multiplayer code editor designed for speed and collaboration.
by modelcontextprotocol
Model Context Protocol Servers
by modelcontextprotocol
A Model Context Protocol server that provides time and timezone conversion capabilities.
by cline
An autonomous coding assistant that can create and edit files, execute terminal commands, and interact with a browser directly from your IDE, operating step‑by‑step with explicit user permission.
by upstash
Provides up-to-date, version‑specific library documentation and code examples directly inside LLM prompts, eliminating outdated information and hallucinated APIs.
by daytonaio
Provides a secure, elastic infrastructure that creates isolated sandboxes for running AI‑generated code with sub‑90 ms startup, unlimited persistence, and OCI/Docker compatibility.
by continuedev
Enables faster shipping of code by integrating continuous AI agents across IDEs, terminals, and CI pipelines, offering chat, edit, autocomplete, and customizable agent workflows.
by github
Connects AI tools directly to GitHub, enabling natural‑language interactions for repository browsing, issue and pull‑request management, CI/CD monitoring, code‑security analysis, and team collaboration.