Skip to content

Release v0.5.30

Latest

Choose a tag to compare

@github-actions github-actions released this 05 Jun 10:29
· 266 commits to dev since this release
b20b257

Important

🚀 Native MCP & Code-Backed Tool Parity Release

This release covers the v0.5.21 to 0.5.30 release diff, including the TypeScript MCP server, native bridge plugin, tests, scripts, docs, workflows, and dependency manifests. The summary below is based on code and test changes, not commit subjects alone.

✨ Added
  • Native MCP Streamable HTTP endpoint — added an opt-in in-plugin /mcp server with JSON-RPC 2.0 initialize/tools/list/tools/call handling, POST/GET/DELETE routing, Mcp-Session-Id session tracking, SSE tool-result streaming, progress notifications, persistent notification streams, notifications/tools/list_changed broadcasts, CORS handling, loopback-first binding, capability-token checks, and an editor status-bar indicator.
  • Self-describing native MCP tools — added C++ FMcpToolRegistry, FMcpSchemaBuilder, MCP_REGISTER_TOOL, canonical native tool filtering, cached schema generation, and native dynamic tool/category enablement for the 23 canonical parent tools.
  • PCG automation — added manage_pcg TypeScript/native schemas and handlers for graph/subgraph creation, PCG node aliases, pin connections, reflected node settings, component/world execution, partition grid configuration, save/overwrite behavior, and PCG plugin availability errors.
  • Environment systems automation — added build-environment coverage for heightmap import/export, landscape layer info/material/splines/LOD/streaming proxies, foliage type configuration/paint/remove flows, sky and volumetric-cloud setup, weather/wind/time-of-day systems, water bodies, water waves/material/collision, and buoyancy components.
  • Behavior Tree authoring and introspection — added add_subnode, root-sentinel decorators, decorator/service validation, subnode-aware lookup, FBlackboardKeySelector assignment, and get_tree runtime hierarchy serialization with root decorators, edge decorators, decorator ops, services, key properties, subtree references, and a success-with-null-root contract for graphless trees.
  • Blueprint, property, and inspection tools — added inspect_cdo, Class Default Object component/property export, SCS and inherited SCS component classification, typed Blueprint custom-event pins, Enhanced Input graph nodes, inherited variable/member-class graph node lookup, and property access for Blueprint-added SCS component templates.
  • Editor, world, and input capabilities — added full editor-window screenshots, game viewport screenshot routing, image content responses, simulated keyboard/mouse input aliases, active camera reporting, PIE runtime inspection, native get_current_level, actor material/view-target native actions, spawn scale support, and create-plane height handling.
  • Material, audio, animation, and system actions — added Material Function creation/editing/calls/info, FunctionInput/FunctionOutput graph support, source-effect chains and source-effect presets, force_rebuild_blend_space, legacy/per-key input mapping edits, project setting writes, native asset validation, and execute_python for inline or project-local Python files.
🛡️ Security
  • GraphQL attack surface removed — deleted the GraphQL server, schema/resolver/loaders, GraphQL docs, GraphQL unit tests, and direct GraphQL runtime dependencies.
  • Native MCP exposure controls — default native MCP binding stays loopback-only unless explicitly allowed; non-loopback hosts warn, sessions are validated, stale requests/streams are cleaned up, and native HTTP requests use explicit request-origin routing instead of socket inference.
  • Capability-token and dynamic-tool protections — native MCP validates X-MCP-Capability-Token when required, while both TypeScript and native dynamic tool managers protect manage_tools/inspect and protected categories from accidental disablement.
  • Python execution hardeningexecute_python enforces code/file exclusivity, a 1 MB inline code limit, project-root path normalization, symlink escape checks, __file__ setup for file execution, temp-file cleanup, and direct PythonScriptPlugin execution.
  • Path, command, log, and workflow hardening — tightened UE path normalization, console-command validation, snapshot/log path handling, level save/load flows, image/log redaction, safe tmp/ cleanup, sync-script argument parsing, and GitHub Actions interpolation by moving untrusted values into environment variables.
🔧 Changed
  • Release metadata — updated package.json, package-lock.json, server.json, the src/index.ts fallback, and McpAutomationBridge.uplugin to 0.5.30.
  • Canonical TypeScript tool surface — kept the 23 parent tools but moved action lists into shared constants, grouped tools into core, world, gameplay, and utility, merged nested params into top-level arguments for constrained clients, centralized handler routing, and removed legacy per-domain tool files.
  • Dynamic tool listingtools/list now checks known client support for tools.listChanged; dynamic clients can receive category-filtered tools, while clients without dynamic loading still see the full compatible tool surface.
  • Automation bridge lifecycle — refactored host/port parsing, multi-port WebSocket connection attempts, handshake metadata, request queueing, progress timeout extension, stale-progress detection, absolute timeout caps, rate/message-size boundaries, disconnect/error tracking, and image-payload redaction.
  • Native bridge runtime — split request dispatch out of the subsystem, added explicit ERequestOrigin, queued requests through the game thread, converted captured engine errors into failed responses, pumped GameThread tasks during native transport shutdown, and exposed native transport session/tool counts to UI.
  • Response and schema handling — improved response validation, summary text generation, image response content, scalar result promotion, safe JSON cleanup, schema reuse, action-specific parameter descriptions, and stricter error context on tool failures.
  • Plugin compatibility — updated bridge metadata for UE 5.8 Preview and added PythonScriptPlugin, StructUtils, Synthesis, and PCG plugin declarations where the new handlers need them.
  • Scripts and workflows — made smoke tests run through SDK InMemoryTransport, added native parity/parameter audit npm scripts, changed clean to remove tsconfig.tsbuildinfo, added Linux/macOS/Windows plugin packaging scripts, strengthened sync/cleanup scripts, and made CI/publish/release gates stricter.
🛠️ Fixed

Routing & Native Tool Parity

  • Fixed native/consolidated action routing for validation, audio creation, material graph pins, editor simulation, add_widget_child, get_current_level, AnimBP graph discovery, lighting, SCS edits, native actor/editor actions, exact action matching, and nested params payloads.

Blueprint, Graph & Property Handling

  • Fixed inherited UPROPERTY lookup for VariableGet/VariableSet with memberClass, stale K2Node_EnhancedInputAction title cache refresh, Blueprint SCS component introspection, SCS template get/set paths, typed custom-event pin reconstruction, transaction ordering, null pin checks, case-insensitive pin connections, graph allocation fallback, and Blueprint busy-state cleanup.

Editor, World & Gameplay Behavior

  • Fixed PIE/game viewport screenshots, full editor screenshot capture, simulated input dispatch, active camera view-state reporting, PIE runtime inspection, spawn scale application, plane height fields, landscape bounds fallback, prompt-save return codes, actor list response handling, editor/world handler stability, and native actor/editor contract alignment.

Asset, Level, Animation, Niagara & Audio

  • Fixed unloaded level info via AssetRegistry fallback, classNames-only recursive asset search, normalized level path validation, source audio persistence, source-effect routing, audio authoring saves, material expression aliases, material pin routing to main inputs, UMaterialFunction graph details, animation notify validation, BlendSpace grid rebuilds, Niagara crash paths, hollow getters, parameter aliases, FText and FText-array property serialization, and execute_python file mode/output capture.

Plugin Stability & Compatibility

  • Fixed native plugin compatibility across UE versions, macOS Clang audio literal builds, plugin package output detection, bridge socket/runtime handling, JSON key normalization, request telemetry, native MCP session validation, safe operations includes, handler review findings, and optional module/plugin availability paths.
🧪 Tests
  • Added/expanded Vitest coverage for automation bridge connection, handshake, message schema, request tracking, config defaults, resources, health/metrics services, response validation, command validation, log reading/redaction, safe JSON, type coercion, normalization, queues, elicitation, and consolidated handler routing.
  • Expanded MCP integration suites across core/world/gameplay/utility tools, including PCG, Behavior Tree subnodes/get-tree, networking/sessions/input, control-editor screenshots/input, actor list handling, audio/source effects, assets/material functions, Blueprints/SCS, levels, geometry, GAS, combat, inventory, interaction, sequence, environment, and system-control Python/project-setting flows.
  • Added static native MCP action parity auditing and strict parameter-combination auditing that compare TypeScript schemas, native C++ tool definitions, native canonical registration, and test coverage.
  • Hardened the custom test runner with richer assertions, captured variables, live/static reports, fake-success detection, progress output, expectation utilities, and deterministic parameter audit behavior.
🧰 Maintenance
  • Refreshed AGENTS/project guidance, README/setup content, handler maps, testing guide, native automation progress notes, Roadmap, MCP coverage notes, UE 5.8 support notes, native audio routing notes, plugin READMEs, issue templates, labels, gitignore rules, production env defaults, Context7 config, and release metadata.
  • Removed obsolete GraphQL API docs and GraphQL security tests with the GraphQL implementation.
  • Trimmed unused plugin helpers/includes, streamlined bridge build settings, normalized Node built-in imports, simplified startup cleanup, optimized server utilities/build caching, and improved package/sync/cleanup script safety.
🔄 Dependencies
  • Removed direct runtime dependencies for @graphql-tools/schema, dataloader, graphql, and graphql-yoga.
  • Refreshed the lockfile across npm dependency groups, including security/maintenance updates for transitive runtime and dev packages.
  • Updated pinned GitHub Actions used by checkout, setup-node, CodeQL, Release Drafter, github-script, action-gh-release, stale, labeler, and dependency-review workflows.
📚 Documentation
  • Refreshed root and plugin README content, MCP/native transport setup, handler mapping, editor plugin extension notes, Roadmap, testing guide, native automation progress, MCP coverage notes, UE 5.8 support, and native audio routing notes.
  • Added and updated repository guidance files for root, TypeScript server/tools/handlers/automation/utils/tests, native MCP internals, and McpAutomationBridge areas.
  • Removed obsolete GraphQL API documentation.
👥 Contributors

Special thanks to the contributors in this release window, with obvious author aliases collapsed.

  • GitHub Actions command-injection hardening: @google-labs-jules[bot]
  • Dependency and workflow version updates: @dependabot[bot]
  • Editor/runtime behavior fixes: @xqdd for native get_current_level routing, spawn scale, create-plane height, lighting routing, Blueprint SCS verification, PIE runtime reporting, active camera state, per-key input mapping edits, and prompt-save return handling.
  • Behavior Tree and Blueprint introspection: @kalihman for get_tree, decorator/service subnodes, Blackboard key selector assignment, inherited Blueprint/SCS introspection, and classNames-only asset search behavior.
  • Blueprint graph and animation reliability: @VictorZhang01 for inherited UPROPERTY graph nodes, stale K2 node title refresh, AnimBP graph routing, and force_rebuild_blend_space.
  • Material and Blueprint component support: @nekwo for Material Function authoring support and Blueprint-added component template property get/set coverage.
  • Plugin packaging and inspection: @azwjp for Windows plugin packaging fixes, and @6r0m for inspect_cdo Blueprint CDO inspection.
  • Platform/build and routing fixes: @jenniferied for macOS Clang audio-handler build fixes, @Miriam-R-coder for exact Blueprint action routing, and @spencer-zaid for screenshot, Niagara, hollow getter, and parameter-alias fixes.
  • Python and level metadata fixes: @zmarx for execute_python file-mode handling and Python plugin initialization guards, and @codeman101 for unloaded get_level_info AssetRegistry fallback.
📊 Release Statistics
Metric Count
Release diff v0.5.21..0.5.30
Files changed 406
Insertions 61,393
Deletions 30,957
TypeScript canonical tools 23
Native canonical tools 23
Native action parity mismatches 0