Client guide · Cursor

Use Cursor's agent inside Unreal Engine

Cursor talks to the plugin's built-in Streamable HTTP server directly, so the whole setup is one JSON entry and a token. Your C++ stays in Cursor; the agent reaches into the running editor for levels, Blueprints, materials, UI and Play-In-Editor.

Updated Covers EngineWire 0.6 beta (npm @beta)

Why Cursor and Unreal fit together

Most Unreal projects mix C++ in an IDE with assets that only exist inside the editor: levels, Blueprint graphs, materials, widgets. Cursor already edits the C++. With EngineWire connected as an MCP server, the same agent session can also open the editor side: spawn and place actors, add Blueprint variables and components, build material graphs, run Play-In-Editor and take a screenshot to check the result.

Cursor sees a single MCP tool, unreal. Instead of loading hundreds of tool schemas into the context, the agent searches for what it needs in plain words, reads one contract and runs it. That keeps the context small and keeps Cursor well clear of tool-count limits.

Setup

  1. Install the plugin. Copy McpAutomationBridge from the newest v0.6 pre-release into YourProject/Plugins/ and open the project so it builds. Full steps: quick start.

  2. Enable the native server. Edit › Project Settings › Plugins › MCP Automation Bridge › Native MCP › Enable Native MCP Server, then restart the editor. The status bar reads MCP :3000 (0).

  3. Copy the token from <YourProject>/Saved/MCP/capability-token. Without it the endpoint answers 401 Invalid capability token.

  4. Add the server to Cursor, globally in ~/.cursor/mcp.json or per project in .cursor/mcp.json:

json · .cursor/mcp.json
{
  "mcpServers": {
    "unreal-engine": {
      "url": "http://127.0.0.1:3000/mcp",
      "headers": {
        "X-MCP-Capability-Token": "<token>"
      }
    }
  }
}

Cursor takes the same url and headers as Claude Code, without a type field. When Cursor connects, the status bar count goes up to MCP :3000 (1) and Cursor lists one tool from this server, unreal.

Don't commit the token

A project .cursor/mcp.json with the token pasted in is a secret. Either keep that file out of version control or use the global ~/.cursor/mcp.json. Anyone holding the token can drive your editor.

Using stdio instead

If you prefer not to handle the token at all, Cursor can launch the Node.js server, which reads the token from your project. It needs Node.js 20.19 or later:

json · ~/.cursor/mcp.json (stdio)
{
  "mcpServers": {
    "unreal-engine": {
      "command": "npx",
      "args": ["-y", "unreal-engine-mcp-server@beta"],
      "env": {
        "UE_PROJECT_PATH": "C:/Path/To/MyGame"
      }
    }
  }
}

Use one route per client, not both: with both configured, the unreal tool shows up twice. Keep @beta; plain unreal-engine-mcp-server installs 0.5.30, which doesn't match a 0.6 plugin.

Cursor and Claude Code on one editor

The native server serves up to 16 sessions at once, so Cursor and Claude Code (or a second Cursor window) can share one running editor. Each client sends the same project token. To work with two editors at the same time, give each its own port by setting MCP_NATIVE_PORT in the environment that launches the editor, then point each Cursor entry at its port:

powershell · second editor on port 3001
$env:MCP_NATIVE_PORT = "3001"; & "C:\Program Files\Epic Games\UE_5.7\Engine\Binaries\Win64\UnrealEditor.exe" "C:\Path\To\OtherGame\OtherGame.uproject"

A sensible way to work

  • Ask for a check, not just a change. "Spawn a row of five crates along X and then take a viewport screenshot" lets the agent see whether they landed where you meant.
  • Name your conventions once. Put folder and naming rules in the plugin's Server Instructions setting (native route) or your Cursor rules (stdio route), for example "Widgets are named WBP_* under /Game/UI."
  • Keep the editor in front. Unreal throttles a background editor; turn off Editor Preferences › General › Performance › Use Less CPU when in Background so Play-In-Editor checks run at full speed while you type in Cursor.
  • Commit first. Deletes need a per-call consent grant, and control_editor.undo steps back through editor transactions, but source control is still your real safety net.

FAQ

Does Cursor need anything installed besides the plugin?

Not on the native HTTP route: Cursor connects to the editor directly. The stdio route needs Node.js 20.19+.

Cursor says it can't connect.

Check that the editor is running with the project open, that the status bar reads MCP :3000 rather than MCP off, and that the URL ends in /mcp. A 401 means the token is missing or wrong. More in troubleshooting.

Does it work with Windsurf too?

Yes. The stdio block above works in Windsurf's ~/.codeium/windsurf/mcp_config.json, and any client with Streamable HTTP and custom headers can use the native URL.

Which engine versions?

The plugin targets every UE minor from 5.0 to 5.8. See engine versions for what has been tested.