---
type: source-digest
topic: ue-mcp-strategy
status: active
created: 2026-06-16
updated: 2026-06-16
source_notes:
  - external
derived_from:
  - web-research
confidence: high
source_url: https://www.unrealengine.com/en-US/blog/unreal-property-system-reflection
---
# ue-reflection-and-scripting-apis

## Why This Matters
The thesis "an MCP is cheap because UE is already introspectable" rests entirely on whether UE genuinely exposes a machine-readable model of itself. It does — but the surface is opt-in, editor-time, and Blueprint-gated, and the existing community MCP servers are *bridges built on top of it*, not zero-cost. This digest grounds both the support and the caveats.

## Key Takeaways
- **Reflection is real and foundational.** C++ normally keeps no runtime metadata about a class's members. UE re-adds it via opt-in macros (`UCLASS`, `USTRUCT`, `UFUNCTION`, `UPROPERTY`, `UENUM`). The Unreal Header Tool (UHT) harvests annotated headers at compile time and generates C++ reflection data + thunks (`.generated.h`). [Noland / Epic]
- **It is OPT-IN, not automatic.** Only types/members you annotate become visible. The reflection layer is a curated surface, not a full mirror of the codebase. This is the single biggest qualifier on "the surface already exists."
- **Blueprints, Python, and Editor Utility Widgets all ride the SAME layer.** `UFUNCTION` exposes a C++ function to Blueprint; `UPROPERTY` makes a variable serializable/replicable/Blueprint-accessible. [NON-OBVIOUS] One annotation surface powers all three scripting paths.
- **The Python `unreal` module is dynamic, not pre-generated.** It "exposes nearly everything exposed from C++ to Blueprints" and auto-reflects new plugins/classes as they're enabled. So "what an agent can touch" == "what's exposed to Blueprint." [Epic Python docs]
- **Remote Control API = a web server inside the engine.** Runs HTTP/WebSocket REST-like endpoints; can call any Blueprint/Python-exposed function and read/write exposed properties. Built for virtual production (broadcast/film). Disabled by default in packaged builds.
- **Cooking is the editor→runtime gate.** Editor stores assets in flexible formats; the cook (a stage of UAT's `BuildCookRun`, run by the editor in a special mode) converts them to platform-specific, optimized, shippable formats. Anything an MCP authors must survive the cook to be real shippable content, not a runtime hack.
- **Verse + UEFN = the substrate Epic fully controls.** Functional-logic language (Simon Peyton Jones / Tim Sweeney), shipped Mar 2023. Notably, Epic deliberately did NOT bring Blueprints to UEFN — Verse is the sanctioned scripting path. [NON-OBVIOUS] If Epic wants a controlled authoring substrate, it already built one outside the UObject/Blueprint reflection world.
- **Existing UE MCP servers already work (2025).** GenOrca (224 actions / 19 domains, `execute_python` escape hatch), chongdashu (C++ plugin over TCP + FastMCP), remiphilippe (Go binary, UE5.7, 49 tools), ChiR24 (C++ Automation Bridge), unrealmcp (280 commands). [NON-OBVIOUS] The `execute_python` "escape hatch" in these servers IS the reflection layer — proof the surface is load-bearing, and that the rest of the tool list is hand-authored ergonomics on top.

## Entities
- **UObject / UClass / UStruct / UFunction / UProperty** — the reflection type hierarchy (UField → UStruct → UClass/UScriptStruct/UFunction).
- **UHT (Unreal Header Tool)** — compile-time harvester of annotations.
- **UBT (Unreal Build Tool)** — tracks which modules have reflected types, invokes UHT.
- **Python Editor Script Plugin** — embeds Python 3.11.8; exposes the dynamic `unreal` module.
- **Remote Control API / WebControl** — in-engine web server; `WebControl.StartServer`.
- **UAT `BuildCookRun`** — the build→cook→package→deploy→run pipeline.
- **Verse / UEFN** — Epic's controlled authoring language + Fortnite editor.
- **GameMode (server-only) / GameState (replicated) / Actor / Component** — gameplay framework; replication driven by `UPROPERTY(Replicated)` (reflection again).

## Sources (all URLs used)
- Unreal Property System (Reflection), Epic blog (Michael Noland): https://www.unrealengine.com/en-US/blog/unreal-property-system-reflection
- Noland original: http://michaelnoland.com/unreal-property-system-reflection/
- Scripting the Unreal Editor Using Python: https://dev.epicgames.com/documentation/unreal-engine/scripting-the-unreal-editor-using-python
- Python Editor Script Plugin: https://dev.epicgames.com/documentation/unreal-engine/API/PluginIndex/PythonScriptPlugin
- Remote Control for Unreal Engine: https://dev.epicgames.com/documentation/unreal-engine/remote-control-for-unreal-engine
- Build Operations: Cooking, Packaging, Deploying: https://dev.epicgames.com/documentation/unreal-engine/build-operations-cooking-packaging-deploying-and-running-projects-in-unreal-engine
- Packaging Your Project: https://dev.epicgames.com/documentation/unreal-engine/packaging-your-project
- Verse (programming language), Wikipedia: https://en.wikipedia.org/wiki/Verse_(programming_language)
- Verse Language Get Started in UEFN: https://dev.epicgames.com/documentation/en-us/fortnite/verse-language-get-started-in-unreal-editor-for-fortnite
- Client-Server Model (replication/authority): https://dev.epicgames.com/documentation/en-us/unreal-engine/client-server-model
- Tom Looman, Unreal Gameplay Framework Guide: https://tomlooman.com/unreal-engine-gameplay-framework/
- GenOrca/unreal-mcp: https://github.com/GenOrca/unreal-mcp
- chongdashu/unreal-mcp: https://github.com/chongdashu/unreal-mcp
- remiphilippe/mcp-unreal: https://github.com/remiphilippe/mcp-unreal
- ChiR24/Unreal_mcp: https://github.com/ChiR24/Unreal_mcp

## Open Questions
- Does Remote Control's "disabled in packaged builds" stance signal Epic treats the agent surface as an *editor-time authoring* tool, not a runtime one? (Likely yes — relevant to whether the MCP authors shippable content vs. live-pokes a session.)
- How much of an MCP's value is the curated tool definitions vs. the raw reflection? The community servers suggest the tool-authoring layer is the real labor, not the introspection.
- Is Verse, not the UObject reflection surface, the place Epic would actually invest an agent interface — since it controls Verse end-to-end and chose it over Blueprints for UEFN?
