unreal-engine-mcp-server 0.4.7 → 0.5.1

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 (454) hide show
  1. package/.env.example +26 -0
  2. package/.env.production +38 -7
  3. package/.eslintrc.json +0 -54
  4. package/.eslintrc.override.json +8 -0
  5. package/.github/ISSUE_TEMPLATE/bug_report.yml +94 -0
  6. package/.github/ISSUE_TEMPLATE/config.yml +8 -0
  7. package/.github/ISSUE_TEMPLATE/feature_request.yml +56 -0
  8. package/.github/copilot-instructions.md +478 -45
  9. package/.github/dependabot.yml +19 -0
  10. package/.github/labeler.yml +24 -0
  11. package/.github/labels.yml +70 -0
  12. package/.github/pull_request_template.md +42 -0
  13. package/.github/release-drafter-config.yml +51 -0
  14. package/.github/workflows/auto-merge.yml +38 -0
  15. package/.github/workflows/ci.yml +38 -0
  16. package/.github/workflows/dependency-review.yml +17 -0
  17. package/.github/workflows/gemini-issue-triage.yml +172 -0
  18. package/.github/workflows/greetings.yml +27 -0
  19. package/.github/workflows/labeler.yml +17 -0
  20. package/.github/workflows/links.yml +80 -0
  21. package/.github/workflows/pr-size-labeler.yml +137 -0
  22. package/.github/workflows/publish-mcp.yml +13 -7
  23. package/.github/workflows/release-drafter.yml +23 -0
  24. package/.github/workflows/release.yml +112 -0
  25. package/.github/workflows/semantic-pull-request.yml +35 -0
  26. package/.github/workflows/smoke-test.yml +36 -0
  27. package/.github/workflows/stale.yml +28 -0
  28. package/CHANGELOG.md +338 -31
  29. package/CONTRIBUTING.md +140 -0
  30. package/GEMINI.md +115 -0
  31. package/Public/Plugin_setup_guide.mp4 +0 -0
  32. package/README.md +189 -128
  33. package/claude_desktop_config_example.json +7 -6
  34. package/dist/automation/bridge.d.ts +50 -0
  35. package/dist/automation/bridge.js +452 -0
  36. package/dist/automation/connection-manager.d.ts +23 -0
  37. package/dist/automation/connection-manager.js +107 -0
  38. package/dist/automation/handshake.d.ts +11 -0
  39. package/dist/automation/handshake.js +89 -0
  40. package/dist/automation/index.d.ts +3 -0
  41. package/dist/automation/index.js +3 -0
  42. package/dist/automation/message-handler.d.ts +12 -0
  43. package/dist/automation/message-handler.js +149 -0
  44. package/dist/automation/request-tracker.d.ts +25 -0
  45. package/dist/automation/request-tracker.js +98 -0
  46. package/dist/automation/types.d.ts +130 -0
  47. package/dist/automation/types.js +2 -0
  48. package/dist/cli.js +32 -5
  49. package/dist/config.d.ts +26 -0
  50. package/dist/config.js +59 -0
  51. package/dist/constants.d.ts +16 -0
  52. package/dist/constants.js +16 -0
  53. package/dist/graphql/loaders.d.ts +64 -0
  54. package/dist/graphql/loaders.js +117 -0
  55. package/dist/graphql/resolvers.d.ts +268 -0
  56. package/dist/graphql/resolvers.js +746 -0
  57. package/dist/graphql/schema.d.ts +5 -0
  58. package/dist/graphql/schema.js +437 -0
  59. package/dist/graphql/server.d.ts +26 -0
  60. package/dist/graphql/server.js +117 -0
  61. package/dist/graphql/types.d.ts +9 -0
  62. package/dist/graphql/types.js +2 -0
  63. package/dist/handlers/resource-handlers.d.ts +20 -0
  64. package/dist/handlers/resource-handlers.js +180 -0
  65. package/dist/index.d.ts +33 -18
  66. package/dist/index.js +130 -619
  67. package/dist/resources/actors.d.ts +17 -12
  68. package/dist/resources/actors.js +56 -76
  69. package/dist/resources/assets.d.ts +6 -14
  70. package/dist/resources/assets.js +115 -147
  71. package/dist/resources/levels.d.ts +13 -13
  72. package/dist/resources/levels.js +25 -34
  73. package/dist/server/resource-registry.d.ts +20 -0
  74. package/dist/server/resource-registry.js +37 -0
  75. package/dist/server/tool-registry.d.ts +23 -0
  76. package/dist/server/tool-registry.js +322 -0
  77. package/dist/server-setup.d.ts +20 -0
  78. package/dist/server-setup.js +71 -0
  79. package/dist/services/health-monitor.d.ts +34 -0
  80. package/dist/services/health-monitor.js +105 -0
  81. package/dist/services/metrics-server.d.ts +11 -0
  82. package/dist/services/metrics-server.js +105 -0
  83. package/dist/tools/actors.d.ts +163 -9
  84. package/dist/tools/actors.js +356 -311
  85. package/dist/tools/animation.d.ts +135 -4
  86. package/dist/tools/animation.js +510 -411
  87. package/dist/tools/assets.d.ts +75 -29
  88. package/dist/tools/assets.js +265 -284
  89. package/dist/tools/audio.d.ts +102 -42
  90. package/dist/tools/audio.js +272 -685
  91. package/dist/tools/base-tool.d.ts +17 -0
  92. package/dist/tools/base-tool.js +46 -0
  93. package/dist/tools/behavior-tree.d.ts +94 -0
  94. package/dist/tools/behavior-tree.js +39 -0
  95. package/dist/tools/blueprint.d.ts +208 -126
  96. package/dist/tools/blueprint.js +685 -832
  97. package/dist/tools/consolidated-tool-definitions.d.ts +5462 -1781
  98. package/dist/tools/consolidated-tool-definitions.js +829 -496
  99. package/dist/tools/consolidated-tool-handlers.d.ts +2 -1
  100. package/dist/tools/consolidated-tool-handlers.js +198 -1027
  101. package/dist/tools/debug.d.ts +143 -85
  102. package/dist/tools/debug.js +234 -180
  103. package/dist/tools/dynamic-handler-registry.d.ts +13 -0
  104. package/dist/tools/dynamic-handler-registry.js +23 -0
  105. package/dist/tools/editor.d.ts +30 -83
  106. package/dist/tools/editor.js +247 -244
  107. package/dist/tools/engine.d.ts +10 -4
  108. package/dist/tools/engine.js +13 -5
  109. package/dist/tools/environment.d.ts +30 -0
  110. package/dist/tools/environment.js +267 -0
  111. package/dist/tools/foliage.d.ts +65 -99
  112. package/dist/tools/foliage.js +221 -331
  113. package/dist/tools/handlers/actor-handlers.d.ts +3 -0
  114. package/dist/tools/handlers/actor-handlers.js +227 -0
  115. package/dist/tools/handlers/animation-handlers.d.ts +3 -0
  116. package/dist/tools/handlers/animation-handlers.js +185 -0
  117. package/dist/tools/handlers/argument-helper.d.ts +16 -0
  118. package/dist/tools/handlers/argument-helper.js +80 -0
  119. package/dist/tools/handlers/asset-handlers.d.ts +3 -0
  120. package/dist/tools/handlers/asset-handlers.js +496 -0
  121. package/dist/tools/handlers/audio-handlers.d.ts +3 -0
  122. package/dist/tools/handlers/audio-handlers.js +166 -0
  123. package/dist/tools/handlers/blueprint-handlers.d.ts +4 -0
  124. package/dist/tools/handlers/blueprint-handlers.js +358 -0
  125. package/dist/tools/handlers/common-handlers.d.ts +14 -0
  126. package/dist/tools/handlers/common-handlers.js +56 -0
  127. package/dist/tools/handlers/editor-handlers.d.ts +3 -0
  128. package/dist/tools/handlers/editor-handlers.js +119 -0
  129. package/dist/tools/handlers/effect-handlers.d.ts +3 -0
  130. package/dist/tools/handlers/effect-handlers.js +171 -0
  131. package/dist/tools/handlers/environment-handlers.d.ts +3 -0
  132. package/dist/tools/handlers/environment-handlers.js +170 -0
  133. package/dist/tools/handlers/graph-handlers.d.ts +3 -0
  134. package/dist/tools/handlers/graph-handlers.js +90 -0
  135. package/dist/tools/handlers/input-handlers.d.ts +3 -0
  136. package/dist/tools/handlers/input-handlers.js +21 -0
  137. package/dist/tools/handlers/inspect-handlers.d.ts +3 -0
  138. package/dist/tools/handlers/inspect-handlers.js +383 -0
  139. package/dist/tools/handlers/level-handlers.d.ts +3 -0
  140. package/dist/tools/handlers/level-handlers.js +237 -0
  141. package/dist/tools/handlers/lighting-handlers.d.ts +3 -0
  142. package/dist/tools/handlers/lighting-handlers.js +144 -0
  143. package/dist/tools/handlers/performance-handlers.d.ts +3 -0
  144. package/dist/tools/handlers/performance-handlers.js +130 -0
  145. package/dist/tools/handlers/pipeline-handlers.d.ts +3 -0
  146. package/dist/tools/handlers/pipeline-handlers.js +110 -0
  147. package/dist/tools/handlers/sequence-handlers.d.ts +3 -0
  148. package/dist/tools/handlers/sequence-handlers.js +376 -0
  149. package/dist/tools/handlers/system-handlers.d.ts +4 -0
  150. package/dist/tools/handlers/system-handlers.js +506 -0
  151. package/dist/tools/input.d.ts +19 -0
  152. package/dist/tools/input.js +89 -0
  153. package/dist/tools/introspection.d.ts +103 -40
  154. package/dist/tools/introspection.js +425 -568
  155. package/dist/tools/landscape.d.ts +54 -93
  156. package/dist/tools/landscape.js +284 -409
  157. package/dist/tools/level.d.ts +66 -27
  158. package/dist/tools/level.js +647 -675
  159. package/dist/tools/lighting.d.ts +77 -38
  160. package/dist/tools/lighting.js +445 -943
  161. package/dist/tools/logs.d.ts +3 -3
  162. package/dist/tools/logs.js +5 -57
  163. package/dist/tools/materials.d.ts +91 -24
  164. package/dist/tools/materials.js +194 -118
  165. package/dist/tools/niagara.d.ts +149 -39
  166. package/dist/tools/niagara.js +267 -182
  167. package/dist/tools/performance.d.ts +27 -13
  168. package/dist/tools/performance.js +203 -122
  169. package/dist/tools/physics.d.ts +32 -77
  170. package/dist/tools/physics.js +175 -582
  171. package/dist/tools/property-dictionary.d.ts +13 -0
  172. package/dist/tools/property-dictionary.js +82 -0
  173. package/dist/tools/sequence.d.ts +85 -60
  174. package/dist/tools/sequence.js +208 -747
  175. package/dist/tools/tool-definition-utils.d.ts +59 -0
  176. package/dist/tools/tool-definition-utils.js +35 -0
  177. package/dist/tools/ui.d.ts +64 -34
  178. package/dist/tools/ui.js +134 -214
  179. package/dist/types/automation-responses.d.ts +115 -0
  180. package/dist/types/automation-responses.js +2 -0
  181. package/dist/types/env.d.ts +0 -3
  182. package/dist/types/env.js +0 -7
  183. package/dist/types/responses.d.ts +249 -0
  184. package/dist/types/responses.js +2 -0
  185. package/dist/types/tool-interfaces.d.ts +898 -0
  186. package/dist/types/tool-interfaces.js +2 -0
  187. package/dist/types/tool-types.d.ts +183 -19
  188. package/dist/types/tool-types.js +0 -4
  189. package/dist/unreal-bridge.d.ts +24 -131
  190. package/dist/unreal-bridge.js +364 -1506
  191. package/dist/utils/command-validator.d.ts +9 -0
  192. package/dist/utils/command-validator.js +68 -0
  193. package/dist/utils/elicitation.d.ts +1 -1
  194. package/dist/utils/elicitation.js +12 -15
  195. package/dist/utils/error-handler.d.ts +2 -51
  196. package/dist/utils/error-handler.js +11 -87
  197. package/dist/utils/ini-reader.d.ts +3 -0
  198. package/dist/utils/ini-reader.js +69 -0
  199. package/dist/utils/logger.js +9 -6
  200. package/dist/utils/normalize.d.ts +3 -0
  201. package/dist/utils/normalize.js +56 -0
  202. package/dist/utils/path-security.d.ts +2 -0
  203. package/dist/utils/path-security.js +24 -0
  204. package/dist/utils/response-factory.d.ts +7 -0
  205. package/dist/utils/response-factory.js +27 -0
  206. package/dist/utils/response-validator.d.ts +3 -24
  207. package/dist/utils/response-validator.js +130 -81
  208. package/dist/utils/result-helpers.d.ts +4 -5
  209. package/dist/utils/result-helpers.js +15 -16
  210. package/dist/utils/safe-json.js +5 -11
  211. package/dist/utils/unreal-command-queue.d.ts +24 -0
  212. package/dist/utils/unreal-command-queue.js +120 -0
  213. package/dist/utils/validation.d.ts +0 -40
  214. package/dist/utils/validation.js +1 -78
  215. package/dist/wasm/index.d.ts +70 -0
  216. package/dist/wasm/index.js +535 -0
  217. package/docs/GraphQL-API.md +888 -0
  218. package/docs/Migration-Guide-v0.5.0.md +684 -0
  219. package/docs/Roadmap.md +53 -0
  220. package/docs/WebAssembly-Integration.md +628 -0
  221. package/docs/editor-plugin-extension.md +370 -0
  222. package/docs/handler-mapping.md +242 -0
  223. package/docs/native-automation-progress.md +128 -0
  224. package/docs/testing-guide.md +423 -0
  225. package/mcp-config-example.json +6 -6
  226. package/package.json +67 -28
  227. package/plugins/McpAutomationBridge/Config/FilterPlugin.ini +8 -0
  228. package/plugins/McpAutomationBridge/McpAutomationBridge.uplugin +64 -0
  229. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/McpAutomationBridge.Build.cs +189 -0
  230. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.cpp +22 -0
  231. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.h +30 -0
  232. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeHelpers.h +1983 -0
  233. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeModule.cpp +72 -0
  234. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSettings.cpp +46 -0
  235. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSubsystem.cpp +581 -0
  236. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AnimationHandlers.cpp +2394 -0
  237. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetQueryHandlers.cpp +300 -0
  238. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetWorkflowHandlers.cpp +2807 -0
  239. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AudioHandlers.cpp +1087 -0
  240. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BehaviorTreeHandlers.cpp +488 -0
  241. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.cpp +643 -0
  242. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.h +31 -0
  243. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintGraphHandlers.cpp +1184 -0
  244. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers.cpp +5652 -0
  245. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers_List.cpp +152 -0
  246. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ControlHandlers.cpp +2614 -0
  247. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_DebugHandlers.cpp +42 -0
  248. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EditorFunctionHandlers.cpp +1237 -0
  249. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EffectHandlers.cpp +1701 -0
  250. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EnvironmentHandlers.cpp +2145 -0
  251. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_FoliageHandlers.cpp +954 -0
  252. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InputHandlers.cpp +209 -0
  253. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InsightsHandlers.cpp +41 -0
  254. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LandscapeHandlers.cpp +1164 -0
  255. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LevelHandlers.cpp +762 -0
  256. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LightingHandlers.cpp +634 -0
  257. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LogHandlers.cpp +136 -0
  258. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_MaterialGraphHandlers.cpp +494 -0
  259. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraGraphHandlers.cpp +278 -0
  260. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraHandlers.cpp +625 -0
  261. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PerformanceHandlers.cpp +401 -0
  262. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PipelineHandlers.cpp +67 -0
  263. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ProcessRequest.cpp +735 -0
  264. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PropertyHandlers.cpp +2634 -0
  265. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_RenderHandlers.cpp +189 -0
  266. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.cpp +917 -0
  267. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.h +39 -0
  268. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequenceHandlers.cpp +2670 -0
  269. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequencerHandlers.cpp +519 -0
  270. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_TestHandlers.cpp +38 -0
  271. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_UiHandlers.cpp +668 -0
  272. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_WorldPartitionHandlers.cpp +346 -0
  273. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.cpp +1330 -0
  274. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.h +149 -0
  275. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpConnectionManager.cpp +783 -0
  276. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSettings.h +115 -0
  277. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSubsystem.h +796 -0
  278. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpConnectionManager.h +117 -0
  279. package/scripts/check-unreal-connection.mjs +19 -0
  280. package/scripts/clean-tmp.js +23 -0
  281. package/scripts/patch-wasm.js +26 -0
  282. package/scripts/run-all-tests.mjs +136 -0
  283. package/scripts/smoke-test.ts +94 -0
  284. package/scripts/sync-mcp-plugin.js +143 -0
  285. package/scripts/test-no-plugin-alternates.mjs +113 -0
  286. package/scripts/validate-server.js +46 -0
  287. package/scripts/verify-automation-bridge.js +200 -0
  288. package/server.json +58 -21
  289. package/src/automation/bridge.ts +558 -0
  290. package/src/automation/connection-manager.ts +130 -0
  291. package/src/automation/handshake.ts +99 -0
  292. package/src/automation/index.ts +2 -0
  293. package/src/automation/message-handler.ts +167 -0
  294. package/src/automation/request-tracker.ts +123 -0
  295. package/src/automation/types.ts +107 -0
  296. package/src/cli.ts +33 -6
  297. package/src/config.ts +73 -0
  298. package/src/constants.ts +19 -0
  299. package/src/graphql/loaders.ts +244 -0
  300. package/src/graphql/resolvers.ts +1008 -0
  301. package/src/graphql/schema.ts +452 -0
  302. package/src/graphql/server.ts +156 -0
  303. package/src/graphql/types.ts +10 -0
  304. package/src/handlers/resource-handlers.ts +186 -0
  305. package/src/index.ts +166 -664
  306. package/src/resources/actors.ts +58 -76
  307. package/src/resources/assets.ts +148 -134
  308. package/src/resources/levels.ts +28 -33
  309. package/src/server/resource-registry.ts +47 -0
  310. package/src/server/tool-registry.ts +354 -0
  311. package/src/server-setup.ts +114 -0
  312. package/src/services/health-monitor.ts +132 -0
  313. package/src/services/metrics-server.ts +142 -0
  314. package/src/tools/actors.ts +426 -323
  315. package/src/tools/animation.ts +672 -461
  316. package/src/tools/assets.ts +364 -289
  317. package/src/tools/audio.ts +323 -766
  318. package/src/tools/base-tool.ts +52 -0
  319. package/src/tools/behavior-tree.ts +45 -0
  320. package/src/tools/blueprint.ts +792 -970
  321. package/src/tools/consolidated-tool-definitions.ts +993 -515
  322. package/src/tools/consolidated-tool-handlers.ts +258 -1146
  323. package/src/tools/debug.ts +292 -187
  324. package/src/tools/dynamic-handler-registry.ts +33 -0
  325. package/src/tools/editor.ts +329 -253
  326. package/src/tools/engine.ts +14 -3
  327. package/src/tools/environment.ts +281 -0
  328. package/src/tools/foliage.ts +330 -392
  329. package/src/tools/handlers/actor-handlers.ts +265 -0
  330. package/src/tools/handlers/animation-handlers.ts +237 -0
  331. package/src/tools/handlers/argument-helper.ts +142 -0
  332. package/src/tools/handlers/asset-handlers.ts +532 -0
  333. package/src/tools/handlers/audio-handlers.ts +194 -0
  334. package/src/tools/handlers/blueprint-handlers.ts +380 -0
  335. package/src/tools/handlers/common-handlers.ts +87 -0
  336. package/src/tools/handlers/editor-handlers.ts +123 -0
  337. package/src/tools/handlers/effect-handlers.ts +220 -0
  338. package/src/tools/handlers/environment-handlers.ts +183 -0
  339. package/src/tools/handlers/graph-handlers.ts +116 -0
  340. package/src/tools/handlers/input-handlers.ts +28 -0
  341. package/src/tools/handlers/inspect-handlers.ts +450 -0
  342. package/src/tools/handlers/level-handlers.ts +252 -0
  343. package/src/tools/handlers/lighting-handlers.ts +147 -0
  344. package/src/tools/handlers/performance-handlers.ts +132 -0
  345. package/src/tools/handlers/pipeline-handlers.ts +127 -0
  346. package/src/tools/handlers/sequence-handlers.ts +415 -0
  347. package/src/tools/handlers/system-handlers.ts +564 -0
  348. package/src/tools/input.ts +101 -0
  349. package/src/tools/introspection.ts +493 -584
  350. package/src/tools/landscape.ts +418 -507
  351. package/src/tools/level.ts +786 -708
  352. package/src/tools/lighting.ts +588 -984
  353. package/src/tools/logs.ts +9 -57
  354. package/src/tools/materials.ts +237 -121
  355. package/src/tools/niagara.ts +335 -168
  356. package/src/tools/performance.ts +320 -169
  357. package/src/tools/physics.ts +274 -613
  358. package/src/tools/property-dictionary.ts +98 -0
  359. package/src/tools/sequence.ts +276 -820
  360. package/src/tools/tool-definition-utils.ts +35 -0
  361. package/src/tools/ui.ts +205 -283
  362. package/src/types/automation-responses.ts +119 -0
  363. package/src/types/env.ts +0 -10
  364. package/src/types/responses.ts +355 -0
  365. package/src/types/tool-interfaces.ts +250 -0
  366. package/src/types/tool-types.ts +243 -21
  367. package/src/unreal-bridge.ts +460 -1550
  368. package/src/utils/command-validator.ts +76 -0
  369. package/src/utils/elicitation.ts +10 -7
  370. package/src/utils/error-handler.ts +14 -90
  371. package/src/utils/ini-reader.ts +86 -0
  372. package/src/utils/logger.ts +8 -3
  373. package/src/utils/normalize.test.ts +162 -0
  374. package/src/utils/normalize.ts +60 -0
  375. package/src/utils/path-security.ts +43 -0
  376. package/src/utils/response-factory.ts +44 -0
  377. package/src/utils/response-validator.ts +176 -56
  378. package/src/utils/result-helpers.ts +21 -19
  379. package/src/utils/safe-json.test.ts +90 -0
  380. package/src/utils/safe-json.ts +14 -11
  381. package/src/utils/unreal-command-queue.ts +152 -0
  382. package/src/utils/validation.test.ts +184 -0
  383. package/src/utils/validation.ts +4 -1
  384. package/src/wasm/index.ts +838 -0
  385. package/test-server.mjs +100 -0
  386. package/tests/run-unreal-tool-tests.mjs +242 -14
  387. package/tests/test-animation.mjs +369 -0
  388. package/tests/test-asset-advanced.mjs +82 -0
  389. package/tests/test-asset-errors.mjs +35 -0
  390. package/tests/test-asset-graph.mjs +311 -0
  391. package/tests/test-audio.mjs +417 -0
  392. package/tests/test-automation-timeouts.mjs +98 -0
  393. package/tests/test-behavior-tree.mjs +444 -0
  394. package/tests/test-blueprint-graph.mjs +410 -0
  395. package/tests/test-blueprint.mjs +577 -0
  396. package/tests/test-client-mode.mjs +86 -0
  397. package/tests/test-console-command.mjs +56 -0
  398. package/tests/test-control-actor.mjs +425 -0
  399. package/tests/test-control-editor.mjs +112 -0
  400. package/tests/test-graphql.mjs +372 -0
  401. package/tests/test-input.mjs +349 -0
  402. package/tests/test-inspect.mjs +302 -0
  403. package/tests/test-landscape.mjs +316 -0
  404. package/tests/test-lighting.mjs +428 -0
  405. package/tests/test-manage-asset.mjs +438 -0
  406. package/tests/test-manage-level.mjs +89 -0
  407. package/tests/test-materials.mjs +356 -0
  408. package/tests/test-niagara.mjs +185 -0
  409. package/tests/test-no-inline-python.mjs +122 -0
  410. package/tests/test-performance.mjs +539 -0
  411. package/tests/test-plugin-handshake.mjs +82 -0
  412. package/tests/test-runner.mjs +933 -0
  413. package/tests/test-sequence.mjs +104 -0
  414. package/tests/test-system.mjs +96 -0
  415. package/tests/test-wasm.mjs +283 -0
  416. package/tests/test-world-partition.mjs +215 -0
  417. package/tsconfig.json +3 -3
  418. package/vitest.config.ts +35 -0
  419. package/wasm/Cargo.lock +363 -0
  420. package/wasm/Cargo.toml +42 -0
  421. package/wasm/LICENSE +21 -0
  422. package/wasm/README.md +253 -0
  423. package/wasm/src/dependency_resolver.rs +377 -0
  424. package/wasm/src/lib.rs +153 -0
  425. package/wasm/src/property_parser.rs +271 -0
  426. package/wasm/src/transform_math.rs +396 -0
  427. package/wasm/tests/integration.rs +109 -0
  428. package/.github/workflows/smithery-build.yml +0 -29
  429. package/dist/prompts/index.d.ts +0 -21
  430. package/dist/prompts/index.js +0 -217
  431. package/dist/tools/build_environment_advanced.d.ts +0 -65
  432. package/dist/tools/build_environment_advanced.js +0 -633
  433. package/dist/tools/rc.d.ts +0 -110
  434. package/dist/tools/rc.js +0 -437
  435. package/dist/tools/visual.d.ts +0 -40
  436. package/dist/tools/visual.js +0 -282
  437. package/dist/utils/http.d.ts +0 -6
  438. package/dist/utils/http.js +0 -151
  439. package/dist/utils/python-output.d.ts +0 -18
  440. package/dist/utils/python-output.js +0 -290
  441. package/dist/utils/python.d.ts +0 -2
  442. package/dist/utils/python.js +0 -4
  443. package/dist/utils/stdio-redirect.d.ts +0 -2
  444. package/dist/utils/stdio-redirect.js +0 -20
  445. package/docs/unreal-tool-test-cases.md +0 -574
  446. package/smithery.yaml +0 -29
  447. package/src/prompts/index.ts +0 -249
  448. package/src/tools/build_environment_advanced.ts +0 -732
  449. package/src/tools/rc.ts +0 -515
  450. package/src/tools/visual.ts +0 -281
  451. package/src/utils/http.ts +0 -187
  452. package/src/utils/python-output.ts +0 -351
  453. package/src/utils/python.ts +0 -3
  454. package/src/utils/stdio-redirect.ts +0 -18
@@ -0,0 +1,128 @@
1
+ # Native Automation Completion Log
2
+
3
+ This document tracks ongoing work to replace stubbed or registry-based fallbacks with full native editor implementations across the MCP Automation Bridge plugin.
4
+
5
+ ## Asset Workflow & Source Control
6
+
7
+ | Action | Current State | Needed Work |
8
+ | --- | --- | --- |
9
+ | `get_source_control_state` | Implemented (checkout status, user). | ✅ Done |
10
+ | `analyze_graph` | Implemented (recursive dependencies + WASM analysis). | ✅ Done |
11
+ | `create_thumbnail` | Implemented (supports width/height params). | ✅ Done |
12
+ | `import` / `export` | Native AssetTools implementation. | ✅ Done |
13
+
14
+ ## Sequence Handlers
15
+
16
+ | Action | Current State | Needed Work |
17
+ | --- | --- | --- |
18
+ | `sequence_create` | Uses native asset creation when WITH_EDITOR. | ✅ Done |
19
+ | `sequence_open` | Opens the asset in an editor window. | ✅ Done |
20
+ | `sequence_add_camera` | Spawns camera and adds to level sequence. | ✅ Done |
21
+ | `sequence_play` / `sequence_pause` / `sequence_stop` | Native editor playback control. | ✅ Done |
22
+ | `sequence_add_actor` / `sequence_add_actors` | Native binding creation (Possessables). | ✅ Done |
23
+ | `sequence_add_spawnable_from_class` | Native spawnable creation and track binding. | ✅ Done |
24
+ | `sequence_remove_actors` | Removes bindings and tracks. | ✅ Done |
25
+ | `sequence_get_bindings` | Lists bindings from MovieScene. | ✅ Done |
26
+ | `sequence_get_properties` | Returns frame rate + playback range. | ✅ Done |
27
+ | `sequence_set_playback_speed` | Sets playback speed via Sequencer. | ✅ Done |
28
+ | `sequence_cleanup` | Removes actors by prefix. | ✅ Done |
29
+
30
+ ## Graph Actions (Consolidated)
31
+
32
+ | Action | Current State | Needed Work |
33
+ | --- | --- | --- |
34
+ | `manage_blueprint` (graph) | Implemented (nodes, pins, properties). | Refine `Literal` node creation. |
35
+ | `manage_blueprint` (add_component) | Implemented (UE 5.7+ SubobjectDataInterface support added). | ✅ Done |
36
+ | `manage_effect` (graph) | Implemented (modules, removal, emitters, params). | ✅ Done |
37
+ | `manage_asset` (material graph) | Implemented (nodes, removal, details, connections). | ✅ Done |
38
+ | `manage_asset` (behavior tree) | Implemented (nodes, removal, connections, properties). | ✅ Done |
39
+
40
+ ## World Partition & Level Composition
41
+
42
+ | Action | Current State | Needed Work |
43
+ | --- | --- | --- |
44
+ | `manage_level` (world partition) | Implemented (`load_cells`, `set_datalayer`). | ✅ Done (UE 5.7+ support added) |
45
+
46
+ ## Input System
47
+
48
+ | Action | Current State | Needed Work |
49
+ | --- | --- | --- |
50
+ | `manage_input` | Implemented (Input Actions, Mapping Contexts, Bindings). | ✅ Done |
51
+
52
+ ## System, Render & Pipeline
53
+
54
+ | Action | Current State | Needed Work |
55
+ | --- | --- | --- |
56
+ | `manage_asset` (render target) | Implemented (`create_render_target`). | Implement `nanite_rebuild_mesh`. |
57
+ | `system_control` (lumen) | Implemented (`lumen_update_scene`). | |
58
+ | `system_control` (pipeline) | Implemented (`run_ubt`). | ✅ Done (Streamed via Node) |
59
+ | `system_control` (tests) | Implemented (`run_tests`). | Add result streaming. |
60
+ | `system_control` (settings) | Implemented (`set_project_setting`). | ✅ Done |
61
+ | `manage_blueprint` (events) | Implemented (`add_event` for Custom/Standard). | ✅ Done |
62
+
63
+ ## Observability
64
+
65
+ | Action | Current State | Needed Work |
66
+ | --- | --- | --- |
67
+ | `system_control` (logs) | Implemented (`subscribe`). | Add real-time streaming. |
68
+ | `system_control` (debug) | Implemented (`spawn_category`). | Add GGameplayDebugger integration. |
69
+ | `system_control` (insights) | Implemented (`start_session`). | Add FTraceAuxiliary integration. |
70
+ | `control_editor` (ui) | Implemented (`simulate_input`). | Add FSlateApplication integration. |
71
+
72
+ ## SCS (Simple Construction Script) Helpers
73
+
74
+ | Action | Current State | Needed Work |
75
+ | --- | --- | --- |
76
+ | `get_blueprint` | Requires editor build; returns serialized component tree. | ✅ Done |
77
+ | `modify_scs` | Full editor implementation (add/remove/attach). | ✅ Done |
78
+ | `add_scs_component` / `remove_scs_component` | Editor-only; fail fast when unavailable. | ✅ Done |
79
+
80
+ ## Security & Hardening
81
+
82
+ | Feature | Status | Details |
83
+ | --- | --- | --- |
84
+ | **Path Sanitization** | ✅ Implemented | Enforces project-relative paths (`/Game`, `/Engine`, `/Script`) and rejects traversal (`..`) in `import`, `create_folder`, etc. |
85
+ | **Pointer Safety** | ✅ Verified | Robust `nullptr` checks and weak pointers in C++ handlers. |
86
+ | **Concurrency** | ✅ Verified | Thread-safe queue and GameThread dispatching for all automation requests. |
87
+
88
+ ## Blueprint Authoring (Recap)
89
+
90
+ All `blueprint_*` authoring commands now require editor support and execute natively. Remaining polish:
91
+
92
+ - Expand `blueprint_add_node` to cover additional K2 nodes safely.
93
+ - Provide higher-level helpers once Sequencer bindings are in place (e.g., node creation shortcuts tied to bindings).
94
+ - Registry fallbacks have been removed for `blueprint_set_default` and `blueprint_compile`; these actions now fail fast when the editor build is unavailable.
95
+ - `ensure_exists` and `get_blueprint` now return `NOT_AVAILABLE` when the editor runtime is missing instead of consulting cached registry data.
96
+
97
+ ## Niagara & Effect Handlers
98
+
99
+ | Action | Current State | Needed Work |
100
+ | --- | --- | --- |
101
+ | `spawn_niagara` | Spawns Niagara actors. | Support attachment targets, optional lifespan, undo stack. |
102
+ | `set_niagara_parameter` | Supports float/vector/color/bool/int params. | ✅ Done |
103
+ | `create_niagara_ribbon` | Implemented (spawns actor, sets user params). | ✅ Done |
104
+ | `manage_effect` (legacy actions) | Stubbed (`NOT_IMPLEMENTED`). | Define expected presets and implement spawn routines + cleanup. |
105
+ | `create_dynamic_light` | Spawns lights, sets intensity/color; no undo/pulse logic. | Add transactions, pulse animation, optional mobility + cleanup helpers. |
106
+
107
+ ## UI Handlers
108
+
109
+ | Action | Current State | Needed Work |
110
+ | --- | --- | --- |
111
+ | `create_hud` | Implemented (creates widget + adds to viewport). | ✅ Done |
112
+ | `set_widget_text` | Implemented (finds widget + sets text). | ✅ Done |
113
+ | `set_widget_image` | Implemented (loads texture + sets image). | ✅ Done |
114
+ | `set_widget_visibility` | Implemented (finds widget + sets visibility). | ✅ Done |
115
+ | `remove_widget_from_viewport` | Implemented (removes widget). | ✅ Done |
116
+
117
+ ## Editor Function Helpers
118
+
119
+ - `execute_editor_function` routes many editor actions.
120
+ - `CALL_SUBSYSTEM` added for generic subsystem access.
121
+ - `ADD_WIDGET_TO_VIEWPORT` implemented.
122
+
123
+ ## Next Steps
124
+
125
+ 1. Refine `manage_render` logic (now split).
126
+ 2. Enhance test running with real-time result streaming.
127
+ 3. Polish dynamic lighting utilities (undo, mobility, pulse, removal).
128
+ 4. Extend log subscription for real-time streaming.
@@ -0,0 +1,423 @@
1
+ # Unreal MCP Server - Individual Tool Testing Guide
2
+
3
+ ## Overview
4
+ Each MCP tool now has its own dedicated test file with focused test cases. This allows you to test one tool at a time for faster iteration and debugging.
5
+
6
+ ## Test Structure
7
+
8
+ ### Individual Test Files
9
+ Each tool has a dedicated test file in `tests/`:
10
+
11
+ - **test-manage-asset.mjs** - Asset management (import, delete, rename, duplicate, list, get info)
12
+ - **test-control-actor.mjs** - Actor operations (spawn, delete, transform, properties)
13
+ - **test-control-editor.mjs** - Editor control (PIE, camera, screenshots, console commands)
14
+ - **test-manage-level.mjs** - Level management (load, save, create, stream)
15
+ - **test-animation.mjs** - Animation tools (play, stop, speed, state)
16
+ - **test-blueprint.mjs** - Blueprint operations (execute function, get/set variables)
17
+ - **test-materials.mjs** - Material tools (create instance, set parameters, apply)
18
+ - **test-niagara.mjs** - Niagara VFX (spawn system, set parameters, stop)
19
+ - **test-render.mjs** - Rendering tools (render targets, Lumen, lighting)
20
+ - **test-landscape.mjs** - Landscape tools (create, sculpt, paint, get info)
21
+ - **test-sequence.mjs** - Sequencer (create sequence, add tracks, keyframes, play, export)
22
+ - **test-system.mjs** - System control (engine info, settings, plugins, Python execution)
23
+ - **test-behavior-tree.mjs** - Behavior Tree editing (add nodes, connect, properties)
24
+ - **test-audio.mjs** - Audio management (sound cues, play sounds, audio components)
25
+ - **test-inspect.mjs** - Object introspection (get/set properties, components)
26
+ - **test-console-command.mjs** - Console command execution
27
+ - **test-asset-advanced.mjs** - Advanced asset operations (dependencies, etc.)
28
+ - **test-world-partition.mjs** - World Partition management
29
+ - **test-graphql.mjs** - GraphQL API testing
30
+ - **test-wasm.mjs** - WebAssembly module testing
31
+
32
+ ### Shared Test Runner
33
+ All test files use `test-runner.mjs` which provides:
34
+ - MCP client initialization
35
+ - Test execution and timing
36
+ - Result evaluation with proper error handling
37
+ - JSON report generation
38
+ - Summary statistics
39
+
40
+ ## Running Tests
41
+
42
+ ### Run a Specific Tool Test
43
+ ```bash
44
+ npm run test:manage_asset # Test asset management
45
+ npm run test:control_actor # Test actor operations
46
+ npm run test:control_editor # Test editor controls
47
+ npm run test:manage_level # Test level management
48
+ npm run test:animation # Test animation tools
49
+ npm run test:blueprint # Test blueprint operations
50
+ npm run test:materials # Test material tools
51
+ npm run test:niagara # Test Niagara VFX
52
+ npm run test:render # Test rendering tools
53
+ npm run test:landscape # Test landscape tools
54
+ npm run test:sequence # Test sequencer
55
+ npm run test:system # Test system control
56
+ npm run test:behavior_tree # Test behavior tree editing
57
+ npm run test:audio # Test audio management
58
+ npm run test:inspect # Test object introspection
59
+ npm run test:console_command # Test console commands
60
+ npm run test:asset_advanced # Test advanced asset tools
61
+ npm run test:world_partition # Test World Partition
62
+ npm run test:graphql # Test GraphQL API
63
+ npm run test:wasm # Test WebAssembly
64
+ ```
65
+
66
+ ### Run Tests Directly
67
+ ```bash
68
+ node tests/test-manage-asset.mjs
69
+ node tests/test-control-actor.mjs
70
+ # etc...
71
+ ```
72
+
73
+ ## Prerequisites
74
+
75
+ ### Unreal Engine Setup
76
+ 1. **Unreal Engine 5.0-5.7** must be running
77
+ 2. **Required plugins enabled:**
78
+ - Native Automation Bridge
79
+ - Python Editor Script Plugin
80
+ - Editor Scripting Utilities
81
+ - Sequencer
82
+ - Level Sequence Editor
83
+ - Control Rig
84
+ - Subobject Data Interface (UE 5.7+)
85
+
86
+ ### Configuration
87
+ **DefaultEngine.ini:**
88
+ ```ini
89
+ [HTTPServer.Listeners]
90
+ DefaultBindAddress=0.0.0.0
91
+
92
+ ```
93
+
94
+ **Environment Variables (optional):**
95
+ ```bash
96
+ UE_HOST=127.0.0.1
97
+ MCP_AUTOMATION_PORT=8091
98
+ ```
99
+
100
+ ## Test Output
101
+
102
+ ### Console Output
103
+ Each test displays:
104
+ - Test scenario description
105
+ - Pass/Fail status with ✅/❌
106
+ - Execution time in milliseconds
107
+ - Error details for failed tests
108
+
109
+ Example:
110
+ ```text
111
+ ============================================================
112
+ Starting Asset Management Tests
113
+ Total test cases: 10
114
+ ============================================================
115
+
116
+ ✅ Connected to Unreal MCP Server
117
+
118
+ [PASSED] Import FBX model into /Game/Meshes (1234.5 ms)
119
+ [PASSED] List all assets in /Game/Meshes (456.7 ms)
120
+ [FAILED] Delete non-existent asset (234.1 ms) => {"success":false,"error":"ASSET_NOT_FOUND"}
121
+
122
+ ============================================================
123
+ Asset Management Test Summary
124
+ ============================================================
125
+ Total cases: 10
126
+ ✅ Passed: 8
127
+ ❌ Failed: 2
128
+ ⏭️ Skipped: 0
129
+ Pass rate: 80.0%
130
+ Results saved to: tests/reports/asset-management-test-results-2025-10-07T12-34-56.789Z.json
131
+ ============================================================
132
+ ```
133
+
134
+ ### JSON Reports
135
+ Reports are saved to `tests/reports/` with format:
136
+ ```
137
+ <toolname>-test-results-<timestamp>.json
138
+ ```
139
+
140
+ Report structure:
141
+ ```json
142
+ {
143
+ "generatedAt": "2025-10-07T12:34:56.789Z",
144
+ "toolName": "asset-management",
145
+ "results": [
146
+ {
147
+ "scenario": "Import FBX model into /Game/Meshes",
148
+ "toolName": "manage_asset",
149
+ "arguments": { "action": "import_asset", ... },
150
+ "status": "passed",
151
+ "durationMs": 1234.5,
152
+ "detail": "{\"success\":true,\"message\":\"Asset imported\"}"
153
+ }
154
+ ]
155
+ }
156
+ ```
157
+
158
+ ## Test Case Structure
159
+
160
+ Each test file contains an array of test cases with:
161
+ - **scenario**: Human-readable description
162
+ - **toolName**: MCP tool name to call
163
+ - **arguments**: Tool arguments (action + parameters)
164
+ - **expected**: Expected outcome (success/error keywords)
165
+
166
+ Example:
167
+ ```javascript
168
+ {
169
+ scenario: 'Spawn a cube at origin',
170
+ toolName: 'control_actor',
171
+ arguments: {
172
+ action: 'spawn_actor',
173
+ class_path: '/Script/Engine.StaticMeshActor',
174
+ location: { x: 0, y: 0, z: 100 },
175
+ actor_label: 'TestCube'
176
+ },
177
+ expected: 'success - actor spawned'
178
+ }
179
+ ```
180
+
181
+ ## Adding New Tests
182
+
183
+ ### 1. Open the relevant test file
184
+ ```bash
185
+ code tests/test-manage-asset.mjs
186
+ ```
187
+
188
+ ### 2. Add test case to the array
189
+ ```javascript
190
+ {
191
+ scenario: 'Your test description',
192
+ toolName: 'manage_asset',
193
+ arguments: {
194
+ action: 'import_asset',
195
+ source_path: 'C:\\path\\to\\asset.fbx',
196
+ destination_path: '/Game/MyFolder'
197
+ },
198
+ expected: 'success - asset imported'
199
+ }
200
+ ```
201
+
202
+ ### 3. Run the updated test
203
+ ```bash
204
+ npm run test:manage_asset
205
+ ```
206
+
207
+ ## Test Evaluation Logic
208
+
209
+ ### Success Tests
210
+ Test passes when:
211
+ - Response has `success: true`
212
+ - Expected outcome contains success keywords: `success`, `returns`, `created`, `applied`, etc.
213
+
214
+ ### Error Tests
215
+ Test passes when:
216
+ - Response has `success: false` with expected error type
217
+ - Expected outcome contains failure keywords: `error`, `not found`, `invalid`, `missing`
218
+ - Actual error matches expected error type
219
+
220
+ ### Connection Failures
221
+ Tests **always fail** if:
222
+ - Unreal Engine is not connected (`UE_NOT_CONNECTED`)
223
+ - Unless test explicitly expects disconnection
224
+
225
+ This prevents false positives from connection errors.
226
+
227
+ ## Troubleshooting
228
+
229
+ ### All Tests Fail with UE_NOT_CONNECTED
230
+ **Problem**: Unreal Engine is not running or not accessible
231
+
232
+ **Solutions**:
233
+ 1. Launch Unreal Engine 5.0-5.7
234
+ 2. Open your project
235
+ 3. Verify Unreal Engine is running with the MCP plugin enabled
236
+ 4. Check `DefaultEngine.ini` configuration
237
+ 5. Test connection: `npm run test:system`
238
+
239
+ ### Specific Tests Fail
240
+ **Problem**: Missing Unreal setup or incorrect test expectations
241
+
242
+ **Solutions**:
243
+ 1. Check Unreal Output Log for Python errors
244
+ 2. Verify required plugins for that tool category
245
+ 3. Review test arguments for correctness
246
+ 4. Check asset paths exist in your project
247
+
248
+ ### Test Times Out
249
+ **Problem**: Operation takes too long or hangs
250
+
251
+ **Solutions**:
252
+ 1. Check Unreal is responsive (not frozen)
253
+ 2. Simplify test case (smaller assets, fewer operations)
254
+ 3. Check Python Script Plugin is enabled
255
+ 4. Review Unreal Output Log for errors
256
+
257
+ ### Import Tests Fail
258
+ **Problem**: File paths don't exist
259
+
260
+ **Solutions**:
261
+ 1. Update file paths in test cases to valid locations
262
+ 2. Set environment variable: `UNREAL_MCP_FBX_FILE=C:\path\to\your\test.fbx`
263
+ 3. Use absolute Windows paths with double backslashes
264
+
265
+ ## Best Practices
266
+
267
+ ### 1. Test Incrementally
268
+ Start with basic operations, then add complex scenarios:
269
+ ```bash
270
+ npm run test:control_actor # Basic actor operations
271
+ npm run test:control_editor # Editor controls
272
+ npm run test:manage_level # Level management
273
+ ```
274
+
275
+ ### 2. Isolate Failures
276
+ When a test fails:
277
+ 1. Run only that tool's tests: `npm run test:<toolname>`
278
+ 2. Check the JSON report for details
279
+ 3. Review Unreal Output Log
280
+ 4. Manually verify in Unreal if needed
281
+
282
+ ### 3. Clean State
283
+ Between test runs:
284
+ - Delete test actors/assets created
285
+ - Reset to known level state
286
+ - Clear console output
287
+
288
+ ### 4. Update Paths
289
+ Customize test cases for your project:
290
+ ```javascript
291
+ // Update asset paths
292
+ asset_path: '/Game/YourProject/Meshes/YourAsset'
293
+
294
+ // Update file system paths
295
+ source_path: 'C:\\YourPath\\YourFile.fbx'
296
+ ```
297
+
298
+ ## Performance Notes
299
+
300
+ ### Typical Test Durations
301
+ - **Asset operations**: 500-2000ms (depends on asset size)
302
+ - **Actor spawning**: 100-500ms
303
+ - **Editor commands**: 50-200ms
304
+ - **Python scripts**: 200-1000ms
305
+ - **Material operations**: 300-800ms
306
+ - **Sequence operations**: 400-1200ms
307
+
308
+ ### Optimization Tips
309
+ - Run tests on smaller assets first
310
+ - Use Preview quality for lighting builds
311
+ - Minimize PIE sessions during testing
312
+ - Close unnecessary Unreal Editor windows
313
+
314
+ ## Tool-Specific Notes
315
+
316
+ ### Asset Management Tests
317
+ - Requires valid file paths on your system
318
+ - Import times vary by asset size
319
+ - Some operations may prompt for user confirmation
320
+
321
+ ### Actor Tests
322
+ - Creates actors in current level
323
+ - Remember to clean up test actors
324
+ - Use unique actor labels to avoid conflicts
325
+
326
+ ### Editor Tests
327
+ - PIE state affects other tests
328
+ - Screenshots save to project's Saved folder
329
+ - Console commands persist between tests
330
+
331
+ ### Level Tests
332
+ - Save prompt may block tests
333
+ - Streaming requires sub-levels to exist
334
+ - Level paths must be valid package paths
335
+
336
+ ### Animation Tests
337
+ - Requires SkeletalMeshActor in scene
338
+ - Animation assets must exist in project
339
+ - Skeletal mesh must have animation support
340
+
341
+ ### Blueprint Tests
342
+ - Requires Blueprint actors in scene
343
+ - Functions must be callable from editor
344
+ - Variables must be exposed/public
345
+
346
+ ### Sequence Tests
347
+ - Creates sequences in Content Browser
348
+ - Export requires Movie Render Queue plugin
349
+ - Keyframes stored in sequence asset
350
+
351
+ ### Performance Tests
352
+ - Results vary by hardware
353
+ - Some stats require specific console commands
354
+ - Profiling may impact frame rate
355
+
356
+ ## Exit Codes
357
+
358
+ - **0**: All tests passed
359
+ - **1**: One or more tests failed or connection error
360
+
361
+ Use exit codes in CI/CD pipelines:
362
+ ```bash
363
+ npm run test:manage_asset && npm run test:control_actor && npm run test:control_editor
364
+ ```
365
+
366
+ ## Contributing
367
+
368
+ ### Adding a New Tool Test File
369
+
370
+ 1. **Create test file**: `tests/test-newtool.mjs`
371
+ ```javascript
372
+ #!/usr/bin/env node
373
+ import { runToolTests } from './test-runner.mjs';
374
+
375
+ const testCases = [
376
+ // Your test cases here
377
+ ];
378
+
379
+ await runToolTests('New Tool', testCases);
380
+ ```
381
+
382
+ 2. **Add npm script**: In `package.json`
383
+ ```json
384
+ "test:newtool": "node tests/test-newtool.mjs"
385
+ ```
386
+
387
+ 3. **Update this guide**: Add tool to the list above
388
+
389
+ ## FAQ
390
+
391
+ **Q: Can I run all tests at once?**
392
+ A: Not recommended. Run individual tools for focused testing. If needed, create a script that runs them sequentially.
393
+
394
+ **Q: How do I skip a test?**
395
+ A: Comment out the test case or remove it from the array temporarily.
396
+
397
+ **Q: Can I run tests without Unreal running?**
398
+ A: No, tests require active Unreal Engine connection. They will fail with `UE_NOT_CONNECTED` error.
399
+
400
+ **Q: How do I test custom tools?**
401
+ A: Create a new test file following the structure, add test cases with your tool's name and actions.
402
+
403
+ **Q: Are tests destructive?**
404
+ A: Some tests create/delete assets and actors. Use a test project or backup your work.
405
+
406
+ **Q: Can I run tests in CI/CD?**
407
+ A: Yes, if you can run Unreal Engine headless with the MCP plugin enabled. Most tests require active editor.
408
+
409
+ ## Support
410
+
411
+ For issues with:
412
+ - **MCP Server**: Check server logs, ensure plugins enabled
413
+ - **Test Framework**: Review test-runner.mjs and test file structure
414
+ - **Specific Tool**: Check tool implementation in `src/tools/<toolname>.ts`
415
+ - **Unreal Integration**: Review MCP plugin logs in Unreal Output Log
416
+
417
+ ## Next Steps
418
+
419
+ 1. **Build the server**: `npm run build`
420
+ 2. **Start Unreal Engine 5.0-5.7**
421
+ 3. **Run your first test**: `npm run test:system`
422
+ 4. **Review the report**: Check `tests/reports/` folder
423
+ 5. **Test other tools**: Run `npm run test:<toolname>` for each tool you use
@@ -2,13 +2,13 @@
2
2
  "mcpServers": {
3
3
  "unreal-engine": {
4
4
  "command": "node",
5
- "args": ["PATH_TO/unreal-engine-mcp-server/dist/cli.js"],
5
+ "args": [
6
+ "PATH_TO/unreal-engine-mcp-server/dist/cli.js"
7
+ ],
6
8
  "env": {
7
- "UE_HOST": "127.0.0.1",
8
- "UE_RC_HTTP_PORT": "30010",
9
- "UE_RC_WS_PORT": "30020",
10
- "UE_PROJECT_PATH": "C:/Users/YourName/Documents/Unreal Projects/YourProject"
9
+ "UE_PROJECT_PATH": "C:/Users/YourName/Documents/Unreal Projects/YourProject",
10
+ "MCP_AUTOMATION_PORT": "8091"
11
11
  }
12
12
  }
13
13
  }
14
- }
14
+ }