optional-skills/creative/unreal-mcp/SKILL.md
Companion skill for the unreal-engine entry in the Hermes MCP catalog. The
MCP server (Epic's official, experimental "Unreal MCP" plugin, internal id
ModelContextProtocol) runs INSIDE the Unreal Editor process and exposes
editor functionality as typed tools. This skill teaches how to drive it well:
discovering the live tool surface, sequencing calls safely, translating
plain-English asks into scenes that actually look good, and verifying work
visually. The user should never need to touch the editor beyond launching it.
Use when the user wants anything done in Unreal Engine: build or dress a level, spawn/move/delete actors, set up lighting and atmosphere, create or tune material instances, frame a camera shot, capture screenshots or renders, import assets, inspect the scene or UI, run automation tests, or script the editor. Works for single actions ("make the sun golden hour") and for complete multi-step projects ("build me a moody forest clearing with a campfire and render a shot of it").
Don't use for: DCC-style mesh modeling/sculpting (use blender-mcp and
import the result), or for editing Unreal C++ project source (that's normal
code work — use the terminal; this skill is about the live editor).
Two halves, in this order: the editor side must be up before Hermes connects.
http://127.0.0.1:8000/mcp
(port/path configurable in the same panel; server name is unreal-mcp).
To start manually instead, run ModelContextProtocol.StartServer in the
editor console (backtick key).hermes mcp install unreal-engine
This writes the mcp_servers.unreal-engine HTTP entry pointing at
http://127.0.0.1:8000/mcp and probes the live server for its tools. Run it
while the editor + server are up so the probe sees the real surface. If the
user changed port/path in Editor Preferences, edit the url in
~/.hermes/config.yaml under mcp_servers.unreal-engine to match.
Do NOT use ModelContextProtocol.GenerateClientConfig for Hermes — that
writes .mcp.json-style files for Claude Code/Cursor/etc. Hermes connects
from config.yaml via the catalog entry.
ModelContextProtocol.StartServer manually).mcp_unreal_engine_*. If
they're missing: editor wasn't up first — start it, then open a new
Hermes session.mcp_unreal_engine_list_toolsets and confirm toolsets
come back.By default the plugin runs in tool-search mode: tools/list returns only
three meta-tools, and every real tool is reached through them. Through Hermes
they appear as:
| Hermes tool | Purpose |
|---|---|
mcp_unreal_engine_list_toolsets | Names + descriptions of every registered toolset |
mcp_unreal_engine_describe_toolset | Full JSON schemas for one named toolset's tools |
mcp_unreal_engine_call_tool | Invoke a named tool with arguments, get the result |
The discovery walk, always in this order:
list_toolsets → see what capability groups this project actually has
(the surface is project-dependent: enabled plugins, Game Feature Plugins,
and any custom toolsets all contribute). Names come back FULLY QUALIFIED
(editor_toolset.toolsets.scene.SceneTools,
EditorToolset.EditorAppToolset) — use them verbatim as toolset_name.describe_toolset on the group you need → read the real parameter
schemas. Never guess parameter names — schemas are the contract.call_tool with the qualified toolset name, the SHORT tool name
(find_actors, not the dotted form), and arguments matching the schema.Cache what you learn for the session; re-list only after the editor side
changes (new plugin enabled, toolset authored, RefreshTools run).
The alternative eager mode (Enable Tool Search off in Editor Preferences)
advertises every tool as its own mcp_unreal_engine_<tool> entry. Discovery
then happens at hermes mcp install/configure time instead. Tool-search
mode is the default and what this skill assumes; it also keeps schema tokens
out of every API call, so prefer it.
See references/tool-surface.md for the shipped toolset catalog, authoring
custom toolsets, and the full plugin configuration/console-command reference.
Every Unreal task follows the same loop:
call_tool → AgentSkillToolset.ListSkills): a matching project skill's
instructions override this skill's generic defaults.call_tool.
The server executes tools serially on the game thread — a big
monolithic operation freezes the editor UI until it finishes and risks
client timeouts. Exception: for loops over 5+ homogeneous operations,
ONE ProgrammaticToolset.execute_tool_script call batches them
server-side without breaking the serial rule
(references/advanced-workflows.md).mcp_unreal_engine_* calls in one turn — Hermes runs batched calls
concurrently, and parallel calls against the game thread deadlock or
fail. Strictly one call, await result, next call. This overrides the
general parallel-tool-calls guidance.references/tool-surface.md for
the capture options; vision_analyze the image — you are the art
director, judge it)./Game/...), file
locations of captures/renders.Rules of the world while you work:
references/scene-craft.md./Game/Folder/Asset.Asset for
project content, /Engine/BasicShapes/Cube.Cube for engine primitives.intensity: 10, and physical values blow
them out (references/scene-craft.md has the numbers,
references/pitfalls.md #12b has the calibration rule).The user gives intent, not specs. Translate before you build:
MEDIA: path), plus a short
summary of what exists in the level and where it was saved.references/recipes.md has complete worked builds (exterior daylight scene,
moody interior, golden-hour cinematic + render, asset import & placement)
with the exact call sequences and values.
Load on demand; keep SKILL.md-level rules in mind throughout.
| Reference | Contents |
|---|---|
references/tool-surface.md | Shipped toolsets catalog, discovery protocol detail, plugin console commands/CVars/flags, screenshot & capture paths, MCP Inspector debugging, extending with custom Python/C++ toolsets |
references/advanced-workflows.md | Sophisticated workflows, live-verified: ProgrammaticToolset batching, Blueprint DSL authoring loop (create→DSL→compile→spawn), PIE test sessions, Sequencer orientation (140 tools), LogsToolset self-debugging, automation testing, semantic asset search, config settings, per-situation decision table |
references/scene-craft.md | Numeric cheat sheet: physical light intensities, color temperatures, exposure/EV100, fog densities, mood recipes (noon/golden hour/overcast/night/interior), scale tables, content path conventions |
references/recipes.md | End-to-end worked builds with exact call sequences |
references/pitfalls.md | Setup, runtime, and workflow pitfalls with fixes — read before your first session and whenever something misbehaves |
mcp_unreal_engine_* tools = wrong order.mcp_servers.unreal-engine.timeout in ~/.hermes/config.yaml for
render/import-heavy sessions.ModelContextProtocol.RefreshTools in the editor console
and re-list_toolsets. New C++ UFUNCTIONs need a full editor restart —
Live Coding won't surface them.describe_toolset over memory, including this skill's
examples. When docs and the live schema disagree, the live schema wins.list_toolsets returns toolsets at session start (connection healthy)