blueprint-extractor-mcp 8.0.1 → 8.1.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.
Files changed (172) hide show
  1. package/README.md +6 -2
  2. package/dist/active-editor-session.d.ts +0 -0
  3. package/dist/active-editor-session.js +0 -0
  4. package/dist/automation-controller.d.ts +0 -0
  5. package/dist/automation-controller.js +0 -0
  6. package/dist/catalogs/example-catalog.d.ts +0 -0
  7. package/dist/catalogs/example-catalog.js +0 -0
  8. package/dist/compactor.d.ts +0 -0
  9. package/dist/compactor.js +0 -0
  10. package/dist/editor-instance-registry.d.ts +0 -0
  11. package/dist/editor-instance-registry.js +0 -0
  12. package/dist/editor-instance-types.d.ts +0 -0
  13. package/dist/editor-instance-types.js +0 -0
  14. package/dist/execution/adapters/commandlet-adapter.d.ts +0 -0
  15. package/dist/execution/adapters/commandlet-adapter.js +0 -0
  16. package/dist/execution/adapters/editor-adapter.d.ts +0 -0
  17. package/dist/execution/adapters/editor-adapter.js +0 -0
  18. package/dist/execution/adapters/lazy-commandlet-adapter.d.ts +0 -0
  19. package/dist/execution/adapters/lazy-commandlet-adapter.js +0 -0
  20. package/dist/execution/adaptive-executor.d.ts +0 -0
  21. package/dist/execution/adaptive-executor.js +0 -0
  22. package/dist/execution/execution-adapter.d.ts +0 -0
  23. package/dist/execution/execution-adapter.js +0 -0
  24. package/dist/execution/execution-mode-detector.d.ts +0 -0
  25. package/dist/execution/execution-mode-detector.js +0 -0
  26. package/dist/execution/index.d.ts +0 -0
  27. package/dist/execution/index.js +0 -0
  28. package/dist/helpers/active-editor-utils.d.ts +0 -0
  29. package/dist/helpers/active-editor-utils.js +0 -0
  30. package/dist/helpers/alias-registration.d.ts +0 -0
  31. package/dist/helpers/alias-registration.js +0 -0
  32. package/dist/helpers/blueprint-dsl-parser.d.ts +0 -0
  33. package/dist/helpers/blueprint-dsl-parser.js +0 -0
  34. package/dist/helpers/blueprint-validation.d.ts +0 -0
  35. package/dist/helpers/blueprint-validation.js +0 -0
  36. package/dist/helpers/capture.d.ts +0 -0
  37. package/dist/helpers/capture.js +0 -0
  38. package/dist/helpers/commonui-button-style.d.ts +0 -0
  39. package/dist/helpers/commonui-button-style.js +0 -0
  40. package/dist/helpers/composite-patterns.d.ts +0 -0
  41. package/dist/helpers/composite-patterns.js +0 -0
  42. package/dist/helpers/formatting.d.ts +0 -0
  43. package/dist/helpers/formatting.js +0 -0
  44. package/dist/helpers/live-coding.d.ts +0 -0
  45. package/dist/helpers/live-coding.js +0 -0
  46. package/dist/helpers/material-dsl-parser.d.ts +0 -0
  47. package/dist/helpers/material-dsl-parser.js +0 -0
  48. package/dist/helpers/mutation-filter.d.ts +0 -0
  49. package/dist/helpers/mutation-filter.js +0 -0
  50. package/dist/helpers/next-step-hints.d.ts +0 -0
  51. package/dist/helpers/next-step-hints.js +0 -0
  52. package/dist/helpers/operation-deny-list.d.ts +0 -0
  53. package/dist/helpers/operation-deny-list.js +0 -0
  54. package/dist/helpers/package-metadata.d.ts +0 -0
  55. package/dist/helpers/package-metadata.js +0 -0
  56. package/dist/helpers/phantom-filter.d.ts +0 -0
  57. package/dist/helpers/phantom-filter.js +0 -0
  58. package/dist/helpers/project-resolution.d.ts +0 -0
  59. package/dist/helpers/project-resolution.js +0 -0
  60. package/dist/helpers/project-utils.d.ts +0 -0
  61. package/dist/helpers/project-utils.js +0 -0
  62. package/dist/helpers/property-path-parser.d.ts +0 -0
  63. package/dist/helpers/property-path-parser.js +0 -0
  64. package/dist/helpers/property-shorthand.d.ts +0 -0
  65. package/dist/helpers/property-shorthand.js +0 -0
  66. package/dist/helpers/response-summarizer.d.ts +0 -0
  67. package/dist/helpers/response-summarizer.js +0 -0
  68. package/dist/helpers/slot-presets.d.ts +0 -0
  69. package/dist/helpers/slot-presets.js +0 -0
  70. package/dist/helpers/subsystem.d.ts +0 -0
  71. package/dist/helpers/subsystem.js +0 -0
  72. package/dist/helpers/token-budget.d.ts +0 -0
  73. package/dist/helpers/token-budget.js +0 -0
  74. package/dist/helpers/tool-help.d.ts +0 -0
  75. package/dist/helpers/tool-help.js +0 -0
  76. package/dist/helpers/tool-registration.d.ts +0 -0
  77. package/dist/helpers/tool-registration.js +0 -0
  78. package/dist/helpers/tool-results.d.ts +0 -0
  79. package/dist/helpers/tool-results.js +0 -0
  80. package/dist/helpers/verification.d.ts +0 -0
  81. package/dist/helpers/verification.js +0 -0
  82. package/dist/helpers/widget-class-aliases.d.ts +0 -0
  83. package/dist/helpers/widget-class-aliases.js +0 -0
  84. package/dist/helpers/widget-diff-parser.d.ts +0 -0
  85. package/dist/helpers/widget-diff-parser.js +0 -0
  86. package/dist/helpers/widget-dsl-parser.d.ts +0 -0
  87. package/dist/helpers/widget-dsl-parser.js +0 -0
  88. package/dist/helpers/widget-recipe-formatter.d.ts +0 -0
  89. package/dist/helpers/widget-recipe-formatter.js +0 -0
  90. package/dist/helpers/widget-recipe-parser.d.ts +0 -0
  91. package/dist/helpers/widget-recipe-parser.js +0 -0
  92. package/dist/helpers/widget-utils.d.ts +0 -0
  93. package/dist/helpers/widget-utils.js +0 -0
  94. package/dist/helpers/workspace-project.d.ts +0 -0
  95. package/dist/helpers/workspace-project.js +0 -0
  96. package/dist/index.d.ts +0 -0
  97. package/dist/index.js +0 -0
  98. package/dist/project-controller.d.ts +0 -0
  99. package/dist/project-controller.js +0 -0
  100. package/dist/prompts/prompt-catalog.d.ts +2 -2
  101. package/dist/prompts/prompt-catalog.js +4 -1
  102. package/dist/register-server-resources.d.ts +5 -2
  103. package/dist/register-server-resources.js +2 -1
  104. package/dist/register-server-tools.d.ts +0 -0
  105. package/dist/register-server-tools.js +0 -0
  106. package/dist/resources/example-and-capture-resources.d.ts +0 -0
  107. package/dist/resources/example-and-capture-resources.js +0 -0
  108. package/dist/resources/static-doc-resources.d.ts +0 -0
  109. package/dist/resources/static-doc-resources.js +0 -0
  110. package/dist/schemas/tool-inputs.d.ts +0 -0
  111. package/dist/schemas/tool-inputs.js +0 -0
  112. package/dist/schemas/tool-results.d.ts +0 -0
  113. package/dist/schemas/tool-results.js +0 -0
  114. package/dist/server-config.d.ts +0 -0
  115. package/dist/server-config.js +0 -0
  116. package/dist/server-factory.d.ts +0 -0
  117. package/dist/server-factory.js +35 -2
  118. package/dist/tool-context.d.ts +0 -0
  119. package/dist/tool-context.js +0 -0
  120. package/dist/tool-surface-manager.d.ts +0 -0
  121. package/dist/tool-surface-manager.js +0 -0
  122. package/dist/tools/analysis-tools.d.ts +0 -0
  123. package/dist/tools/analysis-tools.js +0 -0
  124. package/dist/tools/animation-authoring.d.ts +0 -0
  125. package/dist/tools/animation-authoring.js +0 -0
  126. package/dist/tools/automation-runs.d.ts +0 -0
  127. package/dist/tools/automation-runs.js +0 -0
  128. package/dist/tools/blueprint-authoring.d.ts +0 -0
  129. package/dist/tools/blueprint-authoring.js +0 -0
  130. package/dist/tools/commonui-button-style.d.ts +0 -0
  131. package/dist/tools/commonui-button-style.js +0 -0
  132. package/dist/tools/composite-tools.d.ts +0 -0
  133. package/dist/tools/composite-tools.js +0 -0
  134. package/dist/tools/composite-workflows.d.ts +0 -0
  135. package/dist/tools/composite-workflows.js +0 -0
  136. package/dist/tools/data-and-input.d.ts +0 -0
  137. package/dist/tools/data-and-input.js +0 -0
  138. package/dist/tools/extraction.d.ts +0 -0
  139. package/dist/tools/extraction.js +0 -0
  140. package/dist/tools/import-jobs.d.ts +0 -0
  141. package/dist/tools/import-jobs.js +0 -0
  142. package/dist/tools/material-authoring.d.ts +0 -0
  143. package/dist/tools/material-authoring.js +0 -0
  144. package/dist/tools/material-instance.d.ts +0 -0
  145. package/dist/tools/material-instance.js +0 -0
  146. package/dist/tools/project-control.d.ts +0 -0
  147. package/dist/tools/project-control.js +0 -0
  148. package/dist/tools/project-intelligence.d.ts +0 -0
  149. package/dist/tools/project-intelligence.js +0 -0
  150. package/dist/tools/recipe-tools.d.ts +0 -0
  151. package/dist/tools/recipe-tools.js +0 -0
  152. package/dist/tools/schema-and-ai-authoring.d.ts +0 -0
  153. package/dist/tools/schema-and-ai-authoring.js +0 -0
  154. package/dist/tools/tables-and-curves.d.ts +0 -0
  155. package/dist/tools/tables-and-curves.js +0 -0
  156. package/dist/tools/utility-tools.d.ts +0 -0
  157. package/dist/tools/utility-tools.js +0 -0
  158. package/dist/tools/widget-animation-authoring.d.ts +0 -0
  159. package/dist/tools/widget-animation-authoring.js +0 -0
  160. package/dist/tools/widget-extraction.d.ts +0 -0
  161. package/dist/tools/widget-extraction.js +0 -0
  162. package/dist/tools/widget-structure.d.ts +0 -0
  163. package/dist/tools/widget-structure.js +0 -0
  164. package/dist/tools/widget-verification.d.ts +0 -0
  165. package/dist/tools/widget-verification.js +0 -0
  166. package/dist/tools/window-ui.d.ts +0 -0
  167. package/dist/tools/window-ui.js +0 -0
  168. package/dist/types.d.ts +0 -0
  169. package/dist/types.js +0 -0
  170. package/dist/ue-client.d.ts +0 -0
  171. package/dist/ue-client.js +0 -0
  172. package/package.json +1 -1
package/README.md CHANGED
@@ -86,6 +86,10 @@ codex mcp add --env UE_REMOTE_CONTROL_PORT=30010 \
86
86
  <tr><td><b>OpenCode</b></td></tr>
87
87
  <tr><td>
88
88
 
89
+ ```bash
90
+ npm install --prefix ~/.config/opencode --save-exact blueprint-extractor-mcp@latest
91
+ ```
92
+
89
93
  ```jsonc
90
94
  // ~/.config/opencode/opencode.json
91
95
  {
@@ -93,7 +97,7 @@ codex mcp add --env UE_REMOTE_CONTROL_PORT=30010 \
93
97
  "mcp": {
94
98
  "blueprint-extractor": {
95
99
  "type": "local",
96
- "command": ["npx", "-y", "blueprint-extractor-mcp@latest"],
100
+ "command": ["/absolute/path/to/.config/opencode/node_modules/.bin/blueprint-extractor-mcp"],
97
101
  "enabled": true,
98
102
  "environment": {
99
103
  "UE_REMOTE_CONTROL_PORT": "30010"
@@ -106,7 +110,7 @@ codex mcp add --env UE_REMOTE_CONTROL_PORT=30010 \
106
110
  </td></tr>
107
111
  </table>
108
112
 
109
- > On Windows, wrap `npx` with `cmd /c` if your shell requires it.
113
+ > On Windows, point `command` at `C:\Users\you\.config\opencode\node_modules\.bin\blueprint-extractor-mcp.cmd`.
110
114
 
111
115
  <br>
112
116
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/dist/compactor.js CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/dist/index.d.ts CHANGED
File without changes
package/dist/index.js CHANGED
File without changes
File without changes
File without changes
@@ -1,4 +1,4 @@
1
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
1
+ import type { McpServer, RegisteredPrompt } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import { z } from 'zod';
3
3
  export type PromptCatalogEntry = {
4
4
  title: string;
@@ -105,4 +105,4 @@ export declare const designSpecSchemaExample: {
105
105
  };
106
106
  };
107
107
  export declare const promptCatalog: Record<string, PromptCatalogEntry>;
108
- export declare function registerPromptCatalog(server: Pick<McpServer, 'registerPrompt'>): void;
108
+ export declare function registerPromptCatalog(server: Pick<McpServer, 'registerPrompt'>): Map<string, RegisteredPrompt>;
@@ -342,8 +342,9 @@ export const promptCatalog = {
342
342
  },
343
343
  };
344
344
  export function registerPromptCatalog(server) {
345
+ const registeredPrompts = new Map();
345
346
  for (const [name, prompt] of Object.entries(promptCatalog)) {
346
- server.registerPrompt(name, {
347
+ const registeredPrompt = server.registerPrompt(name, {
347
348
  title: prompt.title,
348
349
  description: prompt.description,
349
350
  argsSchema: prompt.args,
@@ -357,5 +358,7 @@ export function registerPromptCatalog(server) {
357
358
  },
358
359
  }],
359
360
  }));
361
+ registeredPrompts.set(name, registeredPrompt);
360
362
  }
363
+ return registeredPrompts;
361
364
  }
@@ -1,4 +1,4 @@
1
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
1
+ import { McpServer, type RegisteredPrompt } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { AutomationControllerLike } from './automation-controller.js';
3
3
  type JsonSubsystemCaller = (method: string, params: Record<string, unknown>) => Promise<Record<string, unknown>>;
4
4
  type RegisterServerResourcesOptions = {
@@ -6,5 +6,8 @@ type RegisterServerResourcesOptions = {
6
6
  automationController: AutomationControllerLike;
7
7
  callSubsystemJson: JsonSubsystemCaller;
8
8
  };
9
- export declare function registerServerResources({ server, automationController, callSubsystemJson, }: RegisterServerResourcesOptions): void;
9
+ type RegisterServerResourcesResult = {
10
+ registeredPrompts: Map<string, RegisteredPrompt>;
11
+ };
12
+ export declare function registerServerResources({ server, automationController, callSubsystemJson, }: RegisterServerResourcesOptions): RegisterServerResourcesResult;
10
13
  export {};
@@ -8,5 +8,6 @@ export function registerServerResources({ server, automationController, callSubs
8
8
  automationController,
9
9
  callSubsystemJson,
10
10
  });
11
- registerPromptCatalog(server);
11
+ const registeredPrompts = registerPromptCatalog(server);
12
+ return { registeredPrompts };
12
13
  }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -39,6 +39,31 @@ export function createBlueprintExtractorServer(client, projectController = new P
39
39
  instructions: serverInstructions,
40
40
  });
41
41
  const defaultOutputSchema = toolResultSchema.catchall(z.unknown());
42
+ let promptsEnabled = true;
43
+ function setPromptSurfaceEnabled(registeredPrompts, enabled) {
44
+ if (promptsEnabled === enabled) {
45
+ return false;
46
+ }
47
+ for (const registeredPrompt of registeredPrompts.values()) {
48
+ if (enabled) {
49
+ registeredPrompt.enable();
50
+ }
51
+ else {
52
+ registeredPrompt.disable();
53
+ }
54
+ }
55
+ promptsEnabled = enabled;
56
+ return true;
57
+ }
58
+ function isOpenCodeClient(clientVersion) {
59
+ if (!clientVersion || typeof clientVersion !== 'object') {
60
+ return false;
61
+ }
62
+ return ['name', 'title', 'description', 'websiteUrl'].some((field) => {
63
+ const value = clientVersion[field];
64
+ return typeof value === 'string' && /opencode/i.test(value);
65
+ });
66
+ }
42
67
  // Direct editor path — preserves callSubsystemJson error-checking layer and
43
68
  // avoids recursive executor routing while resolving commandlet fallback inputs.
44
69
  const directCallSubsystemJson = (method, params, options) => (callSubsystemJsonWithClient(effectiveClient, method, params, options));
@@ -105,11 +130,14 @@ export function createBlueprintExtractorServer(client, projectController = new P
105
130
  workspaceProjectPath: await activeEditorSession?.getWorkspaceProjectPath(),
106
131
  });
107
132
  }
108
- registerServerResources({
133
+ const { registeredPrompts } = registerServerResources({
109
134
  server,
110
135
  automationController,
111
136
  callSubsystemJson,
112
137
  });
138
+ // OpenCode eagerly fetches every prompt on startup and currently surfaces a
139
+ // client-side drain-listener warning against larger prompt catalogs.
140
+ setPromptSurfaceEnabled(registeredPrompts, false);
113
141
  registerServerTools({
114
142
  server,
115
143
  client: effectiveClient,
@@ -200,7 +228,12 @@ export function createBlueprintExtractorServer(client, projectController = new P
200
228
  });
201
229
  // Wire oninitialized to detect client capabilities
202
230
  server.server.oninitialized = () => {
203
- const caps = server.server.getClientCapabilities();
231
+ const lowLevelServer = server.server;
232
+ const caps = lowLevelServer.getClientCapabilities();
233
+ const promptSurfaceChanged = setPromptSurfaceEnabled(registeredPrompts, !isOpenCodeClient(lowLevelServer.getClientVersion?.()));
234
+ if (promptSurfaceChanged && caps?.prompts?.listChanged) {
235
+ server.sendPromptListChanged();
236
+ }
204
237
  if (caps?.tools?.listChanged) {
205
238
  toolSurfaceManager.activateProfile('default');
206
239
  }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/dist/types.d.ts CHANGED
File without changes
package/dist/types.js CHANGED
File without changes
File without changes
package/dist/ue-client.js CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blueprint-extractor-mcp",
3
- "version": "8.0.1",
3
+ "version": "8.1.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",