{"slug": "vibeue-unreal-engine-vibe-coding-tool", "title": "VibeUE: Unreal Engine Vibe Coding Tool", "summary": "VibeUE, an MCP Expansion and AI Editor Toolset for Unreal Engine 5.8+, adds deep editor capabilities including terrain, audio, animation, Niagara, UMG, Blueprint authoring, and a PerformanceService for diagnosing frame rate issues. The tool complements Unreal's native AI toolsets by focusing on domains the engine does not cover, such as real-world terrain from GPS, Custom-HLSL scratch-pad modules, and performance profiling with Unreal Insights trace analysis. A free API key unlocks real-world terrain tools; everything else works without one.", "body_md": "**VibeUE is the MCP Expansion + AI Editor Toolset for Unreal Engine 5.8+.** Unreal 5.8 added a\nbuilt-in MCP server and AI toolsets; VibeUE is an **MCP Expansion** that plugs straight into them and\nadds a deep **AI Editor Toolset** — a library of editor capabilities — Blueprints, materials, landscape, foliage, animation, Niagara, UMG, audio, StateTree,\ngameplay tags, input, UVs, **performance/profiling**, and more — registered into the engine's own\n`ToolsetRegistry`\n\nand `ModelContextProtocol`\n\nserver, plus rich domain **skills** served through\nUnreal's native `AgentSkill`\n\nsystem. Any MCP-capable agent (Claude Code, Cursor, Copilot, …) drives\nyour editor through Unreal's standard MCP endpoint.\n\n⚠️ VibeUE requires Unreal's native MCP to be set up first— enable theUnreal MCPplugin (which auto-enablesToolset Registry) and theEditor Toolsplugin, then start the MCP server. Follow Epic's guide:. VibeUE then expands that endpoint —[Unreal MCP in the Unreal Editor]no separate server and no in-editor chat.A free API key (set inEditor Preferences → Plugins → VibeUE) unlocks the real-worldterraintools; everything else works without one.\n\nUnreal 5.8 ships its own AI toolsets (Blueprints, materials, actors, assets, meshes, data tables, …).\nVibeUE **complements** them — it focuses on the domains and depth the engine doesn't cover:\n\n**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`\n\nbuilder.**Editor safety**—`TransactionService`\n\nwraps 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.*`\n\nPython in the editor and introspect the whole API.**Web research**— search / fetch / geocode for in-context research and terrain workflows.\n\nIt deliberately **does not duplicate** the engine's general tools (basic asset/actor/blueprint/material\nCRUD, screenshots, logs, PIE) — agents use Unreal's native toolsets for those.\n\n**Unreal's native AI toolsets have zero performance tooling** — they can start PIE/Simulate but can't\nmeasure anything. VibeUE's\n\n`PerformanceService`\n\nfills that gap so an agent can actually *diagnose and fix*frame rate:\n\n— Game/Render/GPU/RHI thread split + a`frame_timing()`\n\n**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`\n\n/`stop_trace`\n\n/`get_trace_status`\n\n, with`bookmark`\n\nand`region_start`\n\n/`region_end`\n\nmarkers.— reads the trace`analyse()`\n\n**and** log back and returns a perf summary (frame stats, worst frames, hitches, notable log lines).**Trace-attached**— profile a representative standalone build, not just the editor viewport.`start_standalone`\n\n``` python\nimport unreal\nprint(unreal.PerformanceService.frame_timing())   # CPU vs GPU bound — diagnose FIRST\nunreal.PerformanceService.start_trace(\"cap\", \"\")   # Insights trace\n# … reproduce the workload (ideally under PIE / standalone) …\nunreal.PerformanceService.stop_trace()\nprint(unreal.PerformanceService.analyse(\"both\", \"\"))\n```\n\nPair with the `profiling`\n\nand `frame-rate`\n\nskills for the full CPU/GPU drill-down.\n\nVibeUE plugs into three native UE 5.8+ systems:\n\n**Toolsets**(`ToolsetRegistry`\n\n) — VibeUE's services register as`UToolsetDefinition`\n\ns, so their methods become AICallable tools on the MCP endpoint. They're also`BlueprintCallable`\n\n, so the same methods are callable from Python as`unreal.<Name>Service.<method>()`\n\n.**MCP server**(`ModelContextProtocol`\n\n) — a small set of VibeUE utility tools are registered directly on the endpoint:`execute_python_code`\n\n,`discover_python_module`\n\n/`_class`\n\n/`_function`\n\n,`list_python_subsystems`\n\n,`deep_research`\n\n,`terrain_data`\n\n.**Skills**(`AgentSkillToolset`\n\n) — ~34 markdown skill packs register as native`UAgentSkill`\n\ns, discoverable via`ListSkills`\n\nand loaded lazily via`GetSkills`\n\n, alongside the engine's own skills.\n\n**Efficient usage (for agents):** `execute_python_code`\n\nis the workhorse — it batches a whole\nmulti-step task into one round-trip and reaches every VibeUE service plus the full `unreal.*`\n\nAPI. Use\n`call_tool`\n\nonly for skills and the few engine toolsets with no Python path (screenshots, etc.). See\n[ Content/samples/AGENTS.md.sample](/kevinpbuckley/VibeUE/blob/master/Content/samples/AGENTS.md.sample) for the full agent guide.\n\n**Requirements:** Unreal Engine **5.8+** · Git\n\nVibeUE is an **expansion** of Unreal's built-in MCP support, so enable that first. Full details in\nEpic's guide: ** Unreal MCP in the Unreal Editor**.\n\n**Edit → Plugins**→ enable** Unreal MCP**(this auto-enables** Toolset Registry**) and** Editor Tools**(the engine's own AI toolsets, so agents get both). These are Experimental. Restart when prompted.** Edit → Editor Preferences → General → Model Context Protocol**→ enable** Auto Start Server**(or run the console command`ModelContextProtocol.StartServer`\n\n). Default endpoint`http://127.0.0.1:8000/mcp`\n\n(port/path configurable). Enabling**Tool Search** keeps an agent's context small — it sees`list_toolsets`\n\n/`describe_toolset`\n\n/`call_tool`\n\nand loads tools on demand.\n\n```\ncd /path/to/YourProject/Plugins\ngit clone https://github.com/kevinpbuckley/VibeUE.git\n```\n\nBuild with the project script:\n\n```\nPlugins/VibeUE/BuildAndLaunchGame.ps1                  # builds + launches the editor\nPlugins/VibeUE/BuildAndLaunchGame.ps1 -StrictRebuild   # full recompile (warnings-as-errors)\n```\n\nOn Linux or macOS, use the platform-detecting shell script:\n\n```\nPlugins/VibeUE/BuildAndLaunchGame.sh --engine /path/to/UE5\nPlugins/VibeUE/BuildAndLaunchGame.sh --engine /path/to/UE5 --strict-rebuild\n```\n\nThen **Edit → Plugins** → enable **VibeUE** and restart. Its services, tools, and skills now register\nonto the same endpoint, alongside the engine's own.\n\nTwo console commands from the editor (open the console with ```\n\n):\n\n**1. Write the MCP server config** (`.mcp.json`\n\nat the project root):\n\n```\nModelContextProtocol.GenerateClientConfig ClaudeCode\n```\n\n(supports `ClaudeCode`\n\n, `Cursor`\n\n, `VSCode`\n\n, `Gemini`\n\n, `Codex`\n\n, or `All`\n\n.)\n\n**2. Write VibeUE's agent guide** so the assistant uses the efficient patterns:\n\n```\nVibeUE.GenerateAgentConfig ClaudeCode\n```\n\nThis writes the guide to the correct file for your agent — `CLAUDE.md`\n\n(Claude Code), `GEMINI.md`\n\n(Gemini), `AGENTS.md`\n\n(Codex / Hermes / Cursor), or `.github/copilot-instructions.md`\n\n(Copilot) — or pass\n`All`\n\nto write CLAUDE.md + GEMINI.md + AGENTS.md at once. It resolves the plugin location\nautomatically, so it works whether VibeUE was installed from **FAB** or **Git**. The guide goes in a\nmanaged block, so re-run any time to refresh without disturbing your own notes. Pass `import`\n\nto link\nthe guide with a one-line `@import`\n\ninstead of copying it (Claude Code / Gemini only — other agents\ndon't resolve imports, so they always get a copy).\n\nThe MCP server is loopback-only with no authentication — same-machine use only (per Epic's docs).\n\nThe guide teaches: discover before you call (`discover_python_class`\n\n), batch with `execute_python_code`\n\n,\nload skills via `ListSkills`\n\n/`GetSkills`\n\n, and when to reach for `deep_research`\n\n/ `terrain_data`\n\n.\n\nSkills are lazy-loaded domain knowledge (workflows, gotchas, property formats) served by Unreal's\nnative `AgentSkillToolset`\n\n:\n\n```\n# discover (summaries only — cheap)\ncall_tool(tool_name=\"ListSkills\", toolset_name=\"ToolsetRegistry.AgentSkillToolset\")\n\n# load the packs you need (full markdown, lazy)\ncall_tool(tool_name=\"GetSkills\", toolset_name=\"ToolsetRegistry.AgentSkillToolset\",\n          arguments={\"skillPaths\": [\"/VibeUE/Python/init_unreal_PY.VibeUE_blueprints\"]})\n```\n\n`ListSkills`\n\nis the **live source of truth** for what's available (it reads each pack's `SKILL.md`\n\n).\nSkills tell you *what* to do and *why*; use `discover_python_class('unreal.<Name>Service', method_filter='…')`\n\nfor exact signatures before writing code.\n\n**Native engine prerequisites (enable in Step 1 — Epic's MCP stack):**\n\n| Plugin | Purpose |\n|---|---|\nUnreal MCP (`ModelContextProtocol` ) |\nThe native MCP server endpoint |\nToolset Registry (`ToolsetRegistry` ) |\nNative AI toolset + `AgentSkill` registration (auto-enabled by Unreal MCP) |\nEditor Tools (`EditorToolset` ) |\nThe engine's own AI toolsets — VibeUE complements these |\n\n**Enabled automatically by VibeUE:** `PythonScriptPlugin`\n\n(the `unreal.*`\n\nAPI),\n`EditorScriptingUtilities`\n\n, and the domain plugins its services need — `Niagara`\n\n, `MetaSound`\n\n,\n`EnhancedInput`\n\n, `ModelViewViewModel`\n\n, `StateTree`\n\n, `MeshModelingToolset`\n\n,\n`GameplayTagsEditor`\n\n. (VibeUE also depends on\n`ToolsetRegistry`\n\n+ `ModelContextProtocol`\n\n, so enabling VibeUE pulls them in — but you still enable\n**Editor Tools** and start the server per Step 1.)\n\n`BuildAndLaunchGame.ps1`\n\n(project root or `Plugins/VibeUE/`\n\n) stops the running editor, builds, and\nrelaunches:\n\n`-StrictRebuild`\n\n— full plugin recompile under warnings-as-errors`-Clean`\n\n— wipe intermediate/binaries first`-SkipBuild`\n\n— relaunch only\n\nVibeUE intentionally keeps **no static method catalog** in this README — the surface evolves with the\nengine. The authoritative, always-current references are:\n\n→ which domains exist and when to use them.`ListSkills`\n\n→ exact method signatures.`discover_python_class('unreal.<Name>Service')`\n\n→ the toolset's tools + JSON schemas (token-heavy; prefer skills + discovery).`describe_toolset('VibeUE.<Name>Service')`\n\nMIT — see [LICENSE](/kevinpbuckley/VibeUE/blob/master/LICENSE). Project home: [https://www.vibeue.com/](https://www.vibeue.com/)", "url": "https://wpnews.pro/news/vibeue-unreal-engine-vibe-coding-tool", "canonical_source": "https://github.com/kevinpbuckley/VibeUE", "published_at": "2026-07-28 03:54:31+00:00", "updated_at": "2026-07-28 04:22:48.417802+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "artificial-intelligence"], "entities": ["VibeUE", "Unreal Engine 5.8", "Claude Code", "Cursor", "Copilot", "Epic Games"], "alternates": {"html": "https://wpnews.pro/news/vibeue-unreal-engine-vibe-coding-tool", "markdown": "https://wpnews.pro/news/vibeue-unreal-engine-vibe-coding-tool.md", "text": "https://wpnews.pro/news/vibeue-unreal-engine-vibe-coding-tool.txt", "jsonld": "https://wpnews.pro/news/vibeue-unreal-engine-vibe-coding-tool.jsonld"}}