Getting Started¶
UE-MCP lets you tell an AI assistant what you want done in Unreal. It can place actors, write blueprints, author materials, configure Niagara, build lighting, generate PCG systems, blah, blah, blah.
Prerequisites¶
- Install Unreal Engine 5.4 to 5.7
- Install Node.js 18 or newer
- Install an MCP-capable AI client (e.g. Claude Code)
1. Installation¶
- If your Unreal Editor is open, close it.
cdinto your project folder (the one with the.uproject).- Run the wizard:
The wizard then:
- Auto-detects your
.uproject. - Asks which tool categories to enable (
level,blueprint,material,niagara, etc.), with one-line descriptions. Pre-checked on a fresh install; on re-init, prior opt-outs inue-mcp.yml'sue-mcp.disable[]are remembered. - Copies the C++ bridge plugin into
<YourProject>/Plugins/UE_MCP_Bridge/. - Enables the plugins it needs in your
.uproject:UE_MCP_Bridge,PythonScriptPlugin, plus any ofNiagara,PCG,GameplayAbilities,EnhancedInputrequired by the categories you kept. - Scaffolds an empty
ue-mcp.yml(for custom flows) if missing. - Detects installed MCP clients (Claude Code project + global, Claude Desktop, Cursor, Codex) and writes the config for each you confirm. Global/Desktop configs default unchecked since opting them in affects every project on the machine.
- Asks about agent behavior (all default off on fresh installs — blasting through with Enter adds no surprises): enable the
feedback(submit)tool, install the Claude-Code-only PostToolUse hook that nudges the agent to offer feedback afterexecute_python, install bundled Claude Code workflow skills. - If you opted into the feedback prompt hook, optionally runs the GitHub OAuth device flow so
feedback(submit)can author issues as your real GitHub user (defaultauthor="user"). The token is cached at~/.ue-mcp/auth.json(mode 600) and reused. Skip if you don't want it now — you can runnpx ue-mcp authlater, or callfeedback(submit)withauthor="bot"to post anonymously instead. - Writes the final
ue-mcp.ymland prints a recap of every file or directory init touched. Per-machine state (e.g. the list of Claude Code settings files where the feedback hook was installed) is kept under~/.ue-mcp/, not in the project tree.
2. Open the Editor¶
- Open your project.
- When the editor asks whether to compile
UE_MCP_Bridge, say yes. First-time compile takes ~30-60 seconds.
The bridge starts automatically once the editor finishes loading, listening on ws://localhost:9877.
Verify the bridge¶
- Open Window → Output Log.
- Filter on
LogMCPBridge. - Confirm this line appears:
If it's not there, see Troubleshooting.
3. Verify the connection¶
- Open your AI client.
- Paste:
- Look for
"editorConnected": truein the response.
4. Try things¶
Good first prompts:
Place a directional light at (0, 0, 500), a SkyLight at the origin, then build lighting at preview quality.
Direct tool-call syntax also works:
level(action="get_outliner")
asset(action="list", directory="/Game/")
demo(action="step", stepIndex=1)
reflection(action="reflect_class", className="StaticMeshActor")
See the Tool Reference for everything available.
Updating¶
Update, deploy, and rebuild in one command (run from a plain terminal, not through your MCP client):
Or do less:
ue-mcp update --deploy # update + deploy plugin sources (no rebuild)
ue-mcp update # update the npm package only
ue-mcp deploy # copy plugin sources into your project
update cannot restart the MCP server it was spawned by, so finish with: quit your MCP client → ue-mcp update --build → relaunch the client.
ue-mcp doctor¶
If an update "succeeds" but the running server keeps reporting an old version, run:
It prints every version source - registry latest, npm global, the running server(s), the deployed bridge plugin - and, crucially, flags a project-local node_modules/ue-mcp that shadows the global install. With ue-mcp pinned in a project's package.json, npx ue-mcp runs the local copy, so global updates do nothing. doctor surfaces that one-line root cause (and suggests pinning .mcp.json to npx -y ue-mcp@latest so the server self-heals on each launch). ue-mcp update --build aligns a stale local copy automatically.
Building the project¶
To build your project's C++ code from the command line:
Stop the editor first. Pass a .uproject path if you're not in the project directory. AI agents can also trigger builds via editor(action="build_project").
Unattended agent sessions¶
If you set up the feedback prompt hook and then leave a long-running agent working, the elicitation approval prompt on feedback(submit) will stall the session waiting for you. For unattended runs, switch your personal feedback mode:
This writes the preference to ~/.ue-mcp/state.json (per-user, per-machine — it is not committed to the project). defer writes submissions to ~/.ue-mcp/pending-feedback/ for later review with npx ue-mcp feedback list/show/approve/discard. auto-approve posts directly without prompting. Both still run the credential and privacy scrubs.
For a one-off agent run without changing the persisted preference, use the env var instead:
See Feedback → modes.
Switching projects¶
To point ue-mcp at a different .uproject without restarting your AI client, ask:
UE-MCP redeploys the bridge and reconnects. (Calls project(action="set_project") under the hood.)
Manual configuration¶
If you'd rather skip npx ue-mcp init, edit the MCP client config yourself.
Use forward slashes on Windows
C:/Users/..., not C:\Users\.... Backslashes need escaping inside JSON.
.mcp.json in your project root:
claude_desktop_config.json:
.cursor/mcp.json:
The first run auto-deploys the C++ plugin. To deploy explicitly: npx ue-mcp deploy, then restart the editor.
Where to next¶
- Tool Reference - every tool and every action
- Flows - chain actions into reusable YAML workflows with rollback and retries
- Architecture - what's actually happening when you call a tool
- Configuration -
ue-mcp.ymloptions and per-client config - Neon Shrine Demo - guided 19-step procedural scene build
- Troubleshooting - connection errors, build errors, asset path errors