What you need first
Install the McpAutomationBridge plugin in your project and open it once so Unreal builds it; the status bar should read MCP off. The quick start covers that in four steps. Then pick the section for your Claude app below.
| Claude app | Recommended route | Why |
|---|---|---|
| Claude Code | Native HTTP (Route A) | Supports Streamable HTTP with custom headers, so no Node.js is involved. Several clients can share one editor. |
| Claude Desktop | stdio (Route B) | Launches a local command; the server finds the capability token in your project by itself. |
Claude Code over native HTTP
In Edit › Project Settings › Plugins › MCP Automation Bridge › Native MCP, tick Enable Native MCP Server and restart the editor. The status bar reads
MCP :3000 (0), and the Output Log showsNative MCP server started on http://127.0.0.1:3000/mcp.Copy the token from
<YourProject>/Saved/MCP/capability-token, without a trailing newline.Register the server:
claude mcp add --transport http unreal-engine http://127.0.0.1:3000/mcp --header "X-MCP-Capability-Token: <token>"To share the setup with a team without committing the secret, put a project-scoped .mcp.json in the repository and read the token from an environment variable:
{
"mcpServers": {
"unreal-engine": {
"type": "http",
"url": "http://127.0.0.1:3000/mcp",
"headers": {
"X-MCP-Capability-Token": "${UNREAL_MCP_TOKEN}"
}
}
}
}Each developer then sets UNREAL_MCP_TOKEN to their own project's token. When Claude Code connects, the status bar count goes up to MCP :3000 (1), and running /mcp in Claude Code lists exactly one tool from this server: unreal.
On the native route the server lives inside the editor. If Claude Code starts before the editor, the connection fails; reconnect through /mcp once the editor is up. A direct HTTP session is also lost when the editor closes or crashes.
Keep the session across editor restarts
The npm package has a proxy command that sits between Claude and the editor over stdio. While the editor is down every call answers NOT_CONNECTED, and the first call after it comes back reaches it with no reconnect. It needs Node.js 20.19 or later:
{
"mcpServers": {
"unreal-engine": {
"command": "npx",
"args": ["-y", "unreal-engine-mcp-server@beta", "proxy"],
"env": { "UE_PROJECT_PATH": "C:/Path/To/YourProject" }
}
}
}Claude Code over stdio instead
If you would rather not paste a token, let the stdio server read it from the project:
claude mcp add unreal-engine --env UE_PROJECT_PATH=C:/Path/To/MyGame -- npx -y unreal-engine-mcp-server@betaOn native Windows, put cmd /c before npx.
Claude Desktop over stdio
Open the config file (%APPDATA%\Claude\claude_desktop_config.json on Windows, ~/Library/Application Support/Claude/claude_desktop_config.json on macOS) and add:
{
"mcpServers": {
"unreal-engine": {
"command": "npx",
"args": ["-y", "unreal-engine-mcp-server@beta"],
"env": {
"UE_PROJECT_PATH": "C:/Path/To/MyGame"
}
}
}
}Restart Claude Desktop. The tool appears even while the editor is closed; the first call connects. If Windows reports that it cannot find npx, launch it through cmd:
"command": "cmd",
"args": ["/c", "npx", "-y", "unreal-engine-mcp-server@beta"]Keep the @beta tag. Without it npm installs 0.5.30, which does not match a 0.6 plugin. Claude Desktop writes the server's log under %APPDATA%\Claude\logs\ (Windows) or ~/Library/Logs/Claude/ (macOS); add "LOG_LEVEL": "debug" to env to see connection attempts.
Prompts to start with
- "List the actors in the current level."
- "Spawn a point light 300 units above the origin, then take a screenshot of the viewport."
- "Create a Blueprint actor called BP_Door with a static mesh component and a boolean variable IsOpen, then compile it."
- "Make a material instance of M_Base with a red base colour and apply it to the selected actor."
Screenshots come back as images, so Claude can look at what it built and correct it. If Claude keeps guessing capability names (UNKNOWN_CAPABILITY, UNDECLARED_PARAMETER), add one line to your CLAUDE.md: "Use the unreal tool: search, then describe, then execute, and copy each nextCall."
Tell Claude about your project
On the native route, the plugin's Server Instructions setting (in the Native MCP section) is free text appended to the instructions clients receive when they connect, for example "All gameplay Blueprints live under /Game/Core/Blueprints. Widgets are named WBP_*." On the stdio route, put the same text in CLAUDE.md.
Long editor operations such as lighting builds, imports and packaging can outlast Claude Code's per-call limit. Raise it with the MCP_TOOL_TIMEOUT environment variable (milliseconds). The editor keeps working after a client timeout, so read the state again before retrying.
FAQ
Is this Epic's Claude Code plugin?
No. Epic publishes its own "Unreal Engine MCP" plugin for Claude Code, which works with Epic's Unreal MCP in UE 5.8. EngineWire is an independent open-source project that works on UE 5.0 to 5.8. See Epic's Unreal MCP vs EngineWire.
Which Claude model should I use?
Any model your client runs that can call tools. The single-tool design is meant to help smaller models, but stronger models make fewer mistakes on long, multi-step jobs.
Does my project get sent anywhere?
The plugin and server talk only to each other and to your client, over 127.0.0.1, and send no telemetry. Claude itself does receive tool results (asset names, property values, screenshots), as with any tool.
Can Claude delete things?
Yes, but only through a per-call consent grant. To approve those calls yourself, use Claude's own tool-approval setting for the unreal tool, and commit to source control before big jobs.