Labsco
kevinpbuckley logo

VibeUE

β˜… 437

from kevinpbuckley

Unreal Engine MCP

πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedFreeAdvanced setup
<div align="center">

VibeUE β€” AI-Powered Unreal Engine Development

🧩 MCP Expansion + AI Editor Toolset for Unreal Engine 5.8+

https://www.vibeue.com/

Unreal Engine MCP License: MIT Discord Donate

</div>

VibeUE is the MCP Expansion + AI Editor Toolset for Unreal Engine 5.8+. Unreal 5.8 added a built-in MCP server and AI toolsets; VibeUE is an MCP Expansion that plugs straight into them and adds a deep AI Editor Toolset β€” a library of editor capabilities β€” Blueprints, materials, landscape, foliage, animation, Niagara, UMG, audio, StateTree, gameplay tags, input, UVs, performance/profiling, and more β€” registered into the engine's own ToolsetRegistry and ModelContextProtocol server, plus rich domain skills served through Unreal's native AgentSkill system. Any MCP-capable agent (Claude Code, Cursor, Copilot, …) drives your editor through Unreal's standard MCP endpoint.

⚠️ VibeUE requires Unreal's native MCP to be set up first β€” enable the Unreal MCP plugin (which auto-enables Toolset Registry) and the Editor Tools plugin, then start the MCP server. Follow Epic's guide: Unreal MCP in the Unreal Editor. VibeUE then expands that endpoint β€” no separate server and no in-editor chat. A free API key (set in Editor Preferences β†’ Plugins β†’ VibeUE) unlocks the real-world terrain tools; everything else works without one.


✨ What VibeUE adds

Unreal 5.8 ships its own AI toolsets (Blueprints, materials, actors, assets, meshes, data tables, …). VibeUE complements them β€” it focuses on the domains and depth the engine doesn't cover:

  • Terrain & world β€” Landscape sculpting/heightmaps/splines, landscape auto-materials + RVT, Foliage, procedural FPS Map Blockout, and real-world terrain (heightmaps + water from GPS).
  • Audio β€” MetaSound and SoundCue graph authoring.
  • Animation assets β€” AnimSequence keyframe editing, AnimMontage authoring, AnimBP state machines, Skeleton bone/socket/retarget/blend-profile editing.
  • FX depth β€” Niagara emitter color/curve authoring and Custom-HLSL scratch-pad modules.
  • UI β€” UMG widgets with MVVM bindings, animation authoring, and preview/PIE validation.
  • Higher-order Blueprint authoring β€” timelines, event dispatchers, delegates, custom-event pins, comment boxes, and a batch build_graph builder.
  • Editor safety β€” TransactionService wraps the editor's transaction buffer (undo / redo / checkpoints) so an agent can group and roll back its own edits β€” the engine's toolsets expose none.
  • ⚑ Performance & profiling β€” VibeUE's standout: see the dedicated section below.
  • Python-first access β€” run any unreal.* Python in the editor and introspect the whole API.
  • Web research β€” search / fetch / geocode for in-context research and terrain workflows.

It deliberately does not duplicate the engine's general tools (basic asset/actor/blueprint/material CRUD, screenshots, logs, PIE) β€” agents use Unreal's native toolsets for those.


⚑ Performance & Profiling (flagship)

Unreal's native AI toolsets have zero performance tooling β€” they can start PIE/Simulate but can't measure anything. VibeUE's PerformanceService fills that gap so an agent can actually diagnose and fix frame rate:

  • frame_timing() β€” Game/Render/GPU/RHI thread split + a CPU-vs-GPU-bound verdict and a concrete next-step hint. Run this first β€” optimising the GPU does nothing on a CPU-bound frame.
  • Unreal Insights capture β€” start_trace / stop_trace / get_trace_status, with bookmark and region_start / region_end markers.
  • analyse() β€” reads the trace and log back and returns a perf summary (frame stats, worst frames, hitches, notable log lines).
  • Trace-attached start_standalone β€” profile a representative standalone build, not just the editor viewport.
import unreal
print(unreal.PerformanceService.frame_timing())   # CPU vs GPU bound β€” diagnose FIRST
unreal.PerformanceService.start_trace("cap", "")   # Insights trace
# … reproduce the workload (ideally under PIE / standalone) …
unreal.PerformanceService.stop_trace()
print(unreal.PerformanceService.analyse("both", ""))

Pair with the profiling and frame-rate skills for the full CPU/GPU drill-down.


πŸ—οΈ Architecture

VibeUE plugs into three native UE 5.8+ systems:

  1. Toolsets (ToolsetRegistry) β€” VibeUE's services register as UToolsetDefinitions, so their methods become AICallable tools on the MCP endpoint. They're also BlueprintCallable, so the same methods are callable from Python as unreal.<Name>Service.<method>().
  2. MCP server (ModelContextProtocol) β€” a small set of VibeUE utility tools are registered directly on the endpoint: execute_python_code, discover_python_module/_class/_function, list_python_subsystems, deep_research, terrain_data.
  3. Skills (AgentSkillToolset) β€” ~34 markdown skill packs register as native UAgentSkills, discoverable via ListSkills and loaded lazily via GetSkills, alongside the engine's own skills.

Efficient usage (for agents): execute_python_code is the workhorse β€” it batches a whole multi-step task into one round-trip and reaches every VibeUE service plus the full unreal.* API. Use call_tool only for skills and the few engine toolsets with no Python path (screenshots, etc.). See Content/samples/AGENTS.md.sample for the full agent guide.


🎯 Skills

Skills are lazy-loaded domain knowledge (workflows, gotchas, property formats) served by Unreal's native AgentSkillToolset:

# discover (summaries only β€” cheap)
call_tool(tool_name="ListSkills", toolset_name="ToolsetRegistry.AgentSkillToolset")

# load the packs you need (full markdown, lazy)
call_tool(tool_name="GetSkills", toolset_name="ToolsetRegistry.AgentSkillToolset",
          arguments={"skillPaths": ["/VibeUE/Python/init_unreal_PY.VibeUE_blueprints"]})

ListSkills is the live source of truth for what's available (it reads each pack's SKILL.md). Skills tell you what to do and why; use discover_python_class('unreal.<Name>Service', method_filter='…') for exact signatures before writing code.


πŸ”§ Plugin dependencies

Native engine prerequisites (enable in Step 1 β€” Epic's MCP stack):

PluginPurpose
Unreal MCP (ModelContextProtocol)The native MCP server endpoint
Toolset Registry (ToolsetRegistry)Native AI toolset + AgentSkill registration (auto-enabled by Unreal MCP)
Editor Tools (EditorToolset)The engine's own AI toolsets β€” VibeUE complements these

Enabled automatically by VibeUE: PythonScriptPlugin (the unreal.* API), EditorScriptingUtilities, and the domain plugins its services need β€” Niagara, MetaSound, EnhancedInput, ModelViewViewModel, StateTree, MeshModelingToolset, GameplayTagsEditor. (VibeUE also depends on ToolsetRegistry + ModelContextProtocol, so enabling VibeUE pulls them in β€” but you still enable Editor Tools and start the server per Step 1.)


πŸ› οΈ Build & launch script

BuildAndLaunchGame.ps1 (project root or Plugins/VibeUE/) stops the running editor, builds, and relaunches:

  • -StrictRebuild β€” full plugin recompile under warnings-as-errors
  • -Clean β€” wipe intermediate/binaries first
  • -SkipBuild β€” relaunch only

πŸ“š The live API

VibeUE intentionally keeps no static method catalog in this README β€” the surface evolves with the engine. The authoritative, always-current references are:

  • ListSkills β†’ which domains exist and when to use them.
  • discover_python_class('unreal.<Name>Service') β†’ exact method signatures.
  • describe_toolset('VibeUE.<Name>Service') β†’ the toolset's tools + JSON schemas (token-heavy; prefer skills + discovery).