EngineWire

Builds inside a running Unreal Editor through a C++ plugin, behind one search-and-run MCP tool

By Chirag Panwar (individual) TypeScript Remote (hosted) · Streamable HTTPLocal · stdio, Streamable HTTP Developer toolsMedia

70 popularity score ★ 1.0k ↓ 890/wk

Connect your client

Local (once it is running)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

Claude CodeTerminal
claude mcp add --transport http enginewire http://127.0.0.1:3000/mcp --header 'X-MCP-Capability-Token: <CAPABILITY_TOKEN>'
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "enginewire": {
      "url": "http://127.0.0.1:3000/mcp",
      "headers": {
        "X-MCP-Capability-Token": "<CAPABILITY_TOKEN>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "enginewire": {
      "type": "http",
      "url": "http://127.0.0.1:3000/mcp",
      "headers": {
        "X-MCP-Capability-Token": "<CAPABILITY_TOKEN>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.enginewire]
url = "http://127.0.0.1:3000/mcp"
http_headers = { "X-MCP-Capability-Token" = "<CAPABILITY_TOKEN>" }
Gemini CLITerminal
gemini mcp add --scope user --transport http --header 'X-MCP-Capability-Token: <CAPABILITY_TOKEN>' enginewire http://127.0.0.1:3000/mcp
Local (npm)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs UE_PROJECT_PATH. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add enginewire -e UE_PROJECT_PATH=<UE_PROJECT_PATH> -- npx -y unreal-engine-mcp-server
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "enginewire": {
      "command": "npx",
      "args": [
        "-y",
        "unreal-engine-mcp-server"
      ],
      "env": {
        "UE_PROJECT_PATH": "<UE_PROJECT_PATH>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "enginewire": {
      "command": "npx",
      "args": [
        "-y",
        "unreal-engine-mcp-server"
      ],
      "env": {
        "UE_PROJECT_PATH": "<UE_PROJECT_PATH>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "enginewire": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "unreal-engine-mcp-server"
      ],
      "env": {
        "UE_PROJECT_PATH": "<UE_PROJECT_PATH>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.enginewire]
command = "npx"
args = ["-y", "unreal-engine-mcp-server"]

[mcp_servers.enginewire.env]
UE_PROJECT_PATH = "<UE_PROJECT_PATH>"
Gemini CLITerminal
gemini mcp add --scope user -e UE_PROJECT_PATH=<UE_PROJECT_PATH> enginewire npx -- -y unreal-engine-mcp-server
Local (from source)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs UE_PROJECT_PATH. Replace each <NAME> with your value.

FirstTerminal
git clone --branch v0.6.0 https://github.com/ChiR24/Unreal_mcp.git
cd Unreal_mcp
npm install
npm run build
Claude CodeTerminal
claude mcp add enginewire -e UE_PROJECT_PATH=<UE_PROJECT_PATH> -- node '<ABSOLUTE_PATH_TO_CLONE>/dist/cli.js'
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "enginewire": {
      "command": "node",
      "args": [
        "<ABSOLUTE_PATH_TO_CLONE>/dist/cli.js"
      ],
      "env": {
        "UE_PROJECT_PATH": "<UE_PROJECT_PATH>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "enginewire": {
      "command": "node",
      "args": [
        "<ABSOLUTE_PATH_TO_CLONE>/dist/cli.js"
      ],
      "env": {
        "UE_PROJECT_PATH": "<UE_PROJECT_PATH>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "enginewire": {
      "type": "stdio",
      "command": "node",
      "args": [
        "<ABSOLUTE_PATH_TO_CLONE>/dist/cli.js"
      ],
      "env": {
        "UE_PROJECT_PATH": "<UE_PROJECT_PATH>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.enginewire]
command = "node"
args = ["<ABSOLUTE_PATH_TO_CLONE>/dist/cli.js"]

[mcp_servers.enginewire.env]
UE_PROJECT_PATH = "<UE_PROJECT_PATH>"
Gemini CLITerminal
gemini mcp add --scope user -e UE_PROJECT_PATH=<UE_PROJECT_PATH> enginewire node -- '<ABSOLUTE_PATH_TO_CLONE>/dist/cli.js'

Settings 5

UE_PROJECT_PATH Required: Project folder or .uproject file. The proxy reads the capability token from Saved/MCP/capability-token under it, unless MCP_AUTOMATION_CAPABILITY_TOKEN is set.
MCP_AUTOMATION_CAPABILITY_TOKEN secret Optional: The capability token itself, used instead of the token file (for Docker or when the project folder is out of reach).
UNREAL_MCP_URL Optional: The plugin's /mcp endpoint the proxy forwards to. Default http://127.0.0.1:3000/mcp.
UNREAL_MCP_PROXY_CACHE Optional: File where the proxy keeps the editor's last tool list. Defaults to unreal-mcp/proxy-<port>.json in the user's cache folder.
LOG_LEVEL Optional: debug, info, warn or error. Logs go to stderr. Default info.

What it does

EngineWire, published on npm as unreal-engine-mcp-server, hooks an MCP client up to an Unreal Editor (5.0 to 5.8) that you have open. A C++ editor plugin does the actual work on the editor's game thread, and it serves MCP over Streamable HTTP itself, on 127.0.0.1:3000 by default. Clients that can talk HTTP connect to it directly. The npm package is only a small stdio proxy for clients that launch a local command, such as Claude Desktop. While the editor is closed the proxy answers NOT_CONNECTED and keeps the client's session alive, then picks up again once the editor comes back.

You get a single tool, `unreal`. The model searches it in plain words, asks for one capability's exact parameters, then runs it. Over 400 capabilities sit behind it: assets and materials, actors, Blueprints and UMG widgets, levels and World Partition, landscapes, PCG, Geometry Script, animation, Niagara, the Gameplay Ability System, AI, audio, Sequencer, networking, and editor control such as Play-In-Editor, screenshots, logs, builds, tests and Python. Deletes and a few risky writes only go through with a consent grant that the plugin checks.

The old 23 tools still exist inside the plugin, but clients no longer see them, and a direct call by an old name gets a refusal that points to the new route. If you want the 23-tool version you have to pin 0.5.30 on both sides. One thing the README skips: the proxy gives each editor call up to 10 minutes before it gives up (src/proxy/native-proxy.ts).

What it needs

To run it yourselfNode.js 20.19+
Runs onmacOS, Windows, Linux
Also
  • Unreal Editor 5.0 to 5.8 open with the EngineWire plugin

Install the EngineWire plugin into the project from Fab (no compiler needed), from a release zip, or from the repository's plugins folder. Building from source needs a project with C++ code. Blueprint-only projects use Fab or a prebuilt zip for the same engine minor and platform. The Fab build ships with Enable Native MCP Server off, so tick it in Project Settings and restart the editor. For the HTTP route, read the token from <Project>/Saved/MCP/capability-token and send it as X-MCP-Capability-Token. Node.js 20.19 or later is needed only for the stdio proxy. The Docker image is built from the repository with docker build and needs host networking (Linux) plus the token.

Limits

  • Platform Needs an open Unreal Editor 5.0 to 5.8 with the EngineWire plugin, reached on 127.0.0.1 unless you tunnel or proxy it
  • Limit The 0.6 proxy expects a 0.6 plugin. A 0.5.x plugin serves its 23 separate tools, and keeping them means pinning unreal-engine-mcp-server@0.5.30
  • Limit The README's init and doctor subcommands are not in 0.6.0: src/cli.ts starts the proxy whatever arguments it is given
  • Limit The README says the token goes to another machine only with UNREAL_MCP_ALLOW_REMOTE_TOKEN=1, but the 0.6.0 proxy never reads that setting and sends it to whatever UNREAL_MCP_URL names
  • Limit Without UE_PROJECT_PATH or MCP_AUTOMATION_CAPABILITY_TOKEN the proxy sends no token, and the plugin refuses it while Require Capability Token is on (the default)
  • Platform Prebuilt plugin binaries load only in the engine minor version and platform they were built for
  • Not covered Capabilities that rely on optional engine plugins such as PCG, Control Rig or MetaSound are skipped when those plugins are missing
  • Limit The Fab build ships with the native MCP server turned off, so both routes fail until it is enabled
  • Limit The README does not mention the Smithery-hosted endpoint, and a hosted copy cannot reach an editor on your machine

It needs a running editor on the same machine unless LAN access is enabled on both sides. The 0.5.30 server and plugin must match: the README's main page and plugin downloads are for 0.6, which needs `unreal-engine-mcp-server@beta` and the EngineWire plugin, and 0.5.30 does not work with a 0.6 plugin. Prebuilt plugin binaries load only in the engine minor version and platform they were built for. Some features need optional engine plugins, such as PCG, Control Rig or MetaSound, and are skipped when those plugins are missing. The README does not document the Smithery-hosted endpoint, and a hosted copy cannot reach an editor on your machine.

Who it suits

Suits Unreal developers and technical artists who want an assistant working in an open editor: placing actors, wiring Blueprints, setting up materials, effects or AI, and checking the result with screenshots and Play-In-Editor. Clients that speak HTTP can skip Node.js and connect to the plugin directly. Use the npm proxy for Claude Desktop and other command-only clients, or when you want a session to survive editor restarts. It needs the engine and a running editor, so it does nothing for headless builds or machines without Unreal. It is a community project, not Epic's. It can delete assets and run Python inside the editor, so keep the project under source control.

Tools 1

1 can delete or overwrite. A ? marks an optional parameter.

unreal deletes
Search, describe and run the editor's capabilities, or switch internal tool groups on and offoperation: enum

Similar servers