UE4.25 MCP server for Unreal Editor via Python Remote Execution (OHD mod-kit retarget).
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent — or use 1-click editor setup below.
One-click editor setup isn’t available for this listing yet — we don’t have a confirmed install command, and we’d rather show nothing than point your editor at the wrong package or host. Follow the project’s own setup instructions, linked above.
UE4.25.4-first MCP server for Operation Harsh Doorstop modding via Unreal Python Remote Execution (stdio transport)
Fork of runreal/unreal-mcp, heavily refactored UE4-first (via a UE4.27.2 stage) and retargeted here to UE4.25.4 for the OHDCore Mod Kit: same transport and tool surface, with version pins, docs links, and Python-dialect constraints adjusted for the kit's embedded Python 2.7.14. Port, tool, docs, and smoke-test work were developed with assistance from OpenAI Codex.
[!NOTE] Still under active development — expect bugs, rough edges, and UE4.25-specific limitations. Published package:
unreal-mcp-ue4-for-ohd· Registry name:io.github.RibatTRW/unreal-mcp-ue4-for-ohd
[!CAUTION] Not an official Epic Games project. Any connected MCP client can inspect and modify your open editor session — use a disposable test project first, especially for asset or world-generation tools.
| Need | Pin |
|---|---|
| Unreal Engine | 4.25.4 via OHDCore Mod Kit: engine tree HDEngine/, project HDGame/HarshDoorstop/HarshDoorstop.uproject, launched with LaunchEditor.bat |
| Runtime | Node.js 20+, npm |
| Client | Any MCP client (Codex, Claude Code, Claude Desktop, Cursor, Copilot in a supported IDE) |
| Editor payloads | Python 2.7 only (kit embeds 2.7.14): no f-strings, single-argument print(), no pathlib-era idioms |
Reference: Unreal Engine Python API 4.25. No custom C++ plugin is required — the server uses the editor's built-in Python Remote Execution. UE5-only scripting features are not reintroduced; unreliable graph/binding flows are excluded from the MCP surface or return a clear message instead of failing silently.
Autonomous agents setting up unattended: follow the ordered guide in docs/agent-setup.md.
Local source checkout:
One install, then one line per client (global vs local-checkout variants). All clients call the same 34 tools over stdio (3 session-info + 3 direct actor CRUD primitives + 28 manage_* namespaces):
| Client | Global install | Local checkout |
|---|---|---|
| Claude | claude mcp add --scope user unreal-mcp-ue4-for-ohd -- unreal-mcp-ue4-for-ohd | claude mcp add --scope user unreal-mcp-ue4-for-ohd -- node /absolute/path/to/unreal-mcp-ue4-for-OHD/dist/bin.js |
| Codex | codex mcp add unreal-ue4 -- unreal-mcp-ue4-for-ohd | codex mcp add unreal-ue4 -- node /absolute/path/to/unreal-mcp-ue4-for-OHD/dist/bin.js |
| Copilot | .vscode/mcp.json → { "servers": { "unreal-ue4": { "command": "unreal-mcp-ue4-for-ohd", "args": [] } } }, then start the server from the MCP config UI and confirm unreal-ue4 is in the tools picker | same file with "command": "node", "args": ["/absolute/path/to/unreal-mcp-ue4-for-OHD/dist/bin.js"] |
Copilot docs: Extending GitHub Copilot Chat with MCP servers · About Model Context Protocol in GitHub Copilot
This fork was renamed to its own identity so it can ship independently of upstream. Upstream credit: the UE4 line derives from conaman/unreal-mcp-ue4 (itself forked from runreal/unreal-mcp).
[!WARNING]
npm install -g unreal-mcp-ue4installs upstream's UE4.27 build, not this fork. For the OHD/UE4.25.4 retarget, install the renamed package instead.
| Before (upstream name) | After (this fork) |
|---|---|
npm install -g unreal-mcp-ue4 | npm install -g unreal-mcp-ue4-for-ohd |
npx unreal-mcp-ue4 | npx unreal-mcp-ue4-for-ohd |
unreal-mcp-ue4 --version | unreal-mcp-ue4-for-ohd --version |
Registry io.github.conaman/unreal-mcp-ue4 | Registry io.github.RibatTRW/unreal-mcp-ue4-for-ohd |
Re-add the server in your client (local server labels such as unreal-ue4 are unchanged — only the command changes):
Copilot .vscode/mcp.json: change "command" to "unreal-mcp-ue4-for-ohd", keeping the unreal-ue4 server key.
Verified live against the kit. In the OHD editor (LaunchEditor.bat → HarshDoorstop.uproject):
Edit -> Plugins: enable Python Editor Script Plugin (ships disabled). Editor Scripting Utilities is already enabled — no action needed. Enable SequencerScripting (ships disabled) only for advanced manage_sequence actions: actor binding, track/key edits, camera cuts, playback ranges, speed-track analysis.Edit -> Project Settings -> Plugins -> Python → enable Enable Remote Execution (endpoint 239.0.0.1:6766, bind 0.0.0.0, raise Multicast TTL from kit default 0 to 1). Restart again if needed.Plugins/*, HDAssets, or engine content.Connection env overrides (UNREAL_MCP_*):
| Var | Default |
|---|---|
UNREAL_MCP_BIND_ADDRESS / UNREAL_MCP_COMMAND_ADDRESS | first non-internal IPv4 |
UNREAL_MCP_COMMAND_PORT | 6776 |
UNREAL_MCP_MULTICAST_ADDRESS / UNREAL_MCP_MULTICAST_PORT / UNREAL_MCP_MULTICAST_TTL | 239.0.0.1 / 6766 / 1 |
UNREAL_MCP_RETRY_COUNT / UNREAL_MCP_RETRY_DELAY_MS | built-in retry policy |
manage_* namespace tools (action-specific input schemas are exposed over MCP). Namespaces dispatch through action + params. Canonical reads: manage_editor.project_info (project), manage_editor.map_info + manage_level.world_outliner (map/level). Discover the surface with manage_tools (list_namespaces).get_unreal_*, editor_create/update/delete_object) are low-level primitives for session path discovery and actor CRUD.manage_editor.run_python is the escape hatch for debugging, prototyping, and UE4.25 API gaps — still Python 2.7-compatible.First run: open the kit project and wait for load → confirm plugins + remote execution → npm install -g unreal-mcp-ue4-for-ohd (or npm run build) → open/start the client session → run something read-only:
unreal-mcp-ue4-for-ohd --version (prints version, no stdio transport)manage_editor + action: "project_info" / "map_info" · manage_level + "world_outliner" · manage_tools + "list_namespaces"Get project info from the unreal-ue4 server. · List the actors in the current level. · Spawn a StaticMeshActor named TestCube at 0,0,100.What the server can do: read project/map/asset/actor info; spawn, inspect, move, delete level actors; search assets and inspect references/metadata; create DataAsset/StringTable and other common UE4 data assets; create/edit Blueprint assets and Widget Blueprint trees where UE4.25 Python exposes the APIs.
One call sets up the EUW (Editor Utility Widget) sidebar tab end to end — an EUW asset plus a WebBrowser child hosting a web page beside the viewport:
manage_widget + action: "setup_sidebar_tab", params widget_blueprint_path (e.g. /Game/DSHSidebar), url (any page URL; the DSH web GUI is the convention), use_template: true (missing target is duplicated from the golden template — full-fill DSHBrowser + verified On Key Down shortcut fix — instead of built from scratch; re-runs are idempotent, reusing existing targets while refreshing URL/layout).
No reviews yet — be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/unreal-mcp-ue4-for-ohd)<a href="https://allmcps.com/mcp/unreal-mcp-ue4-for-ohd"><img src="https://allmcps.com/api/badge/unreal-mcp-ue4-for-ohd?style=directory" alt="Unreal MCP Ue4 For Ohd on AllMCPs" /></a>