blueprint-extractor-mcp 6.1.1 → 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,218 +1,218 @@
1
- <p align="center">
2
- <h1 align="center">Blueprint Extractor MCP</h1>
3
- <p align="center">
4
- Give AI assistants full read/write access to Unreal Engine projects<br>
5
- through a live editor connection.
6
- </p>
7
- </p>
8
-
9
- <p align="center">
10
- <a href="https://www.npmjs.com/package/blueprint-extractor-mcp"><img src="https://img.shields.io/npm/v/blueprint-extractor-mcp?style=flat-square&color=cb3837" alt="npm"></a>&nbsp;
11
- <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%E2%89%A518-339933?style=flat-square&logo=node.js&logoColor=white" alt="Node.js"></a>&nbsp;
12
- <a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP_SDK-1.12-5A67D8?style=flat-square" alt="MCP SDK"></a>&nbsp;
13
- <a href="https://github.com/SunGrow/ue-blueprint-extractor/blob/master/LICENSE"><img src="https://img.shields.io/github/license/SunGrow/ue-blueprint-extractor?style=flat-square" alt="License"></a>
14
- </p>
15
-
16
- <br>
17
-
18
- ## Overview
19
-
20
- Blueprint Extractor MCP is a [Model Context Protocol](https://modelcontextprotocol.io) server that bridges AI coding assistants (Claude Code, Codex, etc.) to a running Unreal Editor instance via the Remote Control HTTP API.
21
-
22
- ```
23
- AI Assistant stdio MCP Server HTTP :30010 Unreal Editor
24
- ───────────── ◄────────────► ───────────────── ◄──────────────────► ─────────────────
25
- Claude Code Node.js process Remote Control API
26
- Codex 106 tools BlueprintExtractor
27
- ... 38 resources plugin
28
- 4 resource templates
29
- 12 prompts
30
- ```
31
-
32
- **What the assistant can do through this server:**
33
-
34
- | Capability | Examples |
35
- |:-----------|:---------|
36
- | **Extract** | Read Blueprints, widgets, materials, animations, data assets, state trees, and more |
37
- | **Author** | Create and modify widgets, materials, Blueprints, input actions, AI assets, data tables |
38
- | **Build** | Compile project code, trigger Live Coding, restart the editor, sync changes |
39
- | **PIE** | Start, stop, and relaunch Play-In-Editor sessions from the active editor |
40
- | **Import** | Bring in textures, meshes, and generic assets with async job polling |
41
- | **Test** | Run UE automation tests, collect results and artifacts |
42
- | **Verify** | Capture widget previews, editor screenshots, runtime screenshots, compare against references, inspect motion checkpoints |
43
-
44
- <br>
45
-
46
- ## Quick Start
47
-
48
- ### Prerequisites
49
-
50
- You need three things running:
51
-
52
- 1. **Node.js 18+**
53
- 2. **Unreal Editor** with the **Remote Control API** plugin enabled
54
- 3. **[BlueprintExtractor](https://github.com/SunGrow/ue-blueprint-extractor)** plugin installed in your project
55
-
56
- ### Run
57
-
58
- ```bash
59
- npx blueprint-extractor-mcp
60
- ```
61
-
62
- Connects to the editor at `127.0.0.1:30010` by default.
63
-
64
- ### Add to Your AI Client
65
-
66
- <table>
67
- <tr><td><b>Claude Code</b></td></tr>
68
- <tr><td>
69
-
70
- ```bash
71
- claude mcp add -s user -t stdio blueprint-extractor \
72
- -e UE_REMOTE_CONTROL_PORT=30010 \
73
- -- npx -y blueprint-extractor-mcp@6.1.1
74
- ```
75
-
76
- </td></tr>
77
- <tr><td><b>Codex</b></td></tr>
78
- <tr><td>
79
-
80
- ```bash
81
- codex mcp add --env UE_REMOTE_CONTROL_PORT=30010 \
82
- blueprint-extractor -- npx -y blueprint-extractor-mcp@6.1.1
83
- ```
84
-
85
- </td></tr>
86
- </table>
87
-
88
- > On Windows, wrap `npx` with `cmd /c` if your shell requires it.
89
-
90
- <br>
91
-
92
- ## Tool Surface
93
-
94
- Only the compact core surface is visible by default to keep the context window lean. Specialized families are loaded on demand via `activate_workflow_scope`.
95
-
96
- | Scope | What It Unlocks |
97
- |:------|:----------------|
98
- | **Core** *(always on)* | Search, extraction, list/save/help, editor-session binding, and project-control entry points such as `extract_asset`, `search_assets`, `save_assets`, `get_tool_help`, and `activate_workflow_scope` |
99
- | `widget_authoring` | Parent scope that loads `widget_authoring_structure`, `widget_authoring_visual`, and `widget_verification` together |
100
- | `widget_authoring_structure` | Widget tree structure, hierarchy edits, wrapping, moving, replacement, and batch operations |
101
- | `widget_authoring_visual` | Widget compile flows, CommonUI styles, widget animations, and widget preview capture |
102
- | `widget_verification` | Widget capture, checkpoint bundles, capture listing, cleanup, and reference comparison |
103
- | `material_authoring` | Material creation, `material_graph_operation`, compile, and material-instance edits |
104
- | `blueprint_authoring` | Blueprint creation, member edits, graph edits, and Live Coding trigger |
105
- | `schema_ai_authoring` | Structs, enums, Blackboards, Behavior Trees, and State Trees |
106
- | `animation_authoring` | Anim sequences, montages, blend spaces, and widget motion authoring |
107
- | `data_tables` | Data assets, data tables, curves, Input Actions, and Input Mapping Contexts |
108
- | `import` | Async asset import and import-job polling |
109
- | `automation_testing` | Host-side automation runs, coarse project automation context, and PIE lifecycle control |
110
- | `analysis` | Deterministic Blueprint review and low-noise project asset audits |
111
- | `project_intelligence` | Bounded editor context, project indexing, freshness status, and snippet-first context search |
112
- | `verification` | Editor/runtime screenshots, capture comparison, motion verification, and artifact inspection |
113
-
114
- ### Contract Design
115
-
116
- The tool contract is optimized for model reliability:
117
-
118
- - **`snake_case`** inputs on all public tools
119
- - **`outputSchema`** on every tool for structured JSON responses
120
- - **`structuredContent`** carries the canonical success and error payload for MCP clients that consume structured results directly
121
- - **Structured error envelopes** with diagnostic codes and recovery hints
122
- - **Explicit-save semantics** &mdash; nothing persists until `save_assets` is called
123
- - **Next-step hints** guiding the assistant toward the logical follow-up action
124
-
125
- See [../docs/CURRENT_STATUS.md](../docs/CURRENT_STATUS.md) for the current validation snapshot, normative docs, and the one-shot stabilization ledger.
126
-
127
- <br>
128
-
129
- ## Configuration
130
-
131
- | Variable | Default | Purpose |
132
- |:---------|:--------|:--------|
133
- | `UE_REMOTE_CONTROL_HOST` | `127.0.0.1` | Editor host address |
134
- | `UE_REMOTE_CONTROL_PORT` | `30010` | Editor Remote Control port |
135
- | `UE_BLUEPRINT_EXTRACTOR_SUBSYSTEM_PATH` | *auto-probe* | Force a specific subsystem object path |
136
- | `UE_ENGINE_ROOT` | &mdash; | Engine root (needed for builds & automation) |
137
- | `UE_PROJECT_PATH` | &mdash; | Path to your `.uproject` |
138
- | `UE_PROJECT_TARGET` | &mdash; | Build target name (or `UE_EDITOR_TARGET`) |
139
- | `UE_BUILD_PLATFORM` | &mdash; | e.g. `Win64` |
140
- | `UE_BUILD_CONFIGURATION` | &mdash; | e.g. `Development` |
141
-
142
- `get_project_automation_context` surfaces the coarse editor-derived `engineRoot`, `projectFilePath`, `editorTarget`, and `isPlayingInEditor` state that project-control and verification flows use for fallback or guard logic.
143
-
144
- `get_editor_context` is the separate read-only editor-state snapshot for selection, open asset editors, active level, and PIE summary. It stays session-bound and intentionally does not open assets, change focus, or switch viewports.
145
-
146
- <br>
147
-
148
- ## Resources & Prompts
149
-
150
- Beyond tools, the server exposes **MCP resources** for reference data and **prompts** for guided multi-step workflows.
151
-
152
- ### Resource Templates
153
-
154
- ```
155
- blueprint://examples/{family} Example payloads for each tool family
156
- blueprint://widget-patterns/{pattern} Reusable widget-tree patterns
157
- blueprint://captures/{capture_id} Captured widget screenshots
158
- blueprint://test-runs/{run_id}/{artifact} Automation test artifacts
159
- ```
160
-
161
- ### Prompts
162
-
163
- | Prompt | Guides the assistant through... |
164
- |:-------|:-------------------------------|
165
- | `normalize_ui_design_input` | Converting text/image/Figma/HTML into a shared `design_spec_json` |
166
- | `design_menu_from_design_spec` | Planning a full menu implementation from a normalized spec |
167
- | `design_menu_screen` | Safe widget redesign with pre-flight inspection |
168
- | `author_material_button_style` | Composable material authoring for button states |
169
- | `author_widget_motion_from_design_spec` | Turning motion specs into animation authoring steps |
170
- | `plan_widget_motion_verification` | Keyframe-bundle verification planning |
171
- | `wire_hud_widget_classes` | Class-default wiring for HUD assets |
172
- | `debug_widget_compile_errors` | Diagnosing and recovering from compile failures |
173
- | `understand_blueprint_project` | Building a project-understanding pass over indexed assets, docs, prompts, and resources |
174
- | `review_blueprint_asset` | Running a deterministic read-only Blueprint review flow |
175
- | `snapshot_editor_context` | Inspecting bounded editor state without changing editor focus |
176
- | `audit_blueprint_project` | Running a low-noise project asset audit |
177
-
178
- <br>
179
-
180
- ## Development
181
-
182
- ```bash
183
- cd MCP
184
- npm install
185
- npm run build
186
- npm test # unit + stdio integration
187
- ```
188
-
189
- | Command | What It Validates |
190
- |:--------|:------------------|
191
- | `npm run test:pack-smoke` | Packaged tarball contract and README inclusion |
192
- | `npm run test:publish-gate` | Version consistency and publish readiness |
193
- | `BLUEPRINT_EXTRACTOR_LIVE_E2E=1 npm run test:live` | Full end-to-end against a running editor |
194
-
195
- The live suite exercises texture/mesh import via HTTP fixtures, material authoring workflows, Enhanced Input round-trips, widget authoring, and project-control round-trips.
196
-
197
- The UE runner keeps two explicit lanes:
198
-
199
- - headless/default: `BlueprintExtractor` with `-NullRHI`
200
- - rendered verification: targeted filters with `-NoNullRHI` and optional `-AllowSoftwareRendering`
201
-
202
- <br>
203
-
204
- ## Further Reading
205
-
206
- - [Repository & UE Plugin](https://github.com/SunGrow/ue-blueprint-extractor)
207
- - [MCP v2 Reference](../docs/mcp-v2-reference.md)
208
- - [Widget Motion Authoring](../docs/widget-motion-authoring.md)
209
- - [Motion Verification Workflow](../docs/motion-verification-workflow.md)
210
- - [Prompt Catalog](../docs/prompt-catalog.md)
211
-
212
- <br>
213
-
214
- ---
215
-
216
- <p align="center">
217
- <a href="https://www.npmjs.com/package/blueprint-extractor-mcp">npm</a>&nbsp;&nbsp;&bull;&nbsp;&nbsp;<a href="https://github.com/SunGrow/ue-blueprint-extractor/issues">Issues</a>&nbsp;&nbsp;&bull;&nbsp;&nbsp;<a href="https://github.com/SunGrow/ue-blueprint-extractor">GitHub</a>
218
- </p>
1
+ <p align="center">
2
+ <h1 align="center">Blueprint Extractor MCP</h1>
3
+ <p align="center">
4
+ Give AI assistants full read/write access to Unreal Engine projects<br>
5
+ through a live editor connection.
6
+ </p>
7
+ </p>
8
+
9
+ <p align="center">
10
+ <a href="https://www.npmjs.com/package/blueprint-extractor-mcp"><img src="https://img.shields.io/npm/v/blueprint-extractor-mcp?style=flat-square&color=cb3837" alt="npm"></a>&nbsp;
11
+ <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%E2%89%A518-339933?style=flat-square&logo=node.js&logoColor=white" alt="Node.js"></a>&nbsp;
12
+ <a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP_SDK-1.12-5A67D8?style=flat-square" alt="MCP SDK"></a>&nbsp;
13
+ <a href="https://github.com/SunGrow/ue-blueprint-extractor/blob/master/LICENSE"><img src="https://img.shields.io/github/license/SunGrow/ue-blueprint-extractor?style=flat-square" alt="License"></a>
14
+ </p>
15
+
16
+ <br>
17
+
18
+ ## Overview
19
+
20
+ Blueprint Extractor MCP is a [Model Context Protocol](https://modelcontextprotocol.io) server that bridges AI coding assistants (Claude Code, Codex, etc.) to a running Unreal Editor instance via the Remote Control HTTP API.
21
+
22
+ ```
23
+ AI Assistant stdio MCP Server HTTP :30010 Unreal Editor
24
+ ───────────── ◄────────────► ───────────────── ◄──────────────────► ─────────────────
25
+ Claude Code Node.js process Remote Control API
26
+ Codex 106 tools BlueprintExtractor
27
+ ... 38 resources plugin
28
+ 4 resource templates
29
+ 12 prompts
30
+ ```
31
+
32
+ **What the assistant can do through this server:**
33
+
34
+ | Capability | Examples |
35
+ |:-----------|:---------|
36
+ | **Extract** | Read Blueprints, widgets, materials, animations, data assets, state trees, and more |
37
+ | **Author** | Create and modify widgets, materials, Blueprints, input actions, AI assets, data tables |
38
+ | **Build** | Compile project code, trigger Live Coding, restart the editor, sync changes |
39
+ | **PIE** | Start, stop, and relaunch Play-In-Editor sessions from the active editor |
40
+ | **Import** | Bring in textures, meshes, and generic assets with async job polling |
41
+ | **Test** | Run UE automation tests, collect results and artifacts |
42
+ | **Verify** | Capture widget previews, editor screenshots, runtime screenshots, compare against references, inspect motion checkpoints |
43
+
44
+ <br>
45
+
46
+ ## Quick Start
47
+
48
+ ### Prerequisites
49
+
50
+ You need three things running:
51
+
52
+ 1. **Node.js 18+**
53
+ 2. **Unreal Editor** with the **Remote Control API** plugin enabled
54
+ 3. **[BlueprintExtractor](https://github.com/SunGrow/ue-blueprint-extractor)** plugin installed in your project
55
+
56
+ ### Run
57
+
58
+ ```bash
59
+ npx blueprint-extractor-mcp
60
+ ```
61
+
62
+ Connects to the editor at `127.0.0.1:30010` by default.
63
+
64
+ ### Add to Your AI Client
65
+
66
+ <table>
67
+ <tr><td><b>Claude Code</b></td></tr>
68
+ <tr><td>
69
+
70
+ ```bash
71
+ claude mcp add -s user -t stdio blueprint-extractor \
72
+ -e UE_REMOTE_CONTROL_PORT=30010 \
73
+ -- npx -y blueprint-extractor-mcp@6.1.1
74
+ ```
75
+
76
+ </td></tr>
77
+ <tr><td><b>Codex</b></td></tr>
78
+ <tr><td>
79
+
80
+ ```bash
81
+ codex mcp add --env UE_REMOTE_CONTROL_PORT=30010 \
82
+ blueprint-extractor -- npx -y blueprint-extractor-mcp@6.1.1
83
+ ```
84
+
85
+ </td></tr>
86
+ </table>
87
+
88
+ > On Windows, wrap `npx` with `cmd /c` if your shell requires it.
89
+
90
+ <br>
91
+
92
+ ## Tool Surface
93
+
94
+ Only the compact core surface is visible by default to keep the context window lean. Specialized families are loaded on demand via `activate_workflow_scope`.
95
+
96
+ | Scope | What It Unlocks |
97
+ |:------|:----------------|
98
+ | **Core** *(always on)* | Search, extraction, list/save/help, editor-session binding, and project-control entry points such as `extract_asset`, `search_assets`, `save_assets`, `get_tool_help`, and `activate_workflow_scope` |
99
+ | `widget_authoring` | Parent scope that loads `widget_authoring_structure`, `widget_authoring_visual`, and `widget_verification` together |
100
+ | `widget_authoring_structure` | Widget tree structure, hierarchy edits, wrapping, moving, replacement, and batch operations |
101
+ | `widget_authoring_visual` | Widget compile flows, CommonUI styles, widget animations, and widget preview capture |
102
+ | `widget_verification` | Widget capture, checkpoint bundles, capture listing, cleanup, and reference comparison |
103
+ | `material_authoring` | Material creation, `material_graph_operation`, compile, and material-instance edits |
104
+ | `blueprint_authoring` | Blueprint creation, member edits, graph edits, and Live Coding trigger |
105
+ | `schema_ai_authoring` | Structs, enums, Blackboards, Behavior Trees, and State Trees |
106
+ | `animation_authoring` | Anim sequences, montages, blend spaces, and widget motion authoring |
107
+ | `data_tables` | Data assets, data tables, curves, Input Actions, and Input Mapping Contexts |
108
+ | `import` | Async asset import and import-job polling |
109
+ | `automation_testing` | Host-side automation runs, coarse project automation context, and PIE lifecycle control |
110
+ | `analysis` | Deterministic Blueprint review and low-noise project asset audits |
111
+ | `project_intelligence` | Bounded editor context, project indexing, freshness status, and snippet-first context search |
112
+ | `verification` | Editor/runtime screenshots, capture comparison, motion verification, and artifact inspection |
113
+
114
+ ### Contract Design
115
+
116
+ The tool contract is optimized for model reliability:
117
+
118
+ - **`snake_case`** inputs on all public tools
119
+ - **`outputSchema`** on every tool for structured JSON responses
120
+ - **`structuredContent`** carries the canonical success and error payload for MCP clients that consume structured results directly
121
+ - **Structured error envelopes** with diagnostic codes and recovery hints
122
+ - **Explicit-save semantics** &mdash; nothing persists until `save_assets` is called
123
+ - **Next-step hints** guiding the assistant toward the logical follow-up action
124
+
125
+ See [../docs/CURRENT_STATUS.md](../docs/CURRENT_STATUS.md) for the current validation snapshot, normative docs, and the one-shot stabilization ledger.
126
+
127
+ <br>
128
+
129
+ ## Configuration
130
+
131
+ | Variable | Default | Purpose |
132
+ |:---------|:--------|:--------|
133
+ | `UE_REMOTE_CONTROL_HOST` | `127.0.0.1` | Editor host address |
134
+ | `UE_REMOTE_CONTROL_PORT` | `30010` | Editor Remote Control port |
135
+ | `UE_BLUEPRINT_EXTRACTOR_SUBSYSTEM_PATH` | *auto-probe* | Force a specific subsystem object path |
136
+ | `UE_ENGINE_ROOT` | &mdash; | Engine root (needed for builds & automation) |
137
+ | `UE_PROJECT_PATH` | &mdash; | Path to your `.uproject` |
138
+ | `UE_PROJECT_TARGET` | &mdash; | Build target name (or `UE_EDITOR_TARGET`) |
139
+ | `UE_BUILD_PLATFORM` | &mdash; | e.g. `Win64` |
140
+ | `UE_BUILD_CONFIGURATION` | &mdash; | e.g. `Development` |
141
+
142
+ `get_project_automation_context` surfaces the coarse editor-derived `engineRoot`, `projectFilePath`, `editorTarget`, and `isPlayingInEditor` state that project-control and verification flows use for fallback or guard logic.
143
+
144
+ `get_editor_context` is the separate read-only editor-state snapshot for selection, open asset editors, active level, and PIE summary. It stays session-bound and intentionally does not open assets, change focus, or switch viewports.
145
+
146
+ <br>
147
+
148
+ ## Resources & Prompts
149
+
150
+ Beyond tools, the server exposes **MCP resources** for reference data and **prompts** for guided multi-step workflows.
151
+
152
+ ### Resource Templates
153
+
154
+ ```
155
+ blueprint://examples/{family} Example payloads for each tool family
156
+ blueprint://widget-patterns/{pattern} Reusable widget-tree patterns
157
+ blueprint://captures/{capture_id} Captured widget screenshots
158
+ blueprint://test-runs/{run_id}/{artifact} Automation test artifacts
159
+ ```
160
+
161
+ ### Prompts
162
+
163
+ | Prompt | Guides the assistant through... |
164
+ |:-------|:-------------------------------|
165
+ | `normalize_ui_design_input` | Converting text/image/Figma/HTML into a shared `design_spec_json` |
166
+ | `design_menu_from_design_spec` | Planning a full menu implementation from a normalized spec |
167
+ | `design_menu_screen` | Safe widget redesign with pre-flight inspection |
168
+ | `author_material_button_style` | Composable material authoring for button states |
169
+ | `author_widget_motion_from_design_spec` | Turning motion specs into animation authoring steps |
170
+ | `plan_widget_motion_verification` | Keyframe-bundle verification planning |
171
+ | `wire_hud_widget_classes` | Class-default wiring for HUD assets |
172
+ | `debug_widget_compile_errors` | Diagnosing and recovering from compile failures |
173
+ | `understand_blueprint_project` | Building a project-understanding pass over indexed assets, docs, prompts, and resources |
174
+ | `review_blueprint_asset` | Running a deterministic read-only Blueprint review flow |
175
+ | `snapshot_editor_context` | Inspecting bounded editor state without changing editor focus |
176
+ | `audit_blueprint_project` | Running a low-noise project asset audit |
177
+
178
+ <br>
179
+
180
+ ## Development
181
+
182
+ ```bash
183
+ cd MCP
184
+ npm install
185
+ npm run build
186
+ npm test # unit + stdio integration
187
+ ```
188
+
189
+ | Command | What It Validates |
190
+ |:--------|:------------------|
191
+ | `npm run test:pack-smoke` | Packaged tarball contract and README inclusion |
192
+ | `npm run test:publish-gate` | Version consistency and publish readiness |
193
+ | `BLUEPRINT_EXTRACTOR_LIVE_E2E=1 npm run test:live` | Full end-to-end against a running editor |
194
+
195
+ The live suite exercises texture/mesh import via HTTP fixtures, material authoring workflows, Enhanced Input round-trips, widget authoring, and project-control round-trips.
196
+
197
+ The UE runner keeps two explicit lanes:
198
+
199
+ - headless/default: `BlueprintExtractor` with `-NullRHI`
200
+ - rendered verification: targeted filters with `-NoNullRHI` and optional `-AllowSoftwareRendering`
201
+
202
+ <br>
203
+
204
+ ## Further Reading
205
+
206
+ - [Repository & UE Plugin](https://github.com/SunGrow/ue-blueprint-extractor)
207
+ - [MCP v2 Reference](../docs/mcp-v2-reference.md)
208
+ - [Widget Motion Authoring](../docs/widget-motion-authoring.md)
209
+ - [Motion Verification Workflow](../docs/motion-verification-workflow.md)
210
+ - [Prompt Catalog](../docs/prompt-catalog.md)
211
+
212
+ <br>
213
+
214
+ ---
215
+
216
+ <p align="center">
217
+ <a href="https://www.npmjs.com/package/blueprint-extractor-mcp">npm</a>&nbsp;&nbsp;&bull;&nbsp;&nbsp;<a href="https://github.com/SunGrow/ue-blueprint-extractor/issues">Issues</a>&nbsp;&nbsp;&bull;&nbsp;&nbsp;<a href="https://github.com/SunGrow/ue-blueprint-extractor">GitHub</a>
218
+ </p>
@@ -69,8 +69,8 @@ export function registerStaticDocResources(server) {
69
69
  '- AnimSequence: notify selector by notifyId/notifyGuid with notifyIndex or track metadata as fallback; operations replace_notifies, patch_notify, replace_sync_markers, replace_curve_metadata.',
70
70
  '- AnimMontage: notify selector by notifyId/notifyGuid with notifyIndex or track metadata as fallback; operations replace_notifies, patch_notify, replace_sections, replace_slots.',
71
71
  '- BlendSpace: sample selector by sampleIndex; operations replace_samples, patch_sample, set_axes.',
72
- '- Blueprint members: selectors by variableName, componentName, and functionName; operations replace_variables, patch_variable, replace_components, patch_component, add_component, replace_function_stubs, reparent, patch_class_defaults, compile. Reparenting uses payload.parentClassPath, and payload.parent_class_path is accepted as an alias.',
73
- '- Blueprint graphs: operation upsert_function_graphs preserves unrelated graphs; append_function_call_to_sequence patches an existing sequence-style initializer without replacing the whole graph.',
72
+ '- Blueprint members: selectors by variableName, componentName, and functionName; operations replace_variables, add_variables, patch_variable, replace_components, patch_component, add_component, replace_function_stubs, reparent, patch_class_defaults, compile. add_variables appends new variables without removing existing ones (preserves GUIDs — safe for AnimBlueprints). replace_variables destroys and recreates all variables (breaks AnimGraph references). Reparenting uses payload.parentClassPath, and payload.parent_class_path is accepted as an alias.',
73
+ '- Blueprint graphs: operation upsert_function_graphs preserves unrelated graphs; append_function_call_to_sequence patches an existing sequence-style initializer without replacing the whole graph. AnimGraph operations: add_animgraph_nodes creates nodes by class name (e.g. AnimGraphNode_ModifyBone) with properties set via reflection and optional connections; connect_animgraph_pins wires existing nodes. Reference nodes by user ID, class name (AnimGraphNode_Root), or GUID. Pin format: "nodeRef:pinName".',
74
74
  '',
75
75
  'WidgetBlueprint guidance:',
76
76
  '- replace_widget_tree is the destructive bootstrap path for whole-tree replacement.',
@@ -1859,8 +1859,8 @@ export declare const StateTreeMutationOperationSchema: z.ZodEnum<["replace_tree"
1859
1859
  export declare const AnimSequenceMutationOperationSchema: z.ZodEnum<["replace_notifies", "patch_notify", "replace_sync_markers", "replace_curve_metadata"]>;
1860
1860
  export declare const AnimMontageMutationOperationSchema: z.ZodEnum<["replace_notifies", "patch_notify", "replace_sections", "replace_slots"]>;
1861
1861
  export declare const BlendSpaceMutationOperationSchema: z.ZodEnum<["replace_samples", "patch_sample", "set_axes"]>;
1862
- export declare const BlueprintMemberMutationOperationSchema: z.ZodEnum<["replace_variables", "patch_variable", "replace_components", "patch_component", "add_component", "replace_function_stubs", "reparent", "patch_class_defaults", "compile"]>;
1863
- export declare const BlueprintGraphMutationOperationSchema: z.ZodEnum<["upsert_function_graphs", "append_function_call_to_sequence", "compile"]>;
1862
+ export declare const BlueprintMemberMutationOperationSchema: z.ZodEnum<["replace_variables", "add_variables", "patch_variable", "replace_components", "patch_component", "add_component", "replace_function_stubs", "reparent", "patch_class_defaults", "compile"]>;
1863
+ export declare const BlueprintGraphMutationOperationSchema: z.ZodEnum<["upsert_function_graphs", "append_function_call_to_sequence", "add_animgraph_nodes", "connect_animgraph_pins", "compile"]>;
1864
1864
  export declare const UserDefinedStructFieldSchema: z.ZodObject<{
1865
1865
  guid: z.ZodOptional<z.ZodString>;
1866
1866
  name: z.ZodOptional<z.ZodString>;
@@ -382,6 +382,7 @@ export const BlendSpaceMutationOperationSchema = z.enum([
382
382
  ]);
383
383
  export const BlueprintMemberMutationOperationSchema = z.enum([
384
384
  'replace_variables',
385
+ 'add_variables',
385
386
  'patch_variable',
386
387
  'replace_components',
387
388
  'patch_component',
@@ -394,6 +395,8 @@ export const BlueprintMemberMutationOperationSchema = z.enum([
394
395
  export const BlueprintGraphMutationOperationSchema = z.enum([
395
396
  'upsert_function_graphs',
396
397
  'append_function_call_to_sequence',
398
+ 'add_animgraph_nodes',
399
+ 'connect_animgraph_pins',
397
400
  'compile',
398
401
  ]);
399
402
  export const UserDefinedStructFieldSchema = z.object({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blueprint-extractor-mcp",
3
- "version": "6.1.1",
3
+ "version": "6.3.0",
4
4
  "description": "MCP server for the Unreal Engine BlueprintExtractor plugin over Remote Control",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",