# ๐ Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
---
## ๐ท๏ธ [0.5.10] - 2026-01-04
> [!IMPORTANT]
> ### ๐ Context Reduction Initiative & Spline System
> This release implements the **Context Reduction Initiative** (Phases 48-53), reducing AI context overhead from ~78,000 to ~25,000 tokens, and adds a complete **Spline System** (Phase 26) with 21 new actions. ([#107](https://github.com/ChiR24/Unreal_mcp/pull/107), [#105](https://github.com/ChiR24/Unreal_mcp/pull/105))
### โจ Added
<details>
<summary><b>๐ค๏ธ Spline System (Phase 26)</b> (<a href="https://github.com/ChiR24/Unreal_mcp/pull/105">#105</a>)</summary>
New `manage_splines` tool with 21 actions for spline-based content creation:
| Category | Actions |
|----------|---------|
| **Creation** | `create_spline_actor`, `add_spline_point`, `remove_spline_point`, `set_spline_point` |
| **Properties** | `set_closed_loop`, `set_spline_type`, `set_tangent`, `get_spline_info` |
| **Mesh Components** | `create_spline_mesh`, `set_mesh_asset`, `set_spline_mesh_axis`, `set_spline_mesh_material` |
| **Scattering** | `create_mesh_along_spline`, `set_scatter_spacing`, `randomize_scatter` |
| **Quick Templates** | `create_road_spline`, `create_river_spline`, `create_fence_spline`, `create_wall_spline`, `create_cable_spline`, `create_pipe_spline` |
| **Utility** | `get_splines_info` |
**C++ Implementation:**
- `McpAutomationBridge_SplineHandlers.cpp` (1,512 lines)
- Full UE5 Spline API integration with `USplineComponent` and `USplineMeshComponent`
</details>
<details>
<summary><b>๐ง Pipeline Management Tool</b></summary>
New `manage_pipeline` tool for dynamic tool category management:
| Action | Description |
|--------|-------------|
| `set_categories` | Enable specific tool categories (core, world, authoring, gameplay, utility, all) |
| `list_categories` | Show available categories and their tools |
| `get_status` | View current state and tool counts |
**MCP Capability:**
- Server advertises `capabilities.tools.listChanged: true`
- Client capability detection via `mcp-client-capabilities` package
- Backward compatible: clients without `listChanged` support get ALL tools
</details>
### ๐ง Changed
<details>
<summary><b>๐ Context Reduction Initiative (Phases 48-53)</b> (<a href="https://github.com/ChiR24/Unreal_mcp/pull/107">#107</a>)</summary>
| Phase | Description | Token Reduction |
|-------|-------------|-----------------|
| **Phase 48** | Schema Pruning - Condensed all 35+ tool descriptions to 1-2 sentences | ~23,000 |
| **Phase 49** | Common Schema Extraction - Shared schemas for paths, names, locations | ~8,000 |
| **Phase 50** | Dynamic Tool Loading - Category-based filtering | ~50,000 (when using filtering) |
| **Phase 53** | Strategic Tool Merging - Consolidated 4 tools | ~10,000 |
**Total Potential Reduction: ~91,000 tokens**
**Common Schemas Added:**
- `assetPath`, `actorName`, `location`, `rotation`, `scale`, `save`, `overwrite`
- `standardResponse` for consistent output formatting
- Helper functions: `createOutputSchema()`, `actionDescription()`
</details>
<details>
<summary><b>๐ Tool Consolidation (Phase 53)</b></summary>
| Deprecated Tool | Merged Into | Actions Moved |
|-----------------|-------------|---------------|
| `manage_blueprint_graph` | `manage_blueprint` | 11 graph actions |
| `manage_audio_authoring` | `manage_audio` | 30 authoring actions |
| `manage_niagara_authoring` | `manage_effect` | 36 authoring actions |
| `manage_animation_authoring` | `animation_physics` | 45 authoring actions |
**Benefits:**
- Reduced tool count: 38 โ 35
- Simplified tool discovery for AI assistants
- Backward compatible: deprecated tools still work with once-per-session warnings
- Action routing uses parameter sniffing to resolve conflicts
</details>
### โ ๏ธ Deprecated
- `manage_blueprint_graph` - Use `manage_blueprint` with graph actions instead
- `manage_audio_authoring` - Use `manage_audio` with authoring actions instead
- `manage_niagara_authoring` - Use `manage_effect` with authoring actions instead
- `manage_animation_authoring` - Use `animation_physics` with authoring actions instead
### ๐ Statistics
- **Files Changed:** 20
- **Lines Added:** 4,541
- **Lines Removed:** 3,555
- **Net Change:** +986 lines
- **New C++ Handler:** 1,512 lines (`McpAutomationBridge_SplineHandlers.cpp`)
- **New TS Handler:** 169 lines (`spline-handlers.ts`)
- **Common Schemas Added:** 50+ reusable schema definitions
### ๐ Related Issues
Closes [#104](https://github.com/ChiR24/Unreal_mcp/issues/104), [#106](https://github.com/ChiR24/Unreal_mcp/issues/106), [#108](https://github.com/ChiR24/Unreal_mcp/issues/108), [#109](https://github.com/ChiR24/Unreal_mcp/issues/109), [#111](https://github.com/ChiR24/Unreal_mcp/issues/111)
---
## ๐ท๏ธ [0.5.9] - 2026-01-03
> [!IMPORTANT]
> ### ๐ฎ Major Feature Release
> This release introduces **15+ new automation tools** with comprehensive handlers for Navigation, Volumes, Level Structure, Sessions, Game Framework, and complete game development systems. ([#53](https://github.com/ChiR24/Unreal_mcp/pull/53))
### ๐ก๏ธ Security
<details>
<summary><b>๐ Fix Arbitrary File Read in LogTools</b> (<a href="https://github.com/ChiR24/Unreal_mcp/pull/103">#103</a>)</summary>
| Aspect | Details |
|--------|---------|
| **Severity** | ๐จ CRITICAL |
| **Vulnerability** | Arbitrary file read via `logPath` parameter |
| **Impact** | Attackers could read any file on the system by manipulating the `logPath` override |
| **Fix** | Validated that `logPath` ends with `.log` and is within `Saved/Logs` directory |
**Protections Added:**
- Enforced `.log` extension requirement
- Restricted to `Saved/Logs` directory (CWD or UE_PROJECT_PATH)
- Added path traversal and sibling directory attack protection
</details>
### โจ Added
<details>
<summary><b>๐ ๏ธ New Automation Tools</b></summary>
| Tool | Description |
|------|-------------|
| `manage_navigation` | NavMesh configuration, Nav Modifiers, Nav Links, pathfinding control |
| `manage_volumes` | 18 volume types (Trigger, Blocking, Audio, Physics, Navigation, Streaming) |
| `manage_level_structure` | World Partition, HLOD, Data Layers, Level Blueprints |
| `manage_sessions` | Split-screen, LAN play, Voice Chat configuration |
| `manage_game_framework` | GameMode, GameState, PlayerController, match flow |
| `manage_skeleton` | Bone manipulation, sockets, physics assets |
| `manage_material_authoring` | Material expressions, landscape materials |
| `manage_texture` | Texture creation, compression, virtual texturing |
| `manage_animation_authoring` | AnimBP, Control Rig, IK Rig, Retargeter |
| `manage_niagara_authoring` | Niagara systems, modules, parameters |
| `manage_gas` | Gameplay Ability System (Abilities, Effects, Attributes) |
| `manage_character` | Character creation, movement, locomotion |
| `manage_combat` | Weapons, projectiles, damage, melee combat |
| `manage_ai` | EQS, Perception, State Trees, Smart Objects |
| `manage_inventory` | Items, equipment, loot tables, crafting |
| `manage_interaction` | Interactables, destructibles, triggers |
| `manage_widget_authoring` | UMG widgets, layout, styling |
| `manage_networking` | Replication, RPCs, network prediction |
| `manage_audio_authoring` | MetaSounds, sound classes, dialogue |
</details>
### ๐ง Changed
<details>
<summary><b>Build & Infrastructure Improvements</b></summary>
| Change | Description |
|--------|-------------|
| Bounded Directory Search | Replaced unbounded recursive search with bounded depth search (3-4 levels) |
| Property Management | Enhanced property management across all automation handlers |
| Connection Manager | Added `IsReconnectPending()` method to McpConnectionManager |
| State Machine | Improved state machine creation with enhanced error handling |
</details>
### ๐ Statistics
- **New Tools:** 15+
- **New C++ Handler Files:** 20+
---
## ๐ท๏ธ [0.5.8] - 2026-01-02
> [!IMPORTANT]
> ### ๐ก๏ธ Security Release
> Critical security fix for path traversal vulnerability and material graph parameter improvements.
### ๐ก๏ธ Security
<details>
<summary><b>๐ Fix Path Traversal in INI Reader</b> (<a href="https://github.com/ChiR24/Unreal_mcp/pull/48">#48</a>)</summary>
| Aspect | Details |
|--------|---------|
| **Severity** | ๐จ CRITICAL |
| **Vulnerability** | Path traversal in `getProjectSetting()` |
| **Impact** | Attackers could access arbitrary files by injecting `../` sequences into the category parameter |
| **Fix** | Added strict regex validation `^[a-zA-Z0-9_-]+$` to `cleanCategory` in `src/utils/ini-reader.ts` |
</details>
### ๐ ๏ธ Fixed
<details>
<summary><b>Material Graph Parameter Mapping</b> (<a href="https://github.com/ChiR24/Unreal_mcp/pull/50">#50</a>)</summary>
| Schema Parameter | C++ Handler Expected | Status |
|------------------|---------------------|--------|
| `fromNodeId` | `sourceNodeId` | โ
Auto-mapped |
| `toNodeId` | `targetNodeId` | โ
Auto-mapped |
| `toPin` | `inputName` | โ
Auto-mapped |
Closes [#49](https://github.com/ChiR24/Unreal_mcp/issues/49)
</details>
---
## ๐ท๏ธ [0.5.7] - 2026-01-01
> [!IMPORTANT]
> ### ๐ก๏ธ Security Release
> Critical security fix for Python execution bypass vulnerability.
### ๐ก๏ธ Security
<details>
<summary><b>๐ Fix Python Execution Bypass</b> (<code>e16dab0</code>)</summary>
| Aspect | Details |
|--------|---------|
| **Severity** | ๐จ CRITICAL |
| **Vulnerability** | Python execution restriction bypass |
| **Impact** | Attackers could execute arbitrary Python code by using tabs instead of spaces after the `py` command |
| **Fix** | Updated `CommandValidator` to use regex `^py(?:\s|$)` which correctly matches `py` followed by any whitespace |
</details>
### ๐ง Changed
<details>
<summary><b>Release Process Improvements</b></summary>
- Removed automatic git tag creation from release workflow
- Updated release summary instructions for manual tag management
</details>
### ๐ Dependencies
<details>
<summary><b>Package Updates</b></summary>
| Package | Update | Type |
|---------|--------|------|
| `zod` | 4.2.1 โ 4.3.4 | Minor |
| `qs` | 6.14.0 โ 6.14.1 | Patch (indirect) |
| `github/codeql-action` | 3.28.1 โ 4.31.9 | Major |
</details>
---
## ๐ท๏ธ [0.5.6] - 2025-12-30
> [!IMPORTANT]
> ### ๐ก๏ธ Type Safety Milestone
> This release achieves **near-zero `any` type usage** across the entire codebase. All tool interfaces, handlers, automation bridge, GraphQL resolvers, and WASM integration now use strict TypeScript types with `unknown` and proper type guards.
### โจ Added
<details>
<summary><b>๐ New Zod Schema Infrastructure</b></summary>
| File | Description |
|------|-------------|
| `src/schemas/primitives.ts` | 261 lines of Zod schemas for Vector3, Rotator, Transform, Color, etc. |
| `src/schemas/responses.ts` | 380 lines of response validation schemas |
| `src/schemas/parser.ts` | 167 lines of safe parsing utilities with type guards |
| `src/schemas/index.ts` | 173 lines of unified schema exports |
**Total:** 981 lines of new type-safe schema infrastructure
</details>
<details>
<summary><b>๐ง Type-Safe Argument Helpers</b> (<code>d5e6d1e</code>)</summary>
New extraction functions in `argument-helper.ts`:
| Function | Description |
|----------|-------------|
| `extractString(params, key)` | Extract required string with assertion |
| `extractOptionalString(params, key)` | Extract optional string |
| `extractNumber(params, key)` | Extract required number with assertion |
| `extractOptionalNumber(params, key)` | Extract optional number |
| `extractBoolean(params, key)` | Extract required boolean with assertion |
| `extractOptionalBoolean(params, key)` | Extract optional boolean |
| `extractArray<T>(params, key, validator?)` | Extract typed array with optional validation |
| `extractOptionalArray<T>(params, key, validator?)` | Extract optional array |
| `normalizeArgsTyped(args, configs)` | Returns `NormalizedArgs` interface with accessor methods |
**NormalizedArgs Interface:**
- `getString(key)`, `getOptionalString(key)`
- `getNumber(key)`, `getOptionalNumber(key)`
- `getBoolean(key)`, `getOptionalBoolean(key)`
- `get(key)` for raw `unknown` access
- `raw()` for full object access
</details>
<details>
<summary><b>๐ WASM Module Interface</b> (<code>d5e6d1e</code>)</summary>
Defined structured `WASMModule` interface replacing `any`:
```typescript
interface WASMModule {
PropertyParser?: new () => { parse_properties(json, maxDepth) };
TransformCalculator?: new () => { composeTransform, decomposeMatrix };
Vector?: new (x, y, z) => { x, y, z, add(other) };
DependencyResolver?: new () => { analyzeDependencies, calculateDepth, ... };
}
```
</details>
<details>
<summary><b>๐ Automation Bridge Types</b> (<code>f97b008</code>)</summary>
| Type | Location | Description |
|------|----------|-------------|
| `QueuedRequestItem` | `automation/types.ts` | Typed interface for queued request items |
| `ASTFieldNode` | `graphql/resolvers.ts` | GraphQL AST node types for parseLiteral |
| `ASTNode` | `graphql/resolvers.ts` | Typed AST parsing |
</details>
### ๐ง Changed
<details>
<summary><b>๐ฏ Tool Interfaces Refactored</b> (<code>d5e6d1e</code>)</summary>
**ITools Interface - Replaced all `any` with concrete types:**
| Property | Before | After |
|----------|--------|-------|
| `materialTools` | `any` | `MaterialTools` |
| `niagaraTools` | `any` | `NiagaraTools` |
| `animationTools` | `any` | `AnimationTools` |
| `physicsTools` | `any` | `PhysicsTools` |
| `lightingTools` | `any` | `LightingTools` |
| `debugTools` | `any` | `DebugVisualizationTools` |
| `performanceTools` | `any` | `PerformanceTools` |
| `audioTools` | `any` | `AudioTools` |
| `uiTools` | `any` | `UITools` |
| `introspectionTools` | `any` | `IntrospectionTools` |
| `engineTools` | `any` | `EngineTools` |
| `behaviorTreeTools` | `any` | `BehaviorTreeTools` |
| `logTools` | `any` | `LogTools` |
| `inputTools` | `any` | `InputTools` |
| Index signature | `[key: string]: any` | `[key: string]: unknown` |
**StandardActionResponse:**
- Changed `StandardActionResponse<T = any>` โ `StandardActionResponse<T = unknown>`
**IBlueprintTools:**
- `operations: any[]` โ `operations: Array<Record<string, unknown>>`
- `defaultValue?: any` โ `defaultValue?: unknown`
- `propertyValue: any` โ `propertyValue: unknown`
**IAssetResources:**
- `list(): Promise<any>` โ `list(): Promise<Record<string, unknown>>`
</details>
<details>
<summary><b>๐ท GraphQL Resolvers Type Safety</b> (<code>f97b008</code>, <code>fa4dddc</code>)</summary>
All scalar resolvers now use typed parameters:
| Scalar | Before | After |
|--------|--------|-------|
| `Vector.serialize` | `(value: any)` | `(value: unknown)` |
| `Rotator.serialize` | `(value: any)` | `(value: unknown)` |
| `Transform.parseLiteral` | `(ast: any)` | `(ast: ASTNode)` |
| `JSON.parseLiteral` | `(ast: any)` | `(ast: ASTNode): unknown` |
**Internal interfaces typed:**
- `Asset.metadata?: Record<string, any>` โ `Record<string, unknown>`
- `Actor.properties?: Record<string, any>` โ `Record<string, unknown>`
- `Blueprint.defaultValue?: any` โ `unknown`
</details>
<details>
<summary><b>๐ Automation Bridge Type Safety</b> (<code>f97b008</code>)</summary>
| Location | Before | After |
|----------|--------|-------|
| `onError` callback | `(err: any)` | `(err: unknown)` |
| `onHandshakeFail` callback | `(err: any)` | `(err: Record<string, unknown>)` |
| `catch` block | `catch (err: any)` | `catch (err: unknown)` with type guard |
| `onMessage` handler | `(data: any)` | `(data: Buffer \| string)` |
| `queuedRequestItems` | inline type with `any` | `QueuedRequestItem[]` |
</details>
<details>
<summary><b>๐ WASM Integration Type Safety</b> (<code>d5e6d1e</code>)</summary>
| Method | Before | After |
|--------|--------|-------|
| `parseProperties()` | `Promise<any>` | `Promise<unknown>` |
| `analyzeDependencies()` | `Promise<any>` | `Promise<unknown>` |
| `fallbackParseProperties()` | `any` | `unknown` |
| `fallbackAnalyzeDependencies()` | `any` | `Record<string, unknown>` |
| `globalThis.fetch` patch | `(globalThis as any).fetch` | Typed with `GlobalThisWithFetch` |
| Error handling | `(error as any)?.code` | `(error as Record<string, unknown>)?.code` |
</details>
<details>
<summary><b>๐ Handler Types Expanded</b> (<code>d5e6d1e</code>)</summary>
`src/types/handler-types.ts` expanded with 147+ lines of new typed interfaces for all handler argument types.
</details>
### ๐ ๏ธ Fixed
<details>
<summary><b>โ
extractOptionalArray Behavior</b> (<code>f97b008</code>)</summary>
- Now returns `undefined` (instead of throwing) when value is not an array
- Documented behavior: graceful fallback for type mismatches
- Allows handlers to use default behavior when optional arrays are invalid
</details>
### ๐ Statistics
- **Files Changed:** 70 source files
- **Lines Added:** 3,806
- **Lines Removed:** 1,816
- **Net Change:** +1,990 lines (mostly type definitions)
- **New Schema Files:** 4 (981 lines total)
- **`any` โ `unknown` Replacements:** 100+ occurrences
### ๐ Dependencies
<details>
<summary><b>GitHub Actions Updates</b></summary>
| Package | Update | PR |
|---------|--------|-----|
| `actions/first-interaction` | 1.3.0 โ 3.1.0 | [#38](https://github.com/ChiR24/Unreal_mcp/pull/38) |
| `actions/labeler` | 5.0.0 โ 6.0.1 | Dependabot |
| `github/codeql-action` | SHA update | Dependabot |
| `release-drafter/release-drafter` | SHA update | Dependabot |
| Dev dependencies group | 2 updates | Dependabot |
</details>
---
## ๐ท๏ธ [0.5.5] - 2025-12-29
> [!NOTE]
> ### ๐ Quality & Validation Release
> This release focuses on **input validation**, **structured logging**, and **developer experience** improvements. WebSocket connections now enforce message size limits, Blueprint graph editing supports user-friendly node names, and all tools use structured logging.
### โจ Added
<details>
<summary><b>๐ WebSocket Message Size Limits</b> (<a href="https://github.com/ChiR24/Unreal_mcp/pull/36">#36</a>)</summary>
| Feature | Description |
|---------|-------------|
| **Max Message Size** | 5MB limit for WebSocket frames and accumulated messages |
| **Close Code 1009** | Connections close with standard "Message Too Big" code when exceeded |
| **Fragment Accumulation** | Size checks applied during fragmented message assembly |
**C++ Changes:**
- Added `MaxWebSocketMessageBytes` (5MB) and `MaxWebSocketFramePayloadBytes` constants
- Implemented size validation at frame receive, fragment accumulation, and initial payload
- Proper teardown with `WebSocketCloseCodeMessageTooBig` (1009)
</details>
<details>
<summary><b>๐ท Blueprint Node Type Aliases</b> (<a href="https://github.com/ChiR24/Unreal_mcp/pull/37">#37</a>)</summary>
User-friendly node names now map to internal K2Node classes:
| Alias | K2Node Class |
|-------|-------------|
| `Branch` | `K2Node_IfThenElse` |
| `Sequence` | `K2Node_ExecutionSequence` |
| `ForLoop` | `K2Node_ForLoop` |
| `ForLoopWithBreak` | `K2Node_ForLoopWithBreak` |
| `WhileLoop` | `K2Node_WhileLoop` |
| `Switch` | `K2Node_SwitchInteger` |
| `Select` | `K2Node_Select` |
| `DoOnce`, `DoN`, `FlipFlop`, `Gate`, `MultiGate` | Flow control nodes |
| `SpawnActorFromClass`, `GetAllActorsOfClass` | Actor manipulation |
| `Timeline`, `MakeArray`, `MakeStruct`, `BreakStruct` | Data/utility nodes |
**C++ & TypeScript Sync:**
- `BLUEPRINT_NODE_ALIASES` map in `graph-handlers.ts`
- `NodeTypeAliases` map in `McpAutomationBridge_BlueprintGraphHandlers.cpp`
</details>
<details>
<summary><b>๐ณ Behavior Tree Generic Node Types</b> (<a href="https://github.com/ChiR24/Unreal_mcp/pull/37">#37</a>)</summary>
| Node Type | Default Class | Category |
|-----------|---------------|----------|
| `Task` | `BTTask_Wait` | task |
| `Decorator` / `Blackboard` | `BTDecorator_Blackboard` | decorator |
| `Service` / `DefaultFocus` | `BTService_DefaultFocus` | service |
| `Composite` | `BTComposite_Sequence` | composite |
Aliases for common BT nodes: `Wait`, `MoveTo`, `PlaySound`, `Cooldown`, `Loop`, `TimeLimit`, `Selector`, etc.
</details>
<details>
<summary><b>๐ show_stats Action</b></summary>
New `show_stats` action in `system_control` tool:
- Toggle engine stats display (`stat Unit`, `stat FPS`, etc.)
- Parameters: `category` (string), `enabled` (boolean)
</details>
### ๐ง Changed
<details>
<summary><b>๐ Structured Logging</b> (<a href="https://github.com/ChiR24/Unreal_mcp/pull/36">#36</a>)</summary>
Replaced `console.error`/`console.warn` with structured `Logger` across all tools:
| File | Change |
|------|--------|
| `actors.ts` | WASM debug logging |
| `debug.ts` | Viewmode stability warnings |
| `dynamic-handler-registry.ts` | Handler overwrite warnings |
| `editor.ts` | Removed commented debug logs |
| `physics.ts` | Improved error handling with fallback mesh resolution |
</details>
<details>
<summary><b>๐ฏ Handler Response Improvements</b></summary>
| Handler | Change |
|---------|--------|
| `actor-handlers.ts` | Returns clean responses without `ResponseFactory.success()` wrapping |
| `blueprint-handlers.ts` | Includes `blueprintPath` in responses |
| `environment.ts` | Changed default snapshot path to `./tmp/unreal-mcp/` |
</details>
### ๐ ๏ธ Fixed
<details>
<summary><b>โ
Input Validation Enhancements</b> (<a href="https://github.com/ChiR24/Unreal_mcp/pull/37">#37</a>)</summary>
| Handler | Validation Added |
|---------|------------------|
| `editor-handlers.ts` | Viewport resolution requires positive numbers |
| `asset-handlers.ts` | Folder paths must start with `/` |
| `lighting-handlers.ts` | Valid light types: `point`, `directional`, `spot`, `rect`, `sky` |
| `lighting-handlers.ts` | Valid GI methods: `lumen`, `screenspace`, `none`, `raytraced`, `ssgi` |
| `performance-handlers.ts` | Valid profiling types with clear error messages |
| `performance-handlers.ts` | Scalability levels clamped to 0-4 range |
| `system-handlers.ts` | Quality level clamped to 0-4 range |
</details>
<details>
<summary><b>๐ง WASM Binding Patching</b> (<code>7cc602a</code>)</summary>
- Fixed TOCTOU (Time-of-Check-Time-of-Use) race condition in `patch-wasm.js`
- Uses atomic file operations with file descriptors (`openSync`, `ftruncateSync`, `writeSync`)
- Proper error handling for missing WASM files
</details>
### ๐๏ธ Removed
<details>
<summary><b>๐งน Code Cleanup</b></summary>
| Removed | Lines | Reason |
|---------|-------|--------|
| `src/types/responses.ts` content | 355 | Obsolete response type definitions |
| `scripts/validate-server.js` | 46 | Unused validation script |
| `scripts/verify-automation-bridge.js` | 177 | Unused functions and broken code |
</details>
### ๐ Statistics
- **Files Changed:** 28+ source files
- **Lines Removed:** 436 (cleanup)
- **Lines Added:** 283 (validation + features)
- **New Node Aliases:** 30+ Blueprint, 20+ Behavior Tree
---
## ๐ท๏ธ [0.5.4] - 2025-12-27
> [!IMPORTANT]
> ### ๐ก๏ธ Security Release
> This release focuses on **security hardening** and **defensive improvements** across the entire stack, including command injection prevention, network isolation, and resource management.
### ๐ก๏ธ Security & Command Hardening
<details>
<summary><b>UBT Validation & Safe Execution</b></summary>
| Feature | Description |
|---------|-------------|
| **UBT Argument Validation** | Added `validateUbtArgumentsString` and `tokenizeArgs` to block dangerous characters (`;`, `|`, backticks) |
| **Safe Process Spawning** | Updated child process spawning to use `shell: false`, preventing shell injection attacks |
| **Console Command Validation** | Implemented strict input validation for the Unreal Automation Bridge to block chained or multi-line commands |
| **Argument Quoting** | Improved logging and execution logic to correctly quote arguments containing spaces |
</details>
### ๐ Network & Host Binding
<details>
<summary><b>Localhost Default & Remote Configuration</b></summary>
| Feature | Description |
|---------|-------------|
| **Localhost Default** | WebSocket, Metrics, and GraphQL servers now bind to `127.0.0.1` by default |
| **Remote Exposure Prevention** | Prevents accidental remote exposure of services |
| **GRAPHQL_ALLOW_REMOTE** | Added environment variable check for explicit remote binding configuration |
| **Security Warnings** | Warnings logged for unsafe/permissive network settings |
</details>
### ๐ฆ Resource Management
<details>
<summary><b>Rate Limiting & Queue Management</b></summary>
| Feature | Description |
|---------|-------------|
| **IP-Based Rate Limiting** | Implemented rate limiting on the metrics server |
| **Queue Limits** | Introduced `maxQueuedRequests` to automation bridge to prevent memory exhaustion |
| **Message Size Enforcement** | Enforced `MAX_WS_MESSAGE_SIZE_BYTES` for WebSocket connections to reject oversized payloads |
</details>
### ๐งช Testing & Cleanup
<details>
<summary><b>Test Updates & File Cleanup</b></summary>
| Change | Description |
|--------|-------------|
| **Path Sanitization Tests** | Modified validation tests to verify path sanitization and expect errors for traversal attempts |
| **Removed Legacy Tests** | Removed outdated test files (`run-unreal-tool-tests.mjs`, `test-asset-errors.mjs`) |
| **Response Logging** | Implemented better response logging in the test runner |
</details>
### ๐ Dependencies
- **dependencies group**: Bumped 2 updates via @dependabot ([#33](https://github.com/ChiR24/Unreal_mcp/pull/33))
---
## ๐ท๏ธ [0.5.3] - 2025-12-21
> [!IMPORTANT]
> ### ๐ Major Enhancements
> - **Dynamic Type Discovery** - New runtime introspection for lights, debug shapes, and sequencer tracks
> - **Metrics Rate Limiting** - Per-IP rate limiting (60 req/min) on Prometheus endpoint
> - **Centralized Class Configuration** - Unified Unreal Engine class aliases
> - **Enhanced Type Safety** - Comprehensive TypeScript interfaces replacing `any` types
### โจ Added
<details>
<summary><b>๐ Dynamic Discovery & Engine Handlers</b></summary>
| Feature | Description |
|---------|-------------|
| **list_light_types** | Discovers all available light class types at runtime |
| **list_debug_shapes** | Enumerates supported debug shape types |
| **list_track_types** | Lists all sequencer track types available in the engine |
| **Heuristic Resolution** | Improved C++ handlers use multiple naming conventions and inheritance validation |
| **Vehicle Type Support** | Expanded vehicle type from union to string for flexibility |
**C++ Changes:**
- `McpAutomationBridge_LightingHandlers.cpp` - Runtime `ResolveUClass` for lights
- `McpAutomationBridge_SequenceHandlers.cpp` - Runtime resolution for tracks
- Added `UObjectIterator.h` for dynamic type scanning
- Unified spawn/track-creation flows
- Removed editor/PIE branching logic
</details>
<details>
<summary><b>โ๏ธ Tooling & Configuration</b></summary>
| Feature | Description |
|---------|-------------|
| **class-aliases.ts** | Centralized Unreal Engine class name mappings |
| **handler-types.ts** | Comprehensive TypeScript interfaces (ActorArgs, EditorArgs, LightingArgs, etc.) |
| **timeout constants** | Command-specific operation timeouts in constants.ts |
| **listDebugShapes()** | Programmatic access in DebugVisualizationTools |
**Type System:**
- Geometry types: Vector3, Rotator, Transform
- Required-component lookups
- Centralized class-alias mappings
</details>
<details>
<summary><b>๐ Metrics Server Enhancements</b></summary>
| Feature | Description |
|---------|-------------|
| **Rate Limiting** | Per-IP limit of 60 requests/minute |
| **Server Lifecycle** | Returns instance for better management |
| **Error Handling** | Improved internal error handling |
</details>
<details>
<summary><b>๐ Documentation & DX</b></summary>
| Feature | Description |
|---------|-------------|
| **handler-mapping.md** | Updated with new discovery actions |
| **README.md** | Clarified WASM build instructions |
| **Tool Definitions** | Synchronized with new discovery actions |
</details>
### ๐ง Changed
<details>
<summary><b>Handler Type Safety & Logic</b></summary>
**src/tools/handlers/common-handlers.ts:**
- Replaced `any` typings with strict `HandlerArgs`/`LocationInput`/`RotationInput`
- Added automation-bridge connectivity validation
- Enhanced location/rotation normalization with type guards
**Specialized Handlers:**
- `actor-handlers.ts` - Applied typed handler-args
- `asset-handlers.ts` - Improved argument normalization
- `blueprint-handlers.ts` - Added new action cases
- `editor-handlers.ts` - Enhanced default handling
- `effect-handlers.ts` - Added `list_debug_shapes`
- `graph-handlers.ts` - Improved validation
- `level-handlers.ts` - Type-safe operations
- `lighting-handlers.ts` - Added `list_light_types`
- `pipeline-handlers.ts` - Enhanced error handling
</details>
<details>
<summary><b>Infrastructure & Utilities</b></summary>
**Security & Validation:**
- `command-validator.ts` - Blocks semicolons, pipes, backticks
- `error-handler.ts` - Enhanced error logging
- `response-validator.ts` - Improved Ajv typing
- `safe-json.ts` - Generic typing for cleanObject
- `validation.ts` - Expanded path-traversal protection
**Performance:**
- `unreal-command-queue.ts` - Optimized queue processing (250ms interval)
- `unreal-bridge.ts` - Centralized timeout constants
</details>
### ๐ ๏ธ Fixed
- **Command Injection Prevention** - Additional dangerous command patterns blocked
- **Path Security** - Enhanced asset-name validation
- **Type Safety** - Eliminated `any` types across handler functions
- **Error Messages** - Clearer error messages for class resolution failures
### ๐ Statistics
- **Files Changed:** 20+
- **New Interfaces:** 15+ handler type definitions
- **Discovery Actions:** 3 new runtime introspection methods
- **Security Enhancements:** 5+ new validation patterns
### ๐ Dependencies
- **graphql-yoga**: Bumped from 5.17.1 to 5.18.0 (#31)
---
## ๐ท๏ธ [0.5.2] - 2025-12-18
> [!IMPORTANT]
> ### ๐ Breaking Changes
> - **Standardized Tools & Type Safety** - All tool handlers now use consistent interfaces with improved type safety. Some internal API signatures have changed. (`079e3c2`)
### โจ Added
<details>
<summary><b>๐ ๏ธ Blueprint Enhancements</b> (<code>e710751</code>)</summary>
| Feature | Description |
|---------|-------------|
| **Dynamic Node Creation** | Support for creating nodes dynamically in Blueprint graphs |
| **Struct Property Support** | Added ability to set and get struct properties on Blueprint components |
</details>
### ๐ Changed
<details>
<summary><b>๐ฏ Standardized Tool Interfaces</b> (<a href="https://github.com/ChiR24/Unreal_mcp/pull/28">#28</a>)</summary>
| Component | Change |
|-----------|--------|
| Tool Handlers | Optimized bridge communication and standardized response handling |
| Type Safety | Hardened type definitions across all tool interfaces |
| Bridge Optimization | Improved performance and reliability of automation bridge |
</details>
### ๐ง CI/CD
- ๐ **MCP Publisher** - Fixed download URL format in workflow steps (`0d452e7`)
- ๐งน **Workflow Cleanup** - Removed unnecessary success conditions from MCP workflow steps (`82bd575`)
---
## ๐ท๏ธ [0.5.1] - 2025-12-17
> [!WARNING]
> ### โ ๏ธ Breaking Changes
> - **Standardized Return Types** - All tool methods now return `StandardActionResponse` type instead of generic objects. Consumers must update their code to handle the new response structure with `success`, `data`, `warnings`, and `error` fields. (`5e615c5`)
> - **Test Suite Structure** - New test files added and existing tests enhanced with comprehensive coverage.
### ๐ Changed
<details>
<summary><b>๐ฏ Standardized Tool Interfaces</b> (<code>5e615c5</code>)</summary>
| Component | Change |
|-----------|--------|
| Tool Methods | Updated all tool methods to return `StandardActionResponse` type for consistency |
| Tool Interfaces | Modified interfaces (assets, blueprint, editor, environment, foliage, landscape, level, sequence) to use standardized response format |
| Type System | Added proper type imports and exports for `StandardActionResponse` |
| Handler Files | Updated to work with new standardized response types |
| Response Structure | All implementations return correct structure with `success`/`error` fields |
</details>
### โจ Added
<details>
<summary><b>๐งช Comprehensive Test Suite</b> (<a href="https://github.com/ChiR24/Unreal_mcp/pull/25">#25</a>)</summary>
| Feature | Description |
|---------|-------------|
| **Test Coverage** | Added comprehensive test files with success, error, and edge cases |
| **GraphQL DataLoader** | Implemented N+1 query optimization with batching and caching |
| **Type-Safe Interfaces** | Added type-safe automation response interfaces for better error handling |
| **Utility Tests** | Added tests for core utilities (normalize, safe-json, validation) |
| **Real-World Scenarios** | Enhanced coverage with real-world scenarios and cleanup procedures |
| **New Test Suites** | Audio, lighting, performance, input, and asset graph management |
| **Enhanced Logging** | Improved diagnostic logging throughout tools |
| **Documentation** | Updated supported Unreal Engine versions (5.0-5.7) in testing documentation |
</details>
### ๐งน Maintenance
- ๐๏ธ **Prompts Module Cleanup** - Removed prompts module and related GraphQL prompt functionality ([#26](https://github.com/ChiR24/Unreal_mcp/pull/26))
- ๐ **Security Updates** - Removed unused dependencies (axios, json5, yargs) from package.json for security (`5e615c5`)
- ๐ **Tool Interfaces** - Enhanced asset and level tools with security validation and timeout handling (`5e615c5`)
### ๐ฆ Dependencies
<details>
<summary><b>GitHub Actions Updates</b></summary>
| Package | Update | PR | Commit |
|---------|--------|-----|--------|
| `actions/checkout` | v4 โ v6 | [#23](https://github.com/ChiR24/Unreal_mcp/pull/23) | `4c6b3b5` |
| `actions/setup-node` | v4 โ v6 | [#22](https://github.com/ChiR24/Unreal_mcp/pull/22) | `71aa35c` |
| `softprops/action-gh-release` | 2.0.8 โ 2.5.0 | [#21](https://github.com/ChiR24/Unreal_mcp/pull/21) | `b6c8a46` |
</details>
<details>
<summary><b>NPM Package Updates</b> (<a href="https://github.com/ChiR24/Unreal_mcp/pull/24">#24</a>, <code>5e615c5</code>)</summary>
| Package | Update |
|---------|--------|
| `@modelcontextprotocol/sdk` | 1.25.0 โ 1.25.1 |
| `@types/node` | 25.0.2 โ 25.0.3 |
</details>
---
## ๐ท๏ธ [0.5.0] - 2025-12-16
> [!IMPORTANT]
> ### ๐ Major Architecture Migration
> This release marks the **complete migration** from Unreal's built-in Remote Plugin to a native C++ **McpAutomationBridge** plugin. This provides:
> - โก Better performance
> - ๐ Tighter editor integration
> - ๐ซ No dependency on Unreal's Remote API
>
> **BREAKING CHANGE:** Response format has been standardized across all automation tools. Clients should expect responses to follow the new `StandardActionResponse` format with `success`, `data`, `warnings`, and `error` fields.
### ๐๏ธ Architecture
| Change | Description |
|--------|-------------|
| ๐ **Native C++ Plugin** | Introduced `McpAutomationBridge` - a native UE5 editor plugin replacing the Remote API |
| ๐ **Direct Editor Integration** | Commands execute directly in the editor context via automation bridge subsystem |
| ๐ **WebSocket Communication** | Implemented `McpBridgeWebSocket` for real-time bidirectional communication |
| ๐ฏ **Bridge-First Architecture** | All operations route through the native C++ bridge (`fe65968`) |
| ๐ **Standardized Responses** | All tools now return `StandardActionResponse` format (`0a8999b`) |
### โจ Added
<details>
<summary><b>๐ฎ Engine Compatibility</b></summary>
- **UE 5.7 Support** - Updated McpAutomationBridge with ControlRig dynamic loading and improved sequence handling (`ec5409b`)
</details>
<details>
<summary><b>๐ง New APIs & Integrations</b></summary>
- **GraphQL API** - Broadened automation bridge with GraphQL support, WASM integration, UI/editor integrations (`ffdd814`)
- **WebAssembly Integration** - High-performance JSON parsing with 5-8x performance gains (`23f63c7`)
</details>
<details>
<summary><b>๐ Automation Bridge Features</b></summary>
| Feature | Commit |
|---------|--------|
| Server mode on port `8091` | `267aa42` |
| Client mode with enhanced connection handling | `bf0fa56` |
| Heartbeat tracking and output capturing | `28242e1` |
| Event handling and asset management | `d10e1e2` |
</details>
<details>
<summary><b>๐๏ธ New Tool Systems (0a8999b, 0ac82ac)</b></summary>
| Tool | Description |
|------|-------------|
| ๐ฎ **Input Management** | New `manage_input` tool with EnhancedInput support for Input Actions and Mapping Contexts |
| ๐ก **Lighting Manager** | Full lighting configuration via `manage_lighting` including spawn, GI setup, shadow config, build lighting |
| ๐ **Performance Manager** | `manage_performance` with profiling (CPU/GPU/Memory), optimization, scalability, Nanite/Lumen config |
| ๐ณ **Behavior Tree Editing** | Full behavior tree creation and node editing via `manage_behavior_tree` |
| ๐ฌ **Enhanced Sequencer** | Track operations (add/remove tracks, set muted/solo/locked), display rate, tick resolution |
| ๐ **World Partition** | Cell management, data layer toggling via `manage_level` |
| ๐ผ๏ธ **Widget Management** | UI widget creation, visibility controls, child widget adding |
</details>
<details>
<summary><b>๐ Graph Editing Capabilities (0a8999b)</b></summary>
- **Blueprint Graph** - Direct node manipulation with `manage_blueprint_graph` (create_node, delete_node, connect_pins, etc.)
- **Material Graph** - Node operations via `manage_asset` (add_material_node, connect_material_pins, etc.)
- **Niagara Graph** - Module and parameter editing (add_niagara_module, set_niagara_parameter, etc.)
</details>
<details>
<summary><b>๐ ๏ธ New Handlers & Actions</b></summary>
- Blueprint graph management and Niagara functionalities (`aff4d55`)
- Physics simulation setup in AnimationTools (`83a6f5d`)
- **New Asset Actions:**
- `generate_lods`, `add_material_parameter`, `list_instances`
- `reset_instance_parameters`, `get_material_stats`, `exists`
- `nanite_rebuild_mesh`
- World partition and rendering tool handlers (`83a6f5d`)
- Screenshot with base64 image encoding (`bb4f6a8`)
</details>
<details>
<summary><b>๐งช Test Suites</b></summary>
**50+ new test cases** covering:
- Animation, Assets, Materials
- Sequences, World Partition
- Blueprints, Niagara, Behavior Trees
- Audio, Input Actions
- And more! (`31c6db9`, `85817c9`, `fc47839`, `02fd2af`)
</details>
### ๐ Changed
#### Core Refactors
| Component | Change | Commit |
|-----------|--------|--------|
| `SequenceTools` | Migrated to Automation Bridge | `c2fb15a` |
| `UnrealBridge` | Refactored for bridge connection | `7bd48d8` |
| Automation Dispatch | Editor-native handlers modernization | `c9db1a4` |
| Test Runner | Timeout expectations & content extraction | `c9766b0` |
| UI Handlers | Improved readability and organization | `bb4f6a8` |
| Connection Manager | Streamlined connection handling | `0ac82ac` |
#### Tool Improvements
- ๐ **PhysicsTools** - Vehicle config logic updated, deprecated checks removed (`6dba9f7`)
- ๐ฌ **AnimationTools** - Logging and response normalization (`7666c31`)
- โ ๏ธ **Error Handling** - Utilities refactored, INI file reader added (`f5444e4`)
- ๐ **Blueprint Actions** - Timeout handling enhancements (`65d2738`)
- ๐จ **Materials** - Enhanced material graph editing capabilities (`0a8999b`)
- ๐ **Audio** - Improved sound component management (`0a8999b`)
#### Other Changes
- ๐ก **Connection & Logging** - Improved error messages for clarity (`41350b3`)
- ๐ **Documentation** - README updated with UE 5.7, WASM docs, architecture overview, 17 tools (`8d72f28`, `4d77b7e`)
- ๐ **Dependencies** - Updated to latest versions (`08eede5`)
- ๐ **Type Definitions** - Enhanced tool interfaces and type coverage (`0a8999b`)
### ๐ Fixed
- `McpAutomationBridgeSubsystem` - Header removal, logging category, heartbeat methods (`498f644`)
- `McpBridgeWebSocket` - Reliable WebSocket communication (`861ad91`)
- **AutomationBridge** - Heartbeat handling and server metadata retrieval (`0da54f7`)
- **UI Handlers** - Missing payload and invalid widget path error handling (`bb4f6a8`)
- **Screenshot** - Clearer error messages and flow (`bb4f6a8`)
### ๐๏ธ Removed
| Removed | Reason |
|---------|--------|
| ๐ Remote API Dependency | Replaced by native C++ plugin |
| ๐ Python Fallbacks | Native C++ automation preferred (`fe65968`) |
| ๐ฆ Unused HTTP Client | Cleanup from error-handler (`f5444e4`) |
---
## ๐ท๏ธ [0.4.7] - 2025-11-16
### โจ Added
- Output Log reading via `system_control` tool with `read_log` action. filtering by category, level, line count.
- New `src/tools/logs.ts` implementing robust log tailing.
- ๐ Initial `McpAutomationBridge` plugin with foundational implementation (`30e62f9`)
- ๐งช Comprehensive test suites for various Unreal Engine tools (`31c6db9`)
### ๐ Changed
- `system_control` tool schema: Added `read_log` action.
- Updated tool handlers to route `read_log` to LogTools.
- Version bumped to 0.4.7.
### ๐ Documentation
- Updated README.md with initial bridge documentation (`a24dafd`)
---
## ๐ท๏ธ [0.4.6] - 2025-10-04
### ๐ Fixed
- Fixed duplicate response output issue where tool responses were displayed twice in MCP content
- Response validator now emits concise summaries instead of duplicating full JSON payloads
- Structured content preserved for validation while user-facing output is streamlined
---
## ๐ท๏ธ [0.4.5] - 2025-10-03
### โจ Added
- ๐ง Expose `UE_PROJECT_PATH` environment variable across runtime config, Smithery manifest, and client configs
- ๐ Added `projectPath` to runtime `configSchema` for Smithery's session UI
### ๐ Changed
- โก Made `createServer` synchronous factory (removed `async`)
- ๐ Default for `ueHost` in exported `configSchema`
### ๐ Documentation
- Updated `README.md`, config examples to include `UE_PROJECT_PATH`
- Updated `smithery.yaml` and `server.json` manifests
### ๐จ Build
- Rebuilt Smithery bundle and TypeScript output
### ๐ Fixed
- Smithery UI blank `ueHost` field by defining default in runtime schema
---
## ๐ท๏ธ [0.4.4] - 2025-09-28
### โจ Improvements
- ๐ค **Client Elicitation Helper** - Added support for Cursor, VS Code, Claude Desktop, and other MCP clients
- ๐ **Consistent RESULT Parsing** - Handles JSON5 and legacy Python literals across all tools
- ๐ **Safe Output Stringification** - Robust handling of circular references and complex objects
- ๐ **Enhanced Logging** - Improved validation messages for easier debugging
---
## ๐ท๏ธ [0.4.0] - 2025-09-20
> **Major Release** - Consolidated Tools Mode
### โจ Improvements
- ๐ฏ **Consolidated Tools Mode Exclusively** - Removed legacy mode, all tools now use unified handler system
- ๐งน **Simplified Tool Handlers** - Removed deprecated code paths and inline plugin validation
- ๐ **Enhanced Error Handling** - Better error messages and recovery mechanisms
### ๐ง Quality & Maintenance
- โก Reduced resource usage by optimizing tool handlers
- ๐งน Cleanup of deprecated environment variables
---
## ๐ท๏ธ [0.3.1] - 2025-09-19
> **BREAKING:** Connection behavior is now on-demand
### ๐๏ธ Architecture
- ๐ **On-Demand Connection** - Shifted to intelligent on-demand connection model
- ๐ซ **No Background Processes** - Eliminated persistent background connections
### โก Performance
- Reduced resource usage and eliminated background processes
- Optimized connection state management
### ๐ก๏ธ Reliability
- Improved error handling and connection state management
- Better recovery from connection failures
---
## ๐ท๏ธ [0.3.0] - 2025-09-17
> ๐ **Initial Public Release**
### โจ Features
- ๐ฎ **13 Consolidated Tools** - Full suite of Unreal Engine automation tools
- ๐ **Normalized Asset Listing** - Auto-map `/Content` and `/Game` paths
- ๐๏ธ **Landscape Creation** - Returns real UE/Python response data
- ๐ **Action-Oriented Descriptions** - Enhanced tool documentation with usage examples
### ๐ง Quality & Maintenance
- Server version 0.3.0 with clarified 13-tool mode
- Comprehensive documentation and examples
- Lint error fixes and code style cleanup
---
<div align="center">
### ๐ Links
[](https://github.com/ChiR24/Unreal_mcp)
[](https://www.npmjs.com/package/unreal-engine-mcp-server)
[](https://www.unrealengine.com/)
</div>