unreal-engine-mcp-server 0.5.19 → 0.5.21

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 (73) hide show
  1. package/CHANGELOG.md +132 -0
  2. package/README.md +5 -0
  3. package/dist/config.d.ts +2 -0
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +19 -0
  6. package/dist/config.js.map +1 -1
  7. package/dist/index.js +1 -1
  8. package/dist/tools/consolidated-tool-definitions.d.ts.map +1 -1
  9. package/dist/tools/consolidated-tool-definitions.js +21 -16
  10. package/dist/tools/consolidated-tool-definitions.js.map +1 -1
  11. package/dist/tools/consolidated-tool-handlers.js +1 -3
  12. package/dist/tools/consolidated-tool-handlers.js.map +1 -1
  13. package/dist/tools/dynamic-tool-manager.d.ts +1 -1
  14. package/dist/tools/dynamic-tool-manager.d.ts.map +1 -1
  15. package/dist/tools/dynamic-tool-manager.js +48 -1
  16. package/dist/tools/dynamic-tool-manager.js.map +1 -1
  17. package/dist/tools/handlers/animation-authoring-handlers.d.ts.map +1 -1
  18. package/dist/tools/handlers/animation-authoring-handlers.js +266 -43
  19. package/dist/tools/handlers/animation-authoring-handlers.js.map +1 -1
  20. package/dist/tools/handlers/animation-handlers.d.ts.map +1 -1
  21. package/dist/tools/handlers/animation-handlers.js +289 -34
  22. package/dist/tools/handlers/animation-handlers.js.map +1 -1
  23. package/dist/tools/handlers/asset-handlers.d.ts.map +1 -1
  24. package/dist/tools/handlers/asset-handlers.js +10 -4
  25. package/dist/tools/handlers/asset-handlers.js.map +1 -1
  26. package/dist/tools/handlers/audio-handlers.d.ts.map +1 -1
  27. package/dist/tools/handlers/audio-handlers.js +66 -26
  28. package/dist/tools/handlers/audio-handlers.js.map +1 -1
  29. package/dist/tools/handlers/common-handlers.d.ts +1 -0
  30. package/dist/tools/handlers/common-handlers.d.ts.map +1 -1
  31. package/dist/tools/handlers/common-handlers.js +13 -3
  32. package/dist/tools/handlers/common-handlers.js.map +1 -1
  33. package/dist/tools/handlers/editor-handlers.d.ts.map +1 -1
  34. package/dist/tools/handlers/editor-handlers.js +18 -7
  35. package/dist/tools/handlers/editor-handlers.js.map +1 -1
  36. package/dist/tools/handlers/effect-handlers.d.ts.map +1 -1
  37. package/dist/tools/handlers/effect-handlers.js +91 -69
  38. package/dist/tools/handlers/effect-handlers.js.map +1 -1
  39. package/dist/tools/handlers/gas-handlers.d.ts.map +1 -1
  40. package/dist/tools/handlers/gas-handlers.js +35 -22
  41. package/dist/tools/handlers/gas-handlers.js.map +1 -1
  42. package/dist/tools/handlers/inspect-handlers.d.ts.map +1 -1
  43. package/dist/tools/handlers/inspect-handlers.js +6 -2
  44. package/dist/tools/handlers/inspect-handlers.js.map +1 -1
  45. package/dist/tools/handlers/inventory-handlers.js +7 -7
  46. package/dist/tools/handlers/inventory-handlers.js.map +1 -1
  47. package/dist/tools/handlers/manage-tools-handlers.js +2 -2
  48. package/dist/tools/handlers/manage-tools-handlers.js.map +1 -1
  49. package/dist/tools/handlers/performance-handlers.d.ts.map +1 -1
  50. package/dist/tools/handlers/performance-handlers.js +11 -29
  51. package/dist/tools/handlers/performance-handlers.js.map +1 -1
  52. package/dist/tools/handlers/pipeline-handlers.d.ts.map +1 -1
  53. package/dist/tools/handlers/pipeline-handlers.js +140 -13
  54. package/dist/tools/handlers/pipeline-handlers.js.map +1 -1
  55. package/dist/tools/handlers/sequence-handlers.d.ts.map +1 -1
  56. package/dist/tools/handlers/sequence-handlers.js +27 -0
  57. package/dist/tools/handlers/sequence-handlers.js.map +1 -1
  58. package/dist/tools/handlers/system-handlers.d.ts.map +1 -1
  59. package/dist/tools/handlers/system-handlers.js +10 -5
  60. package/dist/tools/handlers/system-handlers.js.map +1 -1
  61. package/dist/tools/handlers/widget-authoring-handlers.d.ts.map +1 -1
  62. package/dist/tools/handlers/widget-authoring-handlers.js +21 -5
  63. package/dist/tools/handlers/widget-authoring-handlers.js.map +1 -1
  64. package/dist/tools/schemas/core-tools.js +1 -1
  65. package/dist/tools/schemas/core-tools.js.map +1 -1
  66. package/dist/utils/path-security.d.ts.map +1 -1
  67. package/dist/utils/path-security.js +18 -1
  68. package/dist/utils/path-security.js.map +1 -1
  69. package/dist/utils/validation.d.ts.map +1 -1
  70. package/dist/utils/validation.js +5 -2
  71. package/dist/utils/validation.js.map +1 -1
  72. package/package.json +25 -2
  73. package/server.json +2 -2
package/CHANGELOG.md CHANGED
@@ -7,6 +7,138 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ---
9
9
 
10
+ ## [Unreleased]
11
+
12
+ ### Added
13
+ - `MCP_ADDITIONAL_PATH_PREFIXES` environment variable to whitelist custom UE content mount points (plugins with `CanContainContent`). Default is empty (no change to existing behavior). Enables projects with modular plugin architecture to access Blueprint assets at custom mount points like `/ProjectObject/`, `/ProjectAnimation/`, etc.
14
+
15
+ ---
16
+
17
+ ## 🏷️ [0.5.20] - 2026-03-21
18
+
19
+ > [!IMPORTANT]
20
+ > ### 🛡️ Security Fix & UE 5.0 Compatibility
21
+ > This release includes a critical path traversal fix in export_asset, UE 5.0 compatibility improvements, and external actors support for World Partition.
22
+
23
+ ### 🛡️ Security
24
+
25
+ <details>
26
+ <summary><b>🔒 Path Traversal in export_asset</b> (<a href="https://github.com/ChiR24/Unreal_mcp/commit/5cf2a3c">5cf2a3c</a>)</summary>
27
+
28
+ | Aspect | Details |
29
+ |--------|---------|
30
+ | **Severity** | 🚨 CRITICAL |
31
+ | **Vulnerability** | Path traversal in `export_asset` action |
32
+ | **Fix** | Added path validation to prevent directory traversal attacks |
33
+
34
+ **Files Modified:**
35
+ - `McpAutomationBridge_SystemControlHandlers.cpp`
36
+
37
+ </details>
38
+
39
+ ### ✨ Added
40
+
41
+ <details>
42
+ <summary><b>🌍 External Actors Support</b> (<a href="https://github.com/ChiR24/Unreal_mcp/commit/51143c3">51143c3</a>)</summary>
43
+
44
+ | Feature | Description |
45
+ |---------|-------------|
46
+ | **External Actors** | Support for World Partition external actors in level structure handlers |
47
+ | **Streaming Reference** | Streaming reference creation for external actor packages |
48
+
49
+ **Files Modified:**
50
+ - `McpAutomationBridge_LevelStructureHandlers.cpp` (+127 lines)
51
+
52
+ </details>
53
+
54
+ ### 🛠️ Fixed
55
+
56
+ <details>
57
+ <summary><b>🎮 UE 5.0 Compatibility</b> (<a href="https://github.com/ChiR24/Unreal_mcp/commit/1057023">1057023</a>)</summary>
58
+
59
+ | Bug | Fix |
60
+ |-----|-----|
61
+ | `bIsWorldInitialized` API not available in UE 5.0 | Direct access to `bIsWorldInitialized` for UE 5.0 compatibility |
62
+
63
+ **Files Modified:**
64
+ - `McpAutomationBridgeHelpers.h`
65
+ - `McpAutomationBridge_LevelStructureHandlers.cpp`
66
+
67
+ </details>
68
+
69
+ <details>
70
+ <summary><b>🐛 Tick Task Manager Crashes</b> (<a href="https://github.com/ChiR24/Unreal_mcp/commit/8c311d7">8c311d7</a>)</summary>
71
+
72
+ | Bug | Fix |
73
+ |-----|-----|
74
+ | Crashes from tick task manager during world operations | Added safety checks and proper cleanup in world management |
75
+ | World cleanup issues | Enhanced cleanup with `FlushRenderingCommands` safety |
76
+
77
+ **Files Modified:**
78
+ - `McpAutomationBridgeHelpers.h` (+36 lines)
79
+ - `McpAutomationBridge_LevelStructureHandlers.cpp` (+65 lines)
80
+ - `McpSafeOperations.h` (+16 lines)
81
+
82
+ </details>
83
+
84
+ <details>
85
+ <summary><b>🐛 Sublevel Creation</b> (<a href="https://github.com/ChiR24/Unreal_mcp/commit/bffb68c">bffb68c</a>)</summary>
86
+
87
+ | Bug | Fix |
88
+ |-----|-----|
89
+ | Sublevel creation path handling issues | Enhanced sublevel creation process with proper path handling |
90
+
91
+ **Files Modified:**
92
+ - `McpAutomationBridge_LevelStructureHandlers.cpp` (+201 lines)
93
+
94
+ </details>
95
+
96
+ <details>
97
+ <summary><b>🔧 UE 5.7 Build</b> (<a href="https://github.com/ChiR24/Unreal_mcp/pull/295">#295</a>)</summary>
98
+
99
+ | Bug | Fix |
100
+ |-----|-----|
101
+ | Missing includes causing build failures on UE 5.7 | Added missing includes in `McpHandlerUtils.cpp` and `McpPropertyReflection.cpp` |
102
+
103
+ **Contributors:** @a2448825647
104
+
105
+ </details>
106
+
107
+ ### 🔄 Dependencies
108
+
109
+ <details>
110
+ <summary><b>GitHub Actions Updates</b></summary>
111
+
112
+ | Package | From | To | PR |
113
+ |---------|------|-----|-----|
114
+ | `release-drafter/release-drafter` | 7.0.0 | 7.1.1 | [#300](https://github.com/ChiR24/Unreal_mcp/pull/300) |
115
+ | `softprops/action-gh-release` | 2.5.3 | 2.6.1 | [#301](https://github.com/ChiR24/Unreal_mcp/pull/301) |
116
+ | `github/codeql-action` | 4.32.6 | 4.33.0 | [#299](https://github.com/ChiR24/Unreal_mcp/pull/299) |
117
+
118
+ </details>
119
+
120
+ <details>
121
+ <summary><b>NPM Package Updates</b></summary>
122
+
123
+ | Package | From | To | PR |
124
+ |---------|------|-----|-----|
125
+ | `flatted` | 3.3.3 | 3.4.2 | [#304](https://github.com/ChiR24/Unreal_mcp/pull/304) |
126
+
127
+ </details>
128
+
129
+ ### 🔌 Plugin
130
+
131
+ <details>
132
+ <summary><b>MCP Automation Bridge v0.1.3</b></summary>
133
+
134
+ Updated plugin version to 0.1.3 with all fixes and features from this release.
135
+
136
+ See [Plugin CHANGELOG](Plugins/McpAutomationBridge/CHANGELOG.md) for details.
137
+
138
+ </details>
139
+
140
+ ---
141
+
10
142
  ## 🏷️ [0.5.19] - 2026-03-18
11
143
 
12
144
  > [!IMPORTANT]
package/README.md CHANGED
@@ -202,6 +202,10 @@ LOG_LEVEL=info # debug | info | warn | error
202
202
  # Optional
203
203
  MCP_AUTOMATION_REQUEST_TIMEOUT_MS=120000
204
204
  ASSET_LIST_TTL_MS=10000
205
+
206
+ # Custom content mount points (comma-separated)
207
+ # Plugins with CanContainContent register mount points beyond /Game/.
208
+ # MCP_ADDITIONAL_PATH_PREFIXES=/ProjectObject/,/ProjectAnimation/
205
209
  ```
206
210
 
207
211
  ### LAN Access Configuration
@@ -325,6 +329,7 @@ Blueprints • Materials • Textures • Static Meshes • Skeletal Meshes •
325
329
 
326
330
  ---
327
331
 
332
+ ## GraphQL API
328
333
 
329
334
  Optional GraphQL endpoint for complex queries. **Disabled by default.**
330
335
 
package/dist/config.d.ts CHANGED
@@ -20,8 +20,10 @@ export declare const EnvSchema: z.ZodObject<{
20
20
  MCP_CONNECTION_TIMEOUT_MS: z.ZodPipe<z.ZodTransform<number, unknown>, z.ZodDefault<z.ZodNumber>>;
21
21
  MCP_REQUEST_TIMEOUT_MS: z.ZodPipe<z.ZodTransform<number, unknown>, z.ZodDefault<z.ZodNumber>>;
22
22
  MCP_DEFAULT_CATEGORIES: z.ZodDefault<z.ZodString>;
23
+ MCP_ADDITIONAL_PATH_PREFIXES: z.ZodDefault<z.ZodString>;
23
24
  }, z.core.$strip>;
24
25
  export type Config = z.infer<typeof EnvSchema>;
25
26
  declare let config: Config;
26
27
  export { config };
28
+ export declare function getAdditionalPathPrefixes(): string[];
27
29
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkCxB,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;iBAsBpB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAE/C,QAAA,IAAI,MAAM,EAAE,MAAM,CAAC;AAgBnB,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkCxB,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;iBA2BpB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAE/C,QAAA,IAAI,MAAM,EAAE,MAAM,CAAC;AAgBnB,OAAO,EAAE,MAAM,EAAE,CAAC;AAOlB,wBAAgB,yBAAyB,IAAI,MAAM,EAAE,CAcpD"}
package/dist/config.js CHANGED
@@ -40,6 +40,7 @@ export const EnvSchema = z.object({
40
40
  MCP_CONNECTION_TIMEOUT_MS: z.preprocess((v) => stringToNumber(v, 5000), z.number().default(5000)),
41
41
  MCP_REQUEST_TIMEOUT_MS: z.preprocess((v) => stringToNumber(v, 30000), z.number().default(30000)),
42
42
  MCP_DEFAULT_CATEGORIES: z.string().default('core'),
43
+ MCP_ADDITIONAL_PATH_PREFIXES: z.string().default(''),
43
44
  });
44
45
  let config;
45
46
  try {
@@ -57,4 +58,22 @@ catch (error) {
57
58
  }
58
59
  }
59
60
  export { config };
61
+ export function getAdditionalPathPrefixes() {
62
+ const raw = config.MCP_ADDITIONAL_PATH_PREFIXES;
63
+ if (!raw || raw.trim() === '')
64
+ return [];
65
+ return raw
66
+ .split(',')
67
+ .map(s => s.trim())
68
+ .filter(s => s.length > 0)
69
+ .map(s => {
70
+ let p = s.startsWith('/') ? s : `/${s}`;
71
+ if (!p.endsWith('/'))
72
+ p += '/';
73
+ if (p === '/' || p.includes('..') || p.includes('//'))
74
+ return '';
75
+ return p;
76
+ })
77
+ .filter(s => s.length > 0);
78
+ }
60
79
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AAE3C,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,cAAc,OAAO,IAAI,CAAC,CAAC,CAAgC,CAAC;AACnF,IAAI,CAAC;IACH,MAAM,CAAC,MAAM,EAAE,CAAC;AAClB,CAAC;QAAS,CAAC;IACT,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC;AACvC,CAAC;AAED,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEjC,MAAM,eAAe,GAAG,CAAC,GAAY,EAAE,EAAE;IACvC,IAAI,OAAO,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IACzC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QACvC,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,GAAY,EAAE,UAAkB,EAAE,EAAE;IAC1D,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IACxC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7C,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAEhC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IAC9E,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACtE,qBAAqB,EAAE,CAAC,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAG/E,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAIpC,mBAAmB,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3F,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;IACpD,0BAA0B,EAAE,CAAC,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAGrF,yBAAyB,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjG,sBAAsB,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAGhG,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAKlD,4BAA4B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CACrD,CAAC,CAAC;AAIH,IAAI,MAAc,CAAC;AAEnB,IAAI,CAAC;IACH,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,GAAG,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;AACjD,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChC,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACtD,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAE9C,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC;AAOlB,MAAM,UAAU,yBAAyB;IACvC,MAAM,GAAG,GAAG,MAAM,CAAC,4BAA4B,CAAC;IAChD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IACzC,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE;QACP,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,CAAC,IAAI,GAAG,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QACjE,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/B,CAAC"}
package/dist/index.js CHANGED
@@ -28,7 +28,7 @@ const DEFAULT_SERVER_NAME = typeof packageInfo.name === 'string' && packageInfo.
28
28
  : 'unreal-engine-mcp';
29
29
  const DEFAULT_SERVER_VERSION = typeof packageInfo.version === 'string' && packageInfo.version.trim().length > 0
30
30
  ? packageInfo.version
31
- : '0.5.19';
31
+ : '0.5.21';
32
32
  function routeStdoutLogsToStderr() {
33
33
  if (!config.MCP_ROUTE_STDOUT_LOGS) {
34
34
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"consolidated-tool-definitions.d.ts","sourceRoot":"","sources":["../../src/tools/consolidated-tool-definitions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,2BAA2B,EAAE,cAAc,EAolJvD,CAAC"}
1
+ {"version":3,"file":"consolidated-tool-definitions.d.ts","sourceRoot":"","sources":["../../src/tools/consolidated-tool-definitions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,2BAA2B,EAAE,cAAc,EAylJvD,CAAC"}
@@ -37,7 +37,7 @@ export const consolidatedToolDefinitions = [
37
37
  description: 'list_tools: show all tools with status. list_categories: show categories. enable/disable_tools: toggle specific tools. enable/disable_category: toggle category. get_status: current state. reset: restore defaults.'
38
38
  },
39
39
  tools: { type: 'array', items: commonSchemas.stringProp, description: 'Tool names to enable/disable' },
40
- category: { type: 'string', description: 'Category name to enable/disable (core, world, authoring, gameplay, utility)' }
40
+ category: { type: 'string', description: 'Category name to enable/disable (core, world, authoring, gameplay, utility, all)' }
41
41
  },
42
42
  required: ['action']
43
43
  },
@@ -77,6 +77,7 @@ export const consolidatedToolDefinitions = [
77
77
  recursivePaths: commonSchemas.booleanProp,
78
78
  recursiveClasses: commonSchemas.booleanProp,
79
79
  limit: commonSchemas.numberProp,
80
+ offset: commonSchemas.numberProp,
80
81
  sourcePath: commonSchemas.sourcePath,
81
82
  destinationPath: commonSchemas.destinationPath,
82
83
  assetPaths: commonSchemas.arrayOfStrings,
@@ -156,7 +157,10 @@ export const consolidatedToolDefinitions = [
156
157
  paths: commonSchemas.arrayOfStrings,
157
158
  path: commonSchemas.stringProp,
158
159
  nodeId: commonSchemas.nodeId,
159
- details: commonSchemas.objectProp
160
+ details: commonSchemas.objectProp,
161
+ totalCount: commonSchemas.numberProp,
162
+ offset: commonSchemas.numberProp,
163
+ limit: commonSchemas.numberProp
160
164
  }
161
165
  }
162
166
  },
@@ -3785,7 +3789,7 @@ export const consolidatedToolDefinitions = [
3785
3789
  {
3786
3790
  name: 'manage_sessions',
3787
3791
  category: 'utility',
3788
- description: 'Configure local multiplayer: split-screen layouts, LAN hosting/joining, voice chat channels, and push-to-talk.',
3792
+ description: 'Configure local multiplayer: split-screen layouts, LAN hosting/joining, voice chat channels, and push-to-talk.\n\nRequired parameters by action:\n- configure_local_session_settings: At least one setting param required\n- configure_session_interface: interfaceType\n- configure_split_screen: enabled or splitScreenType\n- set_split_screen_type: splitScreenType\n- add_local_player: controllerId (requires PIE)\n- remove_local_player: playerIndex (requires PIE)\n- configure_lan_play: enabled, serverPort, or serverPassword\n- host_lan_server: mapName (requires PIE)\n- join_lan_server: serverAddress (requires PIE)\n- enable_voice_chat: voiceEnabled\n- configure_voice_settings: voiceSettings\n- set_voice_channel: channelName\n- mute_player: playerName or targetPlayerId\n- set_voice_attenuation: attenuationRadius\n- configure_push_to_talk: pushToTalkEnabled\n- get_sessions_info: No additional params required',
3789
3793
  inputSchema: {
3790
3794
  type: 'object',
3791
3795
  properties: {
@@ -3813,23 +3817,23 @@ export const consolidatedToolDefinitions = [
3813
3817
  interfaceType: {
3814
3818
  type: 'string',
3815
3819
  enum: ['Default', 'LAN', 'Null'],
3816
- description: 'Type of session interface to use.'
3820
+ description: 'Type of session interface to use. REQUIRED for configure_session_interface.'
3817
3821
  },
3818
3822
  enabled: commonSchemas.enabled,
3819
3823
  splitScreenType: {
3820
3824
  type: 'string',
3821
3825
  enum: ['None', 'TwoPlayer_Horizontal', 'TwoPlayer_Vertical', 'ThreePlayer_FavorTop', 'ThreePlayer_FavorBottom', 'FourPlayer_Grid'],
3822
- description: 'Split-screen layout type.'
3826
+ description: 'Split-screen layout type. REQUIRED for set_split_screen_type.'
3823
3827
  },
3824
- playerIndex: commonSchemas.numberProp,
3825
- controllerId: commonSchemas.numberProp,
3826
- serverAddress: commonSchemas.serverAddress,
3828
+ playerIndex: { ...commonSchemas.numberProp, description: 'Local player index. REQUIRED for remove_local_player.' },
3829
+ controllerId: { ...commonSchemas.numberProp, description: 'Controller ID for player input. REQUIRED for add_local_player.' },
3830
+ serverAddress: { ...commonSchemas.serverAddress, description: 'Server IP address. REQUIRED for join_lan_server.' },
3827
3831
  serverPort: commonSchemas.numberProp,
3828
3832
  serverPassword: { type: 'string', description: 'Server password for protected games.' },
3829
3833
  serverName: { type: 'string', description: 'Display name for the server.' },
3830
- mapName: { type: 'string', description: 'Map to load for hosting.' },
3834
+ mapName: { type: 'string', description: 'Map to load for hosting. REQUIRED for host_lan_server.' },
3831
3835
  travelOptions: { type: 'string', description: 'Travel URL options string.' },
3832
- voiceEnabled: { type: 'boolean', description: 'Enable/disable voice chat.' },
3836
+ voiceEnabled: { type: 'boolean', description: 'Enable/disable voice chat. REQUIRED for enable_voice_chat.' },
3833
3837
  voiceSettings: {
3834
3838
  type: 'object',
3835
3839
  properties: {
@@ -3839,20 +3843,20 @@ export const consolidatedToolDefinitions = [
3839
3843
  echoCancellation: { type: 'boolean', description: 'Enable echo cancellation.' },
3840
3844
  sampleRate: { type: 'number', description: 'Audio sample rate in Hz.' }
3841
3845
  },
3842
- description: 'Voice processing settings.'
3846
+ description: 'Voice processing settings. REQUIRED for configure_voice_settings.'
3843
3847
  },
3844
- channelName: commonSchemas.channelName,
3848
+ channelName: { ...commonSchemas.channelName, description: 'Voice channel name. REQUIRED for set_voice_channel.' },
3845
3849
  channelType: {
3846
3850
  type: 'string',
3847
3851
  enum: ['Team', 'Global', 'Proximity', 'Party'],
3848
3852
  description: 'Voice channel type.'
3849
3853
  },
3850
- playerName: { type: 'string', description: 'Player name for voice operations.' },
3851
- targetPlayerId: { type: 'string', description: 'Target player ID.' },
3854
+ playerName: { type: 'string', description: 'Player name for voice operations. REQUIRED for mute_player (or targetPlayerId).' },
3855
+ targetPlayerId: { type: 'string', description: 'Target player ID. REQUIRED for mute_player (or playerName).' },
3852
3856
  muted: commonSchemas.muted,
3853
- attenuationRadius: { type: 'number', description: 'Radius for voice attenuation (Proximity chat).' },
3857
+ attenuationRadius: { type: 'number', description: 'Radius for voice attenuation (Proximity chat). REQUIRED for set_voice_attenuation.' },
3854
3858
  attenuationFalloff: { type: 'number', description: 'Falloff rate for voice attenuation.' },
3855
- pushToTalkEnabled: { type: 'boolean', description: 'Enable push-to-talk mode.' },
3859
+ pushToTalkEnabled: { type: 'boolean', description: 'Enable push-to-talk mode. REQUIRED for configure_push_to_talk.' },
3856
3860
  pushToTalkKey: { type: 'string', description: 'Key binding for push-to-talk.' }
3857
3861
  },
3858
3862
  required: ['action']
@@ -3916,6 +3920,7 @@ export const consolidatedToolDefinitions = [
3916
3920
  parentLevel: commonSchemas.parentLevel,
3917
3921
  templateLevel: commonSchemas.templateLevel,
3918
3922
  bCreateWorldPartition: { type: 'boolean', description: 'Create with World Partition enabled.' },
3923
+ bUseExternalActors: { type: 'boolean', description: 'Enable One File Per Actor (OFPA/External Actors) for Data Layer compatibility. Automatically enabled when bCreateWorldPartition is true.' },
3919
3924
  sublevelName: commonSchemas.sublevelName,
3920
3925
  sublevelPath: commonSchemas.levelPath,
3921
3926
  streamingMethod: {