Before you start
EngineWire is the website for the open-source Unreal_mcp project: a TypeScript MCP server (npm unreal-engine-mcp-server) and a native C++ editor plugin called McpAutomationBridge. The plugin does the work inside the editor; your AI client reaches it over HTTP or stdio. You need:
| Requirement | Detail |
|---|---|
| Unreal Engine | 5.0 to 5.8, on Windows (Win64), macOS or Linux. The plugin is editor-only and never ships in your game. |
| A C++ project | The plugin compiles from source, so the project needs a Source/ folder. Blueprint-only projects can add any class through Tools › New C++ Class, or use prebuilt binaries (see engine versions). |
| Compiler | The toolchain your engine version expects: Visual Studio or Rider on Windows, Xcode on macOS, clang on Linux. |
| An MCP client | Claude Code, Claude Desktop, Cursor, VS Code with GitHub Copilot, or any other MCP client. |
| Node.js | 20.19 or later, only for the stdio route. The native HTTP route needs no Node.js. |
These steps describe the 0.6 line (GitHub dev branch, npm unreal-engine-mcp-server@beta, newest pre-release v0.6.0-beta-e at the time of writing). The npm latest tag still installs 0.5.30, which exposes 23 separate tools and does not match a 0.6 plugin. Always keep @beta in your client config.
1. Add the plugin
Open the Releases page, pick the newest
v0.6pre-release and downloadMcpAutomationBridge-plugin-<version>.zip. The archive holds source only.The zip contains
plugins/McpAutomationBridge/. Copy thatMcpAutomationBridgefolder into your project'sPluginsfolder:
MyGame/
├── MyGame.uproject
└── Plugins/
└── McpAutomationBridge/
├── McpAutomationBridge.uplugin
└── Source/Prefer to track the dev branch? Clone the repository and reference its plugins folder from your .uproject, so a git pull updates the plugin without copying:
{
"AdditionalPluginDirectories": [
"C:/Path/To/Unreal_mcp/plugins"
]
}2. Open the project and build
Open the .uproject. When Unreal asks whether to rebuild the missing modules, answer Yes. The plugin is large, so the first build can take several minutes.
Checkpoint: the status bar in the bottom-right of the level editor shows MCP off. That means the plugin loaded and its built-in HTTP server is simply switched off for now. No indicator at all means the plugin did not load.
If you see "Engine modules cannot be compiled at runtime. Please build through your IDE", generate project files, build the Editor target once in Visual Studio, Rider or Xcode, then reopen the project. More fixes are in troubleshooting.
3. Choose a route and connect a client
Both routes expose the same single MCP tool, unreal. Give each client one route, not both, or the tool shows up twice.
| Route A · Native HTTP | Route B · stdio | |
|---|---|---|
| How | The plugin serves MCP at http://127.0.0.1:3000/mcp | The client launches unreal-engine-mcp-server, which talks to the plugin over a WebSocket on 127.0.0.1:8090 |
| Node.js | Not needed | 20.19 or later |
| Capability token | You send it in the X-MCP-Capability-Token header | Read from the project automatically, given UE_PROJECT_PATH |
| Best for | Claude Code, Cursor, VS Code; several clients sharing one editor (up to 16 sessions) | Claude Desktop, and clients that only launch local commands |
Route A: native HTTP
In Edit › Project Settings › Plugins › MCP Automation Bridge, under Native MCP, tick Enable Native MCP Server (port
3000by default). Restart the editor. The status bar now readsMCP :3000 (0): the port, then the number of connected clients.Read the capability token the plugin generated for your project. It is 64 hexadecimal characters. Treat it like a password.
cat /path/to/MyGame/Saved/MCP/capability-tokenGet-Content "C:\Path\To\MyGame\Saved\MCP\capability-token"Then add the server to your client. For Claude Code, one command does it:
claude mcp add --transport http unreal-engine http://127.0.0.1:3000/mcp --header "X-MCP-Capability-Token: <token>"Cursor and VS Code use a JSON file instead; the exact files are on the Cursor and VS Code pages. When the client connects, the count in the status bar goes up to MCP :3000 (1).
Route B: stdio through Node.js
Add this to your client's MCP configuration. For Claude Desktop the file is %APPDATA%\Claude\claude_desktop_config.json on Windows or ~/Library/Application Support/Claude/claude_desktop_config.json on macOS:
{
"mcpServers": {
"unreal-engine": {
"command": "npx",
"args": ["-y", "unreal-engine-mcp-server@beta"],
"env": {
"UE_PROJECT_PATH": "C:/Path/To/MyGame"
}
}
}
}UE_PROJECT_PATH is your project folder or its .uproject. The server uses it to find the capability token and the plugin's port, so nothing else needs setting. Restart the client after editing its config. The stdio server starts even when the editor is closed; calls answer NOT_CONNECTED until the editor is running.
4. Try it
With the editor open, ask your assistant:
- "List the actors in the current level." A read: nothing changes.
- "Spawn a point light 300 units above the origin." A write: a new actor appears.
- "Take a screenshot of the viewport." The image comes back, so a model that accepts images can check its own work.
Behind the scenes each step is up to three calls to the unreal tool: search finds a capability from a few plain words, describe returns its exact parameters, and execute runs it and returns a receipt of what changed:
{ "operation": "search", "query": "spawn actor" }
{ "operation": "describe", "tool": "control_actor", "action": "spawn" }
{
"operation": "execute",
"tool": "control_actor",
"action": "spawn",
"params": { "classPath": "/Script/Engine.PointLight", "actorName": "KeyLight", "location": [0, 0, 300] }
}Deletes, and some other writes, only run with a consent grant that describe hands out, so they take one extra step. That is deliberate; see the security model.
FAQ
Do I need Node.js?
Only for the stdio route (Route B). The native HTTP route runs entirely inside the editor.
Why does my client list 23 tools instead of one?
It is running the 0.5.30 server, which npm's default tag still installs. Use unreal-engine-mcp-server@beta.
Does it work with Blueprint-only projects?
Not directly: the plugin compiles from source. Add one C++ class to the project, or build the plugin once on a machine with a compiler and share the binaries. Binaries only load in the engine minor and platform they were built for.
Can I use it in a shipped game?
No. It is an editor plugin and its modules are never packaged into your game.
How do I update?
Close the editor, replace Plugins/McpAutomationBridge/ with the new version (or git pull), optionally delete the plugin's Binaries/ and Intermediate/ folders, and reopen. On the stdio route, keep the npm version in step with the plugin. Your settings and token survive updates.