Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions .changelogs/NEXT.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,6 @@

## Added

- 9 new Python unit test files covering all v3.3–v3.8 ops modules: animation, audio, material_graph, datatable, struct_enum, input_system, mesh, pcg, statetree (327 tests total)
- Phase 7 smoke tests in `test-comprehensive-mcp.js` covering all 47 new tools from v3.3–v3.8
- `testToolStrict()` helper in comprehensive MCP test to reduce error-check boilerplate

## Fixed

- PCG plugin crash on `restart_listener()`: `unreal.PCGGraphInterface` type annotation in `pcg.py` was evaluated at import time, causing `AttributeError` that killed the listener. Fixed with `from __future__ import annotations` + `hasattr` import guard (mirrors Niagara pattern)
- PCG tools now registered conditionally — gracefully skipped when PCG plugin is absent, matching Niagara's optional registration pattern
## Changed
32 changes: 32 additions & 0 deletions .changelogs/v3.8.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Release v3.8.0

Released: 2026-04-02

## Features

- **Niagara VFX System** (v3.2) — 8 new MCP tools: create systems, add emitters/modules, configure renderers, compile, spawn actors, set parameters, list templates. Rewritten for UE 5.7 Python API
- **Performance Profiling** (v3.3) — 3 new MCP tools: `perf_rendering_stats`, `perf_gpu_stats`, `perf_scene_breakdown` for scene analysis and rendering cost inspection
- **Animation Blueprint System** (v3.4) — 8 new MCP tools: create ABPs, state machines, states, transitions, variables, montages, layer linking, and metadata inspection
- **Advanced Materials & Audio** (v3.5) — 10 new MCP tools: material graph editing (add/connect expressions, set properties, create functions, inspect graph), MetaSound asset creation and node routing
- **Data & Procedural Systems** (v3.6) — 12 new MCP tools: DataTable CRUD (create/add/get/update/delete rows), custom struct and enum creation, Enhanced Input System mapping
- **PCG & StateTree AI** (v3.7) — 14 new MCP tools: PCG graph creation and node management (195+ node types), StateTree asset authoring with states, transitions, tasks, evaluators, and bindings
- **Mesh & LOD Management** (v3.8) — 5 new MCP tools: mesh metadata inspection, FBX LOD import, LOD screen-size thresholds, auto LOD generation, per-LOD instance breakdown

## Testing

- 310 Python unit tests across all ops modules (up from 51 in v3.1.0)
- Phase 7 smoke tests in `test-comprehensive-mcp.js` covering all 52 new tools from v3.3–v3.8
- `testToolStrict()` helper reduces error-check boilerplate in comprehensive E2E tests
Comment thread
atomantic marked this conversation as resolved.

## Bug Fixes

- PCG plugin crash on `restart_listener()`: `unreal.PCGGraphInterface` type annotation evaluated at import time caused `AttributeError`. Fixed with `from __future__ import annotations` + `hasattr` import guard
- PCG tools registered conditionally — gracefully skipped when PCG plugin absent (mirrors Niagara pattern)
- `test_performance` no longer overwrites shared `unreal` mock across test modules
- Restored closing triple-quote in `ops/__init__.py` docstring
- Niagara `set_parameter` complexity reduced — extracted typed dispatch helpers to satisfy linter
- E2E log scanner no longer flags expected error-handling test failures as CI failures

## Full Changelog

**Full Diff**: https://github.com/atomantic/UEMCP/compare/v3.1.0...v3.8.0
Binary file modified Demo/Content/Calibration.umap
Binary file not shown.
160 changes: 80 additions & 80 deletions PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
- [x] Update dev dependencies (TypeScript, ESLint plugins, tsx, ts-jest)
- [x] Bump version to 2.1.0

## Current Focus: v3.0.0 — Blueprint Graph Editing & Game Logic
## v3.0.0 — Blueprint Graph Editing & Game Logic ✅

The #1 gap vs competitors: we can create/compile/document Blueprints but cannot edit the visual graph. This transforms AI from "scene builder" to "game logic builder."

Expand Down Expand Up @@ -53,124 +53,124 @@ The #1 gap vs competitors: we can create/compile/document Blueprints but cannot
- [x] `blueprint_modify_component` — Set any component property via reflection
- [x] `blueprint_set_variable_default` — Set default values on CDO

## v3.1.0 — UMG Widget System
## v3.1.0 — UMG Widget System ✅

Full UI building capability — essential for any real game.

- [ ] `widget_create` — Create Widget Blueprint with parent class
- [ ] `widget_add_component` — Add UI components (TextBlock, Button, Image, Slider, Checkbox, ProgressBar, etc.)
- [ ] `widget_set_layout` — Position, size, anchors, z-order, alignment
- [ ] `widget_set_property` — Set component properties (text, color, font, opacity)
- [ ] `widget_bind_event` — Bind events (OnClicked, OnHovered, OnValueChanged, input events)
- [ ] `widget_set_binding` — Property bindings for dynamic data
- [ ] `widget_get_metadata` — Comprehensive widget inspection (components, layout, hierarchy, bindings)
- [ ] `widget_screenshot` — Capture widget preview for visual verification
- [x] `widget_create` — Create Widget Blueprint with parent class
- [x] `widget_add_component` — Add UI components (TextBlock, Button, Image, Slider, Checkbox, ProgressBar, etc.)
- [x] `widget_set_layout` — Position, size, anchors, z-order, alignment
- [x] `widget_set_property` — Set component properties (text, color, font, opacity)
- [x] `widget_bind_event` — Bind events (OnClicked, OnHovered, OnValueChanged, input events)
- [x] `widget_set_binding` — Property bindings for dynamic data
- [x] `widget_get_metadata` — Comprehensive widget inspection (components, layout, hierarchy, bindings)
- [x] `widget_screenshot` — Capture widget preview for visual verification

## v3.2.0 — Niagara VFX System
## v3.2.0 — Niagara VFX System ✅

Visual effects are a common AI-assisted task.

- [ ] `niagara_create_system` — Create Niagara systems (with templates)
- [ ] `niagara_add_emitter` — Add emitters to systems
- [ ] `niagara_add_module` — Add modules (spawn, update, render) to emitters
- [ ] `niagara_configure_module` — Set module parameters (float, vector, curve, enum)
- [ ] `niagara_set_renderer` — Configure sprite/mesh/ribbon renderers
- [ ] `niagara_compile` — Compile and save systems
- [ ] `niagara_spawn` — Create VFX actors in the world
- [ ] `niagara_get_metadata` — Inspect system structure
- [x] `niagara_create_system` — Create Niagara systems (with templates)
- [x] `niagara_add_emitter` — Add emitters to systems
- [x] `niagara_add_module` — Add modules (spawn, update, render) to emitters
- [x] `niagara_configure_module` — Set module parameters (float, vector, curve, enum)
- [x] `niagara_set_renderer` — Configure sprite/mesh/ribbon renderers
- [x] `niagara_compile` — Compile and save systems
- [x] `niagara_spawn` — Create VFX actors in the world
- [x] `niagara_get_metadata` — Inspect system structure

## v3.3.0 — Performance Profiling & Console
## v3.3.0 — Performance Profiling & Console ✅

Low effort, high utility.

- [ ] `perf_rendering_stats` — Draw calls, VRAM usage, instance breakdown
- [ ] `perf_gpu_stats` — GPU timing and memory
- [ ] `perf_scene_breakdown` — Per-mesh rendering costs, LOD breakdown
- [ ] `console_command` — Execute any UE console command directly
- [x] `perf_rendering_stats` — Draw calls, VRAM usage, instance breakdown
- [x] `perf_gpu_stats` — GPU timing and memory
- [x] `perf_scene_breakdown` — Per-mesh rendering costs, LOD breakdown
- [x] `console_command` — Execute any UE console command directly

## v3.4.0 — Animation Blueprint System
## v3.4.0 — Animation Blueprint System ✅

Required for character-driven games.

- [ ] `anim_create_blueprint` — Create Animation Blueprint with skeleton reference
- [ ] `anim_create_state_machine` — Build state machines programmatically
- [ ] `anim_add_state` — Add states with animation references
- [ ] `anim_add_transition` — Connect states with transition rules
- [ ] `anim_add_variable` — Add typed variables to ABP
- [ ] `anim_get_metadata` — Inspect states, variables, montages
- [ ] `anim_create_montage` — Create animation montages
- [ ] `anim_link_layer` — Animation layer stacking
- [x] `anim_create_blueprint` — Create Animation Blueprint with skeleton reference
- [x] `anim_create_state_machine` — Build state machines programmatically
- [x] `anim_add_state` — Add states with animation references
- [x] `anim_add_transition` — Connect states with transition rules
- [x] `anim_add_variable` — Add typed variables to ABP
- [x] `anim_get_metadata` — Inspect states, variables, montages
- [x] `anim_create_montage` — Create animation montages
- [x] `anim_link_layer` — Animation layer stacking

## v3.5.0 — Advanced Materials & Audio
## v3.5.0 — Advanced Materials & Audio ✅

### Material Graph Editing

- [ ] `material_add_expression` — Add expression nodes (texture sample, math, parameters, custom HLSL)
- [ ] `material_connect_expressions` — Link expression inputs/outputs
- [ ] `material_set_expression_property` — Configure expression settings
- [ ] `material_create_function` — Reusable material node graphs
- [ ] `material_get_graph` — Inspect material expression structure and connections
- [x] `material_add_expression` — Add expression nodes (texture sample, math, parameters, custom HLSL)
- [x] `material_connect_expressions` — Link expression inputs/outputs
- [x] `material_set_expression_property` — Configure expression settings
- [x] `material_create_function` — Reusable material node graphs
- [x] `material_get_graph` — Inspect material expression structure and connections

### MetaSound/Audio

- [ ] `audio_import` — Import WAV, MP3, OGG, FLAC, AIFF
- [ ] `audio_create_metasound` — Create MetaSound source/patch assets
- [ ] `audio_add_node` — Add audio nodes (oscillators, filters, envelopes)
- [ ] `audio_connect_nodes` — Audio routing between nodes
- [ ] `audio_set_parameter` — Configure audio parameters
- [x] `audio_import` — Import WAV, MP3, OGG, FLAC, AIFF
- [x] `audio_create_metasound` — Create MetaSound source/patch assets
- [x] `audio_add_node` — Add audio nodes (oscillators, filters, envelopes)
- [x] `audio_connect_nodes` — Audio routing between nodes
- [x] `audio_set_parameter` — Configure audio parameters

## v3.6.0 — Data & Procedural Systems
## v3.6.0 — Data & Procedural Systems ✅

### DataTable CRUD

- [ ] `datatable_create` — Create DataTables with struct definition
- [ ] `datatable_add_rows` — Add rows with property mapping
- [ ] `datatable_get_rows` — Query rows by name
- [ ] `datatable_update_row` — Modify existing rows
- [ ] `datatable_delete_row` — Remove rows
- [x] `datatable_create` — Create DataTables with struct definition
- [x] `datatable_add_rows` — Add rows with property mapping
- [x] `datatable_get_rows` — Query rows by name
- [x] `datatable_update_row` — Modify existing rows
- [x] `datatable_delete_row` — Remove rows

### Struct & Enum Creation

- [ ] `struct_create` — Create custom UE structs with typed properties
- [ ] `struct_update` — Modify existing structs
- [ ] `enum_create` — Create enum definitions
- [ ] `enum_get_values` — List enum values
- [x] `struct_create` — Create custom UE structs with typed properties
- [x] `struct_update` — Modify existing structs
- [x] `enum_create` — Create enum definitions
- [x] `enum_get_values` — List enum values

### Enhanced Input System

- [ ] `input_create_mapping` — Create input mappings with modifier support
- [ ] `input_list_actions` — List available input actions
- [ ] `input_get_metadata` — Input system introspection
- [x] `input_create_mapping` — Create input mappings with modifier support
- [x] `input_list_actions` — List available input actions
- [x] `input_get_metadata` — Input system introspection

## v3.7.0 — PCG & StateTree AI
## v3.7.0 — PCG & StateTree AI ✅

### Procedural Content Generation

- [ ] `pcg_create_graph` — Create PCG graphs (with built-in templates)
- [ ] `pcg_add_node` — Add nodes from 195+ available types
- [ ] `pcg_connect_nodes` — Wire node connections
- [ ] `pcg_set_node_property` — Configure node settings
- [ ] `pcg_search_palette` — Discover available node types
- [ ] `pcg_spawn_actor` — Create PCG component actors
- [ ] `pcg_execute` — Run procedural generation
- [x] `pcg_create_graph` — Create PCG graphs (with built-in templates)
- [x] `pcg_add_node` — Add nodes from 195+ available types
- [x] `pcg_connect_nodes` — Wire node connections
- [x] `pcg_set_node_property` — Configure node settings
- [x] `pcg_search_palette` — Discover available node types
- [x] `pcg_spawn_actor` — Create PCG component actors
- [x] `pcg_execute` — Run procedural generation

### StateTree AI

- [ ] `statetree_create` — Create StateTree assets with schema
- [ ] `statetree_add_state` — Add execution states
- [ ] `statetree_add_transition` — State transition logic
- [ ] `statetree_add_task` — Task execution nodes
- [ ] `statetree_add_evaluator` — Global evaluators
- [ ] `statetree_add_binding` — Property and target bindings
- [ ] `statetree_get_metadata` — Full structure inspection

## v3.8.0 — Mesh & LOD Management

- [ ] `mesh_get_metadata` — LOD count, vertices, triangles, bounds, materials, Nanite support
- [ ] `mesh_import_lod` — Import FBX into LOD slots
- [ ] `mesh_set_lod_screen_size` — Set LOD transition thresholds
- [ ] `mesh_auto_generate_lods` — Built-in mesh reduction
- [ ] `mesh_get_instance_breakdown` — Rendering cost per LOD
- [x] `statetree_create` — Create StateTree assets with schema
- [x] `statetree_add_state` — Add execution states
- [x] `statetree_add_transition` — State transition logic
- [x] `statetree_add_task` — Task execution nodes
- [x] `statetree_add_evaluator` — Global evaluators
- [x] `statetree_add_binding` — Property and target bindings
- [x] `statetree_get_metadata` — Full structure inspection

## v3.8.0 — Mesh & LOD Management ✅

- [x] `mesh_get_metadata` — LOD count, vertices, triangles, bounds, materials, Nanite support
- [x] `mesh_import_lod` — Import FBX into LOD slots
- [x] `mesh_set_lod_screen_size` — Set LOD transition thresholds
- [x] `mesh_auto_generate_lods` — Built-in mesh reduction
- [x] `mesh_get_instance_breakdown` — Rendering cost per LOD

## Backlog

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "uemcp",
"version": "3.1.0",
"version": "3.8.0",
"description": "Unreal Engine Model Context Protocol - AI Assistant Integration",
"keywords": [
"unreal-engine",
Expand Down
Loading
Loading