All notable changes to the Unreal MCP Web Client are documented on this page. The format follows Keep a Changelog and this project adheres to Semantic Versioning.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/davidbuenov/dbv-mcp-server/llms.txt
Use this file to discover all available pages before exploring further.
v1.0.1 — 2026-07-02
v1.0.1 — 2026-07-02
Added
- Short Custom Instructions for Claude Desktop — a new “ready to paste” block in Step 8 of
docs/UNREAL_MCP_INTEGRATION_GUIDE.md, optimized to fit within Claude Desktop’s character limits without losing any critical rules: pre-call documentation lookup, toolset priority,DBVorganization conventions, Outliner grouping, and PIE/viewport movement operational notes. - Persistent Unreal + MCP operating rules in
CLAUDE.md— a dedicated section for Claude Code in this repository with an explicit decision order: documentation first, dedicated tool priority, bounded use ofRunPython, confirmation before destructive operations, and a minimum technical response format.
Changed
- Step 8 of the integration guide reinforced — the Claude Desktop and Claude Code instruction blocks were rewritten with more precise rules covering documentation validation, the choice between toolset and Python, mandatory organization under
/Game/DBV/, Outliner management, and manual PIE validation when no viewport focus is available.
v1.0.0 — 2026-07-02
v1.0.0 — 2026-07-02
Added
- Direct CLI for the
dbv-unreal-python-apiskill —search_engine.pynow exposes subcommands (search,search-guides,status,guides-status) invokable from the command line, allowing Claude Code to use the skill via Bash/code execution without depending on the MCP server. - Claude Code skill autodiscovery — new
.claude/skills/dbv-unreal-python-api/SKILL.md(pointer to the canonicalSKILL.mdinsideskills/dbv-unreal-python-api/) so Claude Code loads the skill automatically when opening the repository, with no manual configuration. - Copyable C++ template files for the example toolset —
docs/templates/MyCustomSceneToolset.hand.cppcontain the same code as Step 3 ofUNREAL_MCP_INTEGRATION_GUIDE.md, so developers can copy them directly intoSource/<ProjectName>/instead of manually transcribing the code listing. - Step 8 — Persistent behavior rules for Claude — new section in
UNREAL_MCP_INTEGRATION_GUIDE.mdwith the exact Custom Instructions text (Claude Desktop) and aCLAUDE.mdrule (Claude Code) covering two conventions: (1) always consultdbv-unreal-python-apibefore generating or executing Python scripts viaunreal-engine-mcp; (2) all AI-generated assets go under/Game/DBV/<Type>in the Content Browser (never loose in theContent/root), and related actors are grouped into World Outliner folders. A verified Python recipe (make_directory,set_folder_path) is included inSKILL.mdunder “Common Patterns” and linked from “Critical Rules”. - Step 4 — Register the Toolset in the Primary Module (mandatory) — new critical section in
UNREAL_MCP_INTEGRATION_GUIDE.mdwith complete code for<ProjectName>.cpp, explaining thatToolsetRegistrySubsystem::Initialize()(engine) only auto-registersAgentSkillToolset— any customUToolsetDefinitionrequires an explicit call toUToolsetRegistry::RegisterToolsetClass(...)inOnPostEngineInit, or it will never appear inlist_toolsetsdespite compiling and loading correctly. Subsequent guide steps were renumbered (old 4→5, 5→6, 6→7, 7→8).
Changed
- Integration documentation restructured —
SKILL.mdand the “Python API Skill” section ofREADME.mdnow explicitly document both viable usage paths — Claude Code Skill (recommended; reads the knowledge base directly from disk) and MCP server (for Claude Desktop, claude.ai, or other MCP clients) — with instructions for each. Previously only the MCP path was documented, leaving the Skill mechanism without real usage instructions. - Manual skill upload to Claude Desktop/claude.ai discontinued — the Skills UI requires a
.zipunder 30 MB uncompressed; theskills/dbv-unreal-python-api/bundle weighs ~118 MB due to its 17,000 knowledge-base files, and an uploaded Skill runs in a sandbox without local disk access, making it non-functional even if it fit. Documented as a known limitation; clients outside Claude Code must use the MCP server.
Fixed
UnicodeEncodeErrorinsearch_engine.pyCLI on Windows —stdoutis now forced to UTF-8 when invoking the new subcommands, preventing failures when printing results containing non-ASCII characters (e.g.→) to pipes or redirections that are not attached to a real console.- Unclosed Markdown code fence in
SKILL.md— removed a residual```at the end of the maintenance section that had no matching opening fence. - Inconsistent
claude_desktop_config.jsonexample betweenREADME.mdandSKILL.md—README.mdwas missing the-uflag, and neither file included the real Windows case (absolute path topython.exewith escaped backslashes) validated during a clean-PC installation. The example was unified across both files and themcp_server.pydocstring (which also had a hardcodedD:/...path from the original development machine). UNREAL_MCP_INTEGRATION_GUIDE.mdincomplete — plugins and server startup — Step 1 only listed 4 minimal plugins (ModelContextProtocol,ToolsetRegistry,MCPClientToolset,PythonScriptPlugin), omitting the 3 that expose the 100+ real Editor tools (EditorToolset,AutomationTestToolset,SlateInspectorToolset). With only the 4 minimal plugins, Claude only seesAgentSkillToolset. Also missing was the Editor Preferences → Model Context Protocol → Auto Start Server step (disabled by default): enabling the plugin does not start the server automatically — you must check that box or runModelContextProtocol.StartServerin the Editor console every session. A new section “1.1 Enable MCP server auto-start” was added with a reference to the official Epic documentation.RunPython/ custom toolset never appeared inlist_toolsetson a new project despite compiling — root cause diagnosed by comparing a new project (EventoUnrealMCP, broken) against the reference project (DBVMCPFirst, working): same toolset code, same.uproject, same.Build.cs, symbols present in the compiled DLL, yetlist_toolsetsnever included the custom class. Two hypotheses (plugin load timing, filenameUprefix) were ruled out before reading the engine source (ToolsetRegistrySubsystem.cpp, shipped with UE 5.8): the subsystem only auto-registersAgentSkillToolset; everything else requires an explicitUToolsetRegistry::RegisterToolsetClass(...)call inOnPostEngineInit, whichDBVMCPFirst.cpphad (in a custom module class) and which the guide never documented. The new Step 4 includes the exact code. Verified live after applying the fix and recompiling:RunPythonnow appears inlist_toolsets.
v0.4.0 — 2026-07-02
v0.4.0 — 2026-07-02
Added
- Conceptual Development Guides tool (
dbv_unreal_dev_guide) — new tool and search engine for official Unreal Engine 5.8 conceptual guides (PCG, Materials, Blueprints, Editor), integrated under thedbv-unreal-python-apiskill alongside the existing syntax reference. Includes an ingester (scrape_ue_guides.py), two-layer search insearch_engine.py(search_guides/get_guides_status), REST endpoints (/api/guides/search,/api/guides/status), and a visual search panel in the web client sidebar. - Full UE 5.8 documentation coverage —
scrape_ue_guides.pyexpanded from 4 fixed categories (~229 pages) to the complete official documentation tree (~3,600 pages across ~24 top-level sections, including the 1,098 Unreal Engine Node Reference entries). Discovery is now driven by the fulltable_of_content.jsontree instead of fixed seed URLs. - Safe parallel sharding — new
--mergecommand and per-category progress/index files (index_guides__<category>.json) allow running multiple crawls in parallel without race conditions, then combining them into the finalindex_guides.json.
Fixed
- Guide ingestion blocked by Cloudflare Bot Management —
scrape_ue_guides.pyreplacedurllib-based download (blocked with403due to lack of real browser TLS/JS fingerprint) with a Playwright-based fetch that opens a new browser context per article. Cloudflare degrades session trust after the first internal API call, so reusing a context between pages produced403from the second page onward. Content is now extracted directly from thecontent_htmlblock insidedocument.jsoninstead of parsing the rendered DOM. - Silent page loss on error — pages that failed during crawl were still marked “completed” in the progress file, preventing a subsequent
--resumefrom retrying them. Failed pages are now recorded in.errors_guides__<category>.jsonand retried automatically.
v0.3.0 — 2026-06-21
v0.3.0 — 2026-06-21
Added
- Native Unreal Engine 5.8 toolset integration — enabled the experimental plugins
EditorToolset,AutomationTestToolset, andSlateInspectorToolsetat project level, expanding available tools from 7 to over 100. - Blueprints panel — new tab in the web client to list functions, variables, and graphs of a Blueprint, and compile it directly from the browser.
- Automation Tests panel — new tab to discover, list, and run the Editor’s automation tests via
AutomationTestToolset. - Visual Actor Spawner — new tab with a 3D form for instantiating actors by class (
StaticMeshActor,PointLight,DirectionalLight,CameraActor) or from a Blueprint at desired X/Y/Z coordinates, and for injecting components into existing actors. - In-memory tool cache —
server.pynow usesasyncio.gatherto flatten all toolsets in parallel and stores the result in_tools_cache, reducing repeatedtools/listcalls to 0 ms. - Automatic namespace translation —
server.pyandbridge.pyinclude thetranslate_toolset_namefunction, which resolves short names (e.g.EditorToolset.SceneTools) to the real Python namespace registered in Unreal (e.g.editor_toolset.toolsets.scene.SceneTools) at runtime. - Improved C++ tools —
GetActorsreturns a full JSON dump of all actors in the active scene;RunPythoncaptures and serializesLogOutputtraces fromFPythonCommandExas JSON for better debugging. - Exact-match search in the API skill —
search_engine.pyintercepts theexact:ClassNamesyntax to bypass semantic scoring when the exact class name is known.
Fixed
- Gemini API schema compatibility —
convertSchemaToGemini()inapp.jsnow recursively removes unsupported fields (additionalProperties,default,$schema,title), fixing HTTP 400 errors when using the agent chat. UnicodeEncodeErroron Windows — replaced the Unicode→character with the ASCII string->inserver.pylogs to prevent hangs caused byUnicodeEncodeErroron Windows terminals withcp1252encoding.Toolset not founderror in Unreal — fixed the proxy translation layer so that direct dot-notation calls (e.g.editor_toolset.toolsets.scene.SceneTools.add_to_scene_from_class) correctly map to acall_toolcommand with separatetoolset_nameandtool_namearguments.
v0.2.0 — 2026-06-20
v0.2.0 — 2026-06-20
Added
- Async FastAPI server —
server.pyrewritten using FastAPI, Uvicorn, and HTTPX. Resolves concurrency blocking when reading SSE streams (text/event-stream) from Unreal, and serves SPA static files concurrently. - Resizable terminal — horizontal drag bar and variable
--terminal-heightCSS property, controllable by mouse and touch events in the frontend. - Gemini intelligent agent — new “Intelligent Agent (Chat)” tab for interacting with Unreal Engine in natural language. Includes:
- Support for latest-generation Gemini models (
gemini-3.5-flash,gemini-3.5-pro,gemini-3.1-flash,gemini-3.0-flash). - In-UI Gemini API Key field saved to
localStorage(never written to source code). - Dynamic mapping and JSON Schema translation from MCP toolsets to Gemini-compatible function declarations (including
Toolset.Tool→Toolset_Toolname conversion). - Async agent loop that makes local, interactive calls to Unreal in the background and returns the final composed answer.
- Support for latest-generation Gemini models (
- Bridge for Claude Desktop (
bridge.py) — stdio-to-HTTP-SSE proxy script that integrates the local Unreal Engine MCP server as a native connector in Claude Desktop. - Automatic Claude path mapping — support for both standard Claude Desktop config (
AppData\Roaming) and the MSIX sandboxed package path (AppData\Local\Packages\Claude_pzs8sxrjxfjjc).
Fixed
- Failed to Fetch error — resolved CORS/OPTIONS connection blocking that caused network failures in the browser client when executing tools.
- JSON validation errors in Claude Desktop — fixed Zod/
invalid_unionparse failures by forcing allbridge.pyresponses written tostdoutto be compacted onto a single line. - JSON-RPC compliance for notifications — modified
bridge.pyso that client notifications (e.g.notifications/initialized) produce nostdoutoutput, in accordance with the JSON-RPC 2.0 specification.
v0.1.0 — 2026-06-19
v0.1.0 — 2026-06-19
Added
- Project initialization — project bootstrapped using the SDD (Spec-Driven Development) framework.
- Single-page application (SPA):
index.html— semantic structure for connection management, tools panel, execution form, and console.index.css— futuristic dark interface with glassmorphism, HSL variables, and glow animations.app.js— complete connection handshake, progressive SSE chunk reader via Fetch API, and dynamic form generation.
- Quick actions (Unreal Shortcuts):
- One-click button to count cubes in the scene (
DBVMCPFirst.MyCustomSceneToolset.CountActorsWithMeshwithMeshName: "SM_Cube"). - One-click button to list active skills (
ToolsetRegistry.AgentSkillToolset.ListSkills).
- One-click button to count cubes in the scene (
- Cross-platform startup scripts:
start.cmd/stop.cmdfor Windows — starts a local Python HTTP server on port 5000 and opens the browser.start.sh/stop.shequivalents for Linux/macOS.
- Integration tests —
tests/test_server.py: automated test script that starts the HTTP server, performs queries, and validates assertions againstindex.htmlautonomously. - Agent Readiness:
robots.txtwith AI content signals and sitemap path.llms.txtwith semantic navigation map of the SPA..well-known/agent.jsonand.well-known/mcp.jsonfor agent identity discovery.
Fixed
- CSS compatibility — removed the
-webkit-backdrop-filterprefix inindex.css(lines 58 and 320) that caused compilation/validation failures in strict development environments, keeping only the standardbackdrop-filterproperty for native compatibility in modern browsers.