Docs · Quick start

Install EngineWire in your Unreal project

From an empty project to an AI assistant working in your editor: add the plugin, let Unreal build it, switch on the native MCP server and connect your client. The project's own guide puts the whole thing at about ten minutes, most of it the first plugin build.

Updated Covers EngineWire 0.6 beta (npm @beta)

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:

RequirementDetail
Unreal Engine5.0 to 5.8, on Windows (Win64), macOS or Linux. The plugin is editor-only and never ships in your game.
A C++ projectThe 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).
CompilerThe toolchain your engine version expects: Visual Studio or Rider on Windows, Xcode on macOS, clang on Linux.
An MCP clientClaude Code, Claude Desktop, Cursor, VS Code with GitHub Copilot, or any other MCP client.
Node.js20.19 or later, only for the stdio route. The native HTTP route needs no Node.js.
Which version?

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

  1. Open the Releases page, pick the newest v0.6 pre-release and download McpAutomationBridge-plugin-<version>.zip. The archive holds source only.

  2. The zip contains plugins/McpAutomationBridge/. Copy that McpAutomationBridge folder into your project's Plugins folder:

text · project layout
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:

json · MyGame.uproject (excerpt)
{
  "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 HTTPRoute B · stdio
HowThe plugin serves MCP at http://127.0.0.1:3000/mcpThe client launches unreal-engine-mcp-server, which talks to the plugin over a WebSocket on 127.0.0.1:8090
Node.jsNot needed20.19 or later
Capability tokenYou send it in the X-MCP-Capability-Token headerRead from the project automatically, given UE_PROJECT_PATH
Best forClaude 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

  1. In Edit › Project Settings › Plugins › MCP Automation Bridge, under Native MCP, tick Enable Native MCP Server (port 3000 by default). Restart the editor. The status bar now reads MCP :3000 (0): the port, then the number of connected clients.

  2. Read the capability token the plugin generated for your project. It is 64 hexadecimal characters. Treat it like a password.

bash · macOS / Linux
cat /path/to/MyGame/Saved/MCP/capability-token
powershell · Windows
Get-Content "C:\Path\To\MyGame\Saved\MCP\capability-token"

Then add the server to your client. For Claude Code, one command does it:

bash · Claude Code
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:

json · claude_desktop_config.json
{
  "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:

json · the gateway flow
{ "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.