Unreal MCP
Epic GamesOfficialPublished by Epic Games
- Skill
- Tool integration
- Software development
- MIT
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The unreal-mcp skill enables an AI agent to interact directly with a running Unreal Engine editor instance. By leveraging the Model Context Protocol (MCP), the agent can discover and invoke various engine toolsets to perform tasks such as spawning actors, editing assets like Blueprints or Materials, and managing project state. It is designed to streamline development by allowing the agent to execute commands directly in the editor, reducing the need for manual intervention.
What it does
- Discovers and invokes Unreal Engine toolsets for live editor interaction.
- Supports spawning, moving, and transforming actors within a level.
- Enables creation and modification of Blueprints, Widgets, Materials, and other assets.
- Facilitates Live Coding recompilation for C++ changes directly from the agent.
- Allows reading and writing of actor properties and project-specific data.
- Integrates with project-specific Agent Skills for custom workflow automation.
When to use it
- When you need to perform automated changes to an Unreal Engine project.
- When you want to query live editor state or inspect actor properties.
- When you need to trigger engine-side tasks like asset creation or C++ recompilation.
- When working within a project that has defined custom Agent Skills for specific tasks.
Advantages
- Reduces context switching by performing tasks directly inside the Unreal Editor.
- Maintains a small context window through dynamic tool discovery.
- Supports persistent connections via an optional proxy to survive editor restarts.
- Enables programmatic control over complex engine systems like GAS or Sequencer.
Usage examples
- “Spawn a new BP_DoorActor at the current PlayerStart location.”
- The agent identifies the relevant toolset, calls the spawn tool with the specified actor class and location, and confirms the actor is placed in the level.
- “Recompile my C++ changes using Live Coding.”
- The agent invokes the LiveCodingToolset to trigger a recompile and reports the status of the build once finished.
- “Check if bIsLocked is true on the selected door actor.”
- The agent queries the actor's properties via the MCP connection and returns the current value of the boolean.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/epicgames/unreal-mcp/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip unreal-mcp.zip -d .agents/skills
Documentation by Epic Games
Unreal MCP
You are wired into a live Unreal Editor through the unreal-mcp MCP server. The server exposes hundreds of tools across 30+ toolsets (actors, blueprints, materials, Niagara, Sequencer, Control Rigs, GAS, automation tests, Live Coding, and more) registered through Unreal's ToolsetRegistry. Use it to inspect and mutate live editor state instead of telling the user to do it manually.
You don't need to memorize tool names. The flow below has you discover them on demand.
The connection can appear as unreal-mcp-proxy when the engine's optional proxy is installed. Use that connection for Unreal tools. The proxy keeps Unreal's native tool definitions; it does not introduce replacement discovery or dispatch tools. See references/setup.md for installation.
First step every time: discover the tool you need, then dispatch it via call_tool
Tool search is on by default, so the MCP server advertises only three meta-tools for the whole session: list_toolsets, describe_toolset, and call_tool. Tool names like BlueprintTools.create or SequencerTools.create_level_sequence are not in tools/list. They are dispatched server-side through call_tool and never registered as native MCP tools. This is deliberate. It keeps your context window small and the prompt cache warm.
When you start work:
Call
list_toolsetsto see what's registered, thendescribe_toolseton the candidate(s) to read their tool schemas. If you already know which toolset you need (the user said "make a Blueprint" → the Blueprint toolset), skip the listing and go straight todescribe_toolsetto confirm the available tools and their signatures.Invoke the tool with
call_tool: passtoolset_name,tool_name, and anargumentsobject matching the schema you just read. The result comes back on the same turn. No extra round-trip needed.Top-level dispatch (omitting
toolset_name) is reserved for tools registered directly on the MCP server and is rejected forcall_toolitself.
Missing tools do not prove that the editor is stopped. Check the configured unreal-mcp or unreal-mcp-proxy connection and follow references/operations.md. A proxy can stay connected while Unreal is unavailable, and a client can keep a stale catalog after recovery. unreal_mcp_status reports the proxy's session state, not current reachability. Verify recovery with a read-only Unreal tool call. For first-time configuration, follow references/setup.md.
Safety rules
Follow these rules to protect live editor state.
Save first, then save again. Tell the user to save the project (or call
AssetToolssave APIs) before any bulk change, and again after. MCP edits are not always undoable, especially across compilation boundaries. Treat anything that touches multiple assets as a destructive operation that needs a recovery point.Wait for compilation. If C++ or shader compilation is in flight, your tool calls will hang or fail in confusing ways. To rebuild C++ from the running editor, drive
LiveCodingToolset.CompileLiveCodingand wait on its result instead of asking the user to switch to the IDE. That tool blocks until the compile actually finishes and surfaces MSVC diagnostics.Control concurrent calls. MCP accepts concurrent requests and handles dispatch synchronization. Asynchronous tools can overlap, and request order does not guarantee execution or completion order. Serialize dependent calls and mutations that can affect the same asset or editor state. Use parallel calls only for independent work when the tools support safe overlap. Multiple agents can use one editor, but their conflicting changes can cause adverse effects.
Always check the result. Blueprint compilation, widget creation, material edits: many tools return a status that flips between success and failure with no exception thrown on the wire. Read the response before moving on. Treat anything that isn't an explicit success as a stop.
Mind PIE. Editor-only tools (asset creation in particular) behave differently while Play-in-Editor is active. If a result looks wrong, check whether PIE is running and stop it if so.
Project skills
A project or plugin can register Agent Skills: named bundles of instructions that capture workflow knowledge the agent wouldn't otherwise have (a project's naming conventions, folder layout, required setup steps, or the canonical sequence for a multi-step task). These are separate from the toolsets themselves and are reached through the agent skill toolset (AgentSkillToolset), not through list_toolsets.
Check for them the same way you discover tools, and do it whenever you start unfamiliar work in a project rather than just once:
Call
AgentSkillToolset.ListSkills(throughcall_tool) to see what skills the project registers. Each entry carries a short description of what it covers and when it applies.If a skill's description looks relevant to what the user asked, call
AgentSkillToolset.GetSkillson it to load the full instructions, then follow them.If nothing matches, fall back to the tool-discovery flow above.
A relevant project skill's instructions take precedence over your generic defaults: it exists precisely because the project's way of doing something differs from the obvious one. (Authoring or editing these skills is a separate task covered by the unreal-skill companion skill below.)
Reference files
references/setup.md: first-time MCP server setup, client configuration, and optional proxy installation.references/operations.md: console commands, settings, proxy recovery, and troubleshooting for missing tools or failed calls.
Companion skills
create-toolset: use when authoring a new toolset or adding tools to an existing one. Covers design principles, C++ and Python conventions, registration, error handling, and testing.unreal-skill: use when creating, updating, or reviewing an Agent Skill. Covers what makes a good skill and how to structure one.
Files
- ATTRIBUTION.mdAdded by AutoGineer919 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md6.9 KiB
- references/operations.md7.3 KiB
- references/setup.md6.9 KiB
references/operations.md
Operations: Console Commands, Settings, Recovery
Read this when something is misbehaving with the MCP server (tools missing, port collision, stale tool registry), or when you need a non-default configuration.
Console commands
Run these from the Unreal Editor console (~).
| Command | Use it for |
|---|---|
ModelContextProtocol.StartServer [port] | Start the MCP server. Pass a port to override the default (e.g. when 8000 is in use). |
ModelContextProtocol.StopServer | Stop the server. Useful if the registry is in a bad state and you want a clean restart. |
ModelContextProtocol.RefreshTools | Re-register every toolset. Run this after the user enables a new toolset plugin. |
ModelContextProtocol.GenerateClientConfig <client> | Regenerate the per-client config file. Args: ClaudeCode, Cursor, VSCode, Gemini, Codex, All. |
Tool-search mode
tools/list has two modes, controlled by the bEnableToolSearch UPROPERTY on UModelContextProtocolSettings (default true):
True(default):tools/listreturns onlylist_toolsets,describe_toolset,call_tool. Toolset tools are dispatched server-side throughcall_tooland stay out of the prompt; the catalog never changes mid-session, so the prompt cache stays warm.False: every toolset tool is registered as a native MCP tool at startup, schemas visible upfront. Used by the hash-mapping commandlet.
Override in the same .ini used for bAutoStartServer:
[/Script/ModelContextProtocolEngine.ModelContextProtocolSettings]
bEnableToolSearch=FalseProxy recovery
With the optional proxy, the client connects to unreal-mcp-proxy instead of directly to unreal-mcp. The proxy keeps that client session open while it reconnects to Unreal. Do not replace it with a second direct connection during normal recovery.
unreal_mcp_statusreports whether the proxy holds an initialized upstream session. It does not test current reachability.Visible tools can come from a stored catalog. Verify live access with a read-only Unreal tool call.
With no stored catalog and no upstream session, the proxy exposes only
unreal_mcp_status. After recovery, it sendsnotifications/tools/list_changed.Clients must fetch
tools/listagain after that notification. A client that ignores it can keep the status-only catalog, or an older cached catalog. Once Unreal is reachable, use the client's reconnect or configuration-reload action if available. Otherwise, restart the client to obtain the catalog. This is a client refresh limitation, not the normal proxy recovery workflow.Killing the proxy closes the client's STDIO connection.
Transport closedthen needs client reconnection; starting an unrelated proxy process cannot repair that connection. Ask before stopping active proxies.
If calls still fail, check the editor's MCP startup log, the configured endpoint, and proxy stderr. With multiple editors, identify which process owns the configured port. A running editor alone does not prove that the proxy targets its MCP server. Follow the recorded .mcp.json entry and the engine's Extras/Proxy/README.md for your build's transport limits.
Identify the editor
With several editors running, confirm which one answers before making changes.
Recent engine builds include instance metadata in the
initializeresult, and inserver/discoveron protocol2026-07-28, under_meta["com.epicgames.unrealengine/instance"]:processId,engineVersion,engineBranch,engineChangelist,projectName,engineDirectory,projectDirectory,projectFile. Probe the configured endpoint and compareprojectDirectoryorengineDirectorywith the workspace you expect.That checks the port, not your session: a client that loaded an older configuration can still reach a different editor. If
execute_pythonis available, runimport os; print(os.getpid())once and compare it withprocessId.Without the metadata, find the process that owns the configured port and check its executable path.
Troubleshooting matrix
| Symptom | What to do |
|---|---|
Unreal tools are missing, or list_toolsets errors | Check for both unreal-mcp and unreal-mcp-proxy in the client configuration. Check the editor's MCP startup log and configured endpoint. For a proxy connection, follow Proxy recovery above before concluding that the editor is stopped. |
| Editor logs "Failed to listen on port" | Another process holds the default port. Change ServerPortNumber in the per-user EditorPerProjectUserSettings.ini (see setup.md), or pass -ModelContextProtocolPort=<port> on the next launch; restart the editor, and re-run ModelContextProtocol.GenerateClientConfig ClaudeCode to refresh .mcp.json. With several editors, give each workspace its own port (setup.md step 5). |
A toolset you expect (e.g. NiagaraTools) is missing | Run ModelContextProtocol.RefreshTools. If still missing, the toolset's plugin may not be enabled in the .uproject. Check there. |
| Tool calls hang or return errors | Editor may be busy compiling, loading a level, or in PIE. Wait and retry. For long compiles, prefer LiveCodingToolset.CompileLiveCoding. It returns when the compile actually finishes. |
AIAssistantToolset.GetDockedContext returns empty | The Claude Code tab must be docked inside an asset editor (Blueprint, Material, etc.) to provide docked context. If undocked, that tool has nothing to report. |
| Concurrent tool calls produce conflicting results | MCP accepts concurrent requests and handles dispatch synchronization. Serialize dependent calls and mutations that affect the same state. Use parallel calls only for independent work when the tools support safe overlap. |
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs an MCP server
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- Epic Games
- Publisher
- Epic Games (Official)
- Source
- EpicGames/unreal-engine-skills-for-claude-code-plugin · skills/unreal-mcp · commit 0e27bde
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Epic Games or Epic Games.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download unreal-mcp.zip