unreal-engine-mcp-server 0.5.4 → 0.5.5

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 (468) hide show
  1. package/dist/automation/bridge.d.ts.map +1 -0
  2. package/dist/automation/bridge.js.map +1 -0
  3. package/dist/automation/connection-manager.d.ts.map +1 -0
  4. package/dist/automation/connection-manager.js.map +1 -0
  5. package/dist/automation/handshake.d.ts.map +1 -0
  6. package/dist/automation/handshake.js.map +1 -0
  7. package/dist/automation/index.d.ts.map +1 -0
  8. package/dist/automation/index.js.map +1 -0
  9. package/dist/automation/message-handler.d.ts.map +1 -0
  10. package/dist/automation/message-handler.js.map +1 -0
  11. package/dist/automation/request-tracker.d.ts.map +1 -0
  12. package/dist/automation/request-tracker.js.map +1 -0
  13. package/dist/automation/types.d.ts.map +1 -0
  14. package/dist/automation/types.js.map +1 -0
  15. package/dist/cli.d.ts.map +1 -0
  16. package/dist/cli.js +4 -3
  17. package/dist/cli.js.map +1 -0
  18. package/dist/config/class-aliases.d.ts.map +1 -0
  19. package/dist/config/class-aliases.js.map +1 -0
  20. package/dist/config.d.ts.map +1 -0
  21. package/dist/config.js.map +1 -0
  22. package/dist/constants.d.ts.map +1 -0
  23. package/dist/constants.js.map +1 -0
  24. package/dist/graphql/loaders.d.ts.map +1 -0
  25. package/dist/graphql/loaders.js.map +1 -0
  26. package/dist/graphql/resolvers.d.ts.map +1 -0
  27. package/dist/graphql/resolvers.js +29 -29
  28. package/dist/graphql/resolvers.js.map +1 -0
  29. package/dist/graphql/schema.d.ts.map +1 -0
  30. package/dist/graphql/schema.js.map +1 -0
  31. package/dist/graphql/server.d.ts.map +1 -0
  32. package/dist/graphql/server.js.map +1 -0
  33. package/dist/graphql/types.d.ts.map +1 -0
  34. package/dist/graphql/types.js.map +1 -0
  35. package/dist/handlers/resource-handlers.d.ts.map +1 -0
  36. package/dist/handlers/resource-handlers.js.map +1 -0
  37. package/dist/index.d.ts +1 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +64 -7
  40. package/dist/index.js.map +1 -0
  41. package/dist/resources/actors.d.ts.map +1 -0
  42. package/dist/resources/actors.js.map +1 -0
  43. package/dist/resources/assets.d.ts.map +1 -0
  44. package/dist/resources/assets.js +6 -4
  45. package/dist/resources/assets.js.map +1 -0
  46. package/dist/resources/levels.d.ts.map +1 -0
  47. package/dist/resources/levels.js.map +1 -0
  48. package/dist/server/resource-registry.d.ts.map +1 -0
  49. package/dist/server/resource-registry.js.map +1 -0
  50. package/dist/server/tool-registry.d.ts.map +1 -0
  51. package/dist/server/tool-registry.js.map +1 -0
  52. package/dist/server-setup.d.ts.map +1 -0
  53. package/dist/server-setup.js.map +1 -0
  54. package/dist/services/health-monitor.d.ts.map +1 -0
  55. package/dist/services/health-monitor.js.map +1 -0
  56. package/dist/services/metrics-server.d.ts.map +1 -0
  57. package/dist/services/metrics-server.js.map +1 -0
  58. package/dist/tools/actors.d.ts.map +1 -0
  59. package/dist/tools/actors.js +3 -1
  60. package/dist/tools/actors.js.map +1 -0
  61. package/dist/tools/animation.d.ts.map +1 -0
  62. package/dist/tools/animation.js +2 -2
  63. package/dist/tools/animation.js.map +1 -0
  64. package/dist/tools/assets.d.ts.map +1 -0
  65. package/dist/tools/assets.js.map +1 -0
  66. package/dist/tools/audio.d.ts.map +1 -0
  67. package/dist/tools/audio.js.map +1 -0
  68. package/dist/tools/base-tool.d.ts.map +1 -0
  69. package/dist/tools/base-tool.js.map +1 -0
  70. package/dist/tools/behavior-tree.d.ts.map +1 -0
  71. package/dist/tools/behavior-tree.js.map +1 -0
  72. package/dist/tools/blueprint.d.ts.map +1 -0
  73. package/dist/tools/blueprint.js +4 -2
  74. package/dist/tools/blueprint.js.map +1 -0
  75. package/dist/tools/consolidated-tool-definitions.d.ts.map +1 -0
  76. package/dist/tools/consolidated-tool-definitions.js.map +1 -0
  77. package/dist/tools/consolidated-tool-handlers.d.ts.map +1 -0
  78. package/dist/tools/consolidated-tool-handlers.js.map +1 -0
  79. package/dist/tools/debug.d.ts.map +1 -0
  80. package/dist/tools/debug.js +3 -1
  81. package/dist/tools/debug.js.map +1 -0
  82. package/dist/tools/dynamic-handler-registry.d.ts.map +1 -0
  83. package/dist/tools/dynamic-handler-registry.js +3 -1
  84. package/dist/tools/dynamic-handler-registry.js.map +1 -0
  85. package/dist/tools/editor.d.ts.map +1 -0
  86. package/dist/tools/editor.js +1 -1
  87. package/dist/tools/editor.js.map +1 -0
  88. package/dist/tools/engine.d.ts.map +1 -0
  89. package/dist/tools/engine.js.map +1 -0
  90. package/dist/tools/environment.d.ts.map +1 -0
  91. package/dist/tools/environment.js +2 -2
  92. package/dist/tools/environment.js.map +1 -0
  93. package/dist/tools/foliage.d.ts.map +1 -0
  94. package/dist/tools/foliage.js.map +1 -0
  95. package/dist/tools/handlers/actor-handlers.d.ts +1 -1
  96. package/dist/tools/handlers/actor-handlers.d.ts.map +1 -0
  97. package/dist/tools/handlers/actor-handlers.js +6 -5
  98. package/dist/tools/handlers/actor-handlers.js.map +1 -0
  99. package/dist/tools/handlers/animation-handlers.d.ts.map +1 -0
  100. package/dist/tools/handlers/animation-handlers.js.map +1 -0
  101. package/dist/tools/handlers/argument-helper.d.ts.map +1 -0
  102. package/dist/tools/handlers/argument-helper.js.map +1 -0
  103. package/dist/tools/handlers/asset-handlers.d.ts.map +1 -0
  104. package/dist/tools/handlers/asset-handlers.js +5 -1
  105. package/dist/tools/handlers/asset-handlers.js.map +1 -0
  106. package/dist/tools/handlers/audio-handlers.d.ts.map +1 -0
  107. package/dist/tools/handlers/audio-handlers.js.map +1 -0
  108. package/dist/tools/handlers/blueprint-handlers.d.ts.map +1 -0
  109. package/dist/tools/handlers/blueprint-handlers.js +2 -1
  110. package/dist/tools/handlers/blueprint-handlers.js.map +1 -0
  111. package/dist/tools/handlers/common-handlers.d.ts.map +1 -0
  112. package/dist/tools/handlers/common-handlers.js.map +1 -0
  113. package/dist/tools/handlers/editor-handlers.d.ts.map +1 -0
  114. package/dist/tools/handlers/editor-handlers.js +12 -2
  115. package/dist/tools/handlers/editor-handlers.js.map +1 -0
  116. package/dist/tools/handlers/effect-handlers.d.ts.map +1 -0
  117. package/dist/tools/handlers/effect-handlers.js.map +1 -0
  118. package/dist/tools/handlers/environment-handlers.d.ts.map +1 -0
  119. package/dist/tools/handlers/environment-handlers.js.map +1 -0
  120. package/dist/tools/handlers/graph-handlers.d.ts.map +1 -0
  121. package/dist/tools/handlers/graph-handlers.js +61 -1
  122. package/dist/tools/handlers/graph-handlers.js.map +1 -0
  123. package/dist/tools/handlers/input-handlers.d.ts.map +1 -0
  124. package/dist/tools/handlers/input-handlers.js.map +1 -0
  125. package/dist/tools/handlers/inspect-handlers.d.ts.map +1 -0
  126. package/dist/tools/handlers/inspect-handlers.js.map +1 -0
  127. package/dist/tools/handlers/level-handlers.d.ts.map +1 -0
  128. package/dist/tools/handlers/level-handlers.js.map +1 -0
  129. package/dist/tools/handlers/lighting-handlers.d.ts.map +1 -0
  130. package/dist/tools/handlers/lighting-handlers.js +23 -1
  131. package/dist/tools/handlers/lighting-handlers.js.map +1 -0
  132. package/dist/tools/handlers/performance-handlers.d.ts.map +1 -0
  133. package/dist/tools/handlers/performance-handlers.js +15 -2
  134. package/dist/tools/handlers/performance-handlers.js.map +1 -0
  135. package/dist/tools/handlers/pipeline-handlers.d.ts.map +1 -0
  136. package/dist/tools/handlers/pipeline-handlers.js.map +1 -0
  137. package/dist/tools/handlers/sequence-handlers.d.ts.map +1 -0
  138. package/dist/tools/handlers/sequence-handlers.js.map +1 -0
  139. package/dist/tools/handlers/system-handlers.d.ts.map +1 -0
  140. package/dist/tools/handlers/system-handlers.js +16 -1
  141. package/dist/tools/handlers/system-handlers.js.map +1 -0
  142. package/dist/tools/input.d.ts.map +1 -0
  143. package/dist/tools/input.js +3 -1
  144. package/dist/tools/input.js.map +1 -0
  145. package/dist/tools/introspection.d.ts.map +1 -0
  146. package/dist/tools/introspection.js.map +1 -0
  147. package/dist/tools/landscape.d.ts.map +1 -0
  148. package/dist/tools/landscape.js +3 -1
  149. package/dist/tools/landscape.js.map +1 -0
  150. package/dist/tools/level.d.ts.map +1 -0
  151. package/dist/tools/level.js.map +1 -0
  152. package/dist/tools/lighting.d.ts.map +1 -0
  153. package/dist/tools/lighting.js +3 -1
  154. package/dist/tools/lighting.js.map +1 -0
  155. package/dist/tools/logs.d.ts.map +1 -0
  156. package/dist/tools/logs.js.map +1 -0
  157. package/dist/tools/materials.d.ts.map +1 -0
  158. package/dist/tools/materials.js +3 -1
  159. package/dist/tools/materials.js.map +1 -0
  160. package/dist/tools/niagara.d.ts.map +1 -0
  161. package/dist/tools/niagara.js +7 -5
  162. package/dist/tools/niagara.js.map +1 -0
  163. package/dist/tools/performance.d.ts.map +1 -0
  164. package/dist/tools/performance.js.map +1 -0
  165. package/dist/tools/physics.d.ts.map +1 -0
  166. package/dist/tools/physics.js +9 -7
  167. package/dist/tools/physics.js.map +1 -0
  168. package/dist/tools/property-dictionary.d.ts.map +1 -0
  169. package/dist/tools/property-dictionary.js.map +1 -0
  170. package/dist/tools/sequence.d.ts.map +1 -0
  171. package/dist/tools/sequence.js +3 -1
  172. package/dist/tools/sequence.js.map +1 -0
  173. package/dist/tools/tool-definition-utils.d.ts.map +1 -0
  174. package/dist/tools/tool-definition-utils.js.map +1 -0
  175. package/dist/tools/ui.d.ts.map +1 -0
  176. package/dist/tools/ui.js +3 -1
  177. package/dist/tools/ui.js.map +1 -0
  178. package/dist/types/automation-responses.d.ts.map +1 -0
  179. package/dist/types/automation-responses.js.map +1 -0
  180. package/dist/types/env.d.ts.map +1 -0
  181. package/dist/types/env.js.map +1 -0
  182. package/dist/types/handler-types.d.ts.map +1 -0
  183. package/dist/types/handler-types.js.map +1 -0
  184. package/dist/types/tool-interfaces.d.ts.map +1 -0
  185. package/dist/types/tool-interfaces.js.map +1 -0
  186. package/dist/types/tool-types.d.ts.map +1 -0
  187. package/dist/types/tool-types.js.map +1 -0
  188. package/dist/unreal-bridge.d.ts +1 -0
  189. package/dist/unreal-bridge.d.ts.map +1 -0
  190. package/dist/unreal-bridge.js +8 -0
  191. package/dist/unreal-bridge.js.map +1 -0
  192. package/dist/utils/command-validator.d.ts.map +1 -0
  193. package/dist/utils/command-validator.js.map +1 -0
  194. package/dist/utils/elicitation.d.ts.map +1 -0
  195. package/dist/utils/elicitation.js.map +1 -0
  196. package/dist/utils/error-handler.d.ts.map +1 -0
  197. package/dist/utils/error-handler.js.map +1 -0
  198. package/dist/utils/ini-reader.d.ts.map +1 -0
  199. package/dist/utils/ini-reader.js.map +1 -0
  200. package/dist/utils/logger.d.ts.map +1 -0
  201. package/dist/utils/logger.js.map +1 -0
  202. package/dist/utils/normalize.d.ts.map +1 -0
  203. package/dist/utils/normalize.js.map +1 -0
  204. package/dist/utils/path-security.d.ts.map +1 -0
  205. package/dist/utils/path-security.js.map +1 -0
  206. package/dist/utils/response-factory.d.ts.map +1 -0
  207. package/dist/utils/response-factory.js +3 -1
  208. package/dist/utils/response-factory.js.map +1 -0
  209. package/dist/utils/response-validator.d.ts.map +1 -0
  210. package/dist/utils/response-validator.js.map +1 -0
  211. package/dist/utils/result-helpers.d.ts.map +1 -0
  212. package/dist/utils/result-helpers.js.map +1 -0
  213. package/dist/utils/safe-json.d.ts.map +1 -0
  214. package/dist/utils/safe-json.js.map +1 -0
  215. package/dist/utils/unreal-command-queue.d.ts.map +1 -0
  216. package/dist/utils/unreal-command-queue.js.map +1 -0
  217. package/dist/utils/validation.d.ts.map +1 -0
  218. package/dist/utils/validation.js.map +1 -0
  219. package/dist/wasm/index.d.ts.map +1 -0
  220. package/dist/wasm/index.js.map +1 -0
  221. package/package.json +12 -34
  222. package/server.json +2 -2
  223. package/.dockerignore +0 -57
  224. package/.env.example +0 -26
  225. package/.env.production +0 -61
  226. package/.eslintrc.json +0 -0
  227. package/.eslintrc.override.json +0 -8
  228. package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -94
  229. package/.github/ISSUE_TEMPLATE/config.yml +0 -8
  230. package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -56
  231. package/.github/copilot-instructions.md +0 -478
  232. package/.github/dependabot.yml +0 -19
  233. package/.github/labeler.yml +0 -24
  234. package/.github/labels.yml +0 -70
  235. package/.github/pull_request_template.md +0 -42
  236. package/.github/release-drafter-config.yml +0 -51
  237. package/.github/workflows/auto-merge.yml +0 -38
  238. package/.github/workflows/ci.yml +0 -38
  239. package/.github/workflows/dependency-review.yml +0 -17
  240. package/.github/workflows/gemini-issue-triage.yml +0 -172
  241. package/.github/workflows/greetings.yml +0 -27
  242. package/.github/workflows/labeler.yml +0 -17
  243. package/.github/workflows/links.yml +0 -80
  244. package/.github/workflows/pr-size-labeler.yml +0 -137
  245. package/.github/workflows/publish-mcp.yml +0 -79
  246. package/.github/workflows/release-drafter.yml +0 -24
  247. package/.github/workflows/release.yml +0 -112
  248. package/.github/workflows/semantic-pull-request.yml +0 -35
  249. package/.github/workflows/smoke-test.yml +0 -36
  250. package/.github/workflows/stale.yml +0 -28
  251. package/CONTRIBUTING.md +0 -140
  252. package/Dockerfile +0 -37
  253. package/GEMINI.md +0 -115
  254. package/Public/Plugin_setup_guide.mp4 +0 -0
  255. package/Public/icon.png +0 -0
  256. package/claude_desktop_config_example.json +0 -15
  257. package/dist/types/responses.d.ts +0 -249
  258. package/dist/types/responses.js +0 -2
  259. package/docs/GraphQL-API.md +0 -888
  260. package/docs/Migration-Guide-v0.5.0.md +0 -684
  261. package/docs/Roadmap.md +0 -53
  262. package/docs/WebAssembly-Integration.md +0 -628
  263. package/docs/editor-plugin-extension.md +0 -370
  264. package/docs/handler-mapping.md +0 -249
  265. package/docs/native-automation-progress.md +0 -128
  266. package/docs/testing-guide.md +0 -423
  267. package/eslint.config.mjs +0 -68
  268. package/mcp-config-example.json +0 -14
  269. package/plugins/McpAutomationBridge/Config/FilterPlugin.ini +0 -8
  270. package/plugins/McpAutomationBridge/McpAutomationBridge.uplugin +0 -64
  271. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/McpAutomationBridge.Build.cs +0 -189
  272. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.cpp +0 -22
  273. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.h +0 -30
  274. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeHelpers.h +0 -1983
  275. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeModule.cpp +0 -72
  276. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSettings.cpp +0 -46
  277. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSubsystem.cpp +0 -846
  278. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AnimationHandlers.cpp +0 -2393
  279. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetQueryHandlers.cpp +0 -300
  280. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetWorkflowHandlers.cpp +0 -2807
  281. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AudioHandlers.cpp +0 -1087
  282. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BehaviorTreeHandlers.cpp +0 -488
  283. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.cpp +0 -643
  284. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.h +0 -31
  285. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintGraphHandlers.cpp +0 -1094
  286. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers.cpp +0 -5750
  287. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers_List.cpp +0 -152
  288. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ControlHandlers.cpp +0 -2614
  289. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_DebugHandlers.cpp +0 -42
  290. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EditorFunctionHandlers.cpp +0 -1237
  291. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EffectHandlers.cpp +0 -1725
  292. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EnvironmentHandlers.cpp +0 -2265
  293. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_FoliageHandlers.cpp +0 -954
  294. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InputHandlers.cpp +0 -209
  295. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InsightsHandlers.cpp +0 -41
  296. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LandscapeHandlers.cpp +0 -1164
  297. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LevelHandlers.cpp +0 -762
  298. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LightingHandlers.cpp +0 -663
  299. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LogHandlers.cpp +0 -136
  300. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_MaterialGraphHandlers.cpp +0 -494
  301. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraGraphHandlers.cpp +0 -278
  302. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraHandlers.cpp +0 -625
  303. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PerformanceHandlers.cpp +0 -401
  304. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PipelineHandlers.cpp +0 -67
  305. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ProcessRequest.cpp +0 -472
  306. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PropertyHandlers.cpp +0 -2634
  307. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_RenderHandlers.cpp +0 -189
  308. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.cpp +0 -917
  309. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.h +0 -39
  310. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequenceHandlers.cpp +0 -2706
  311. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequencerHandlers.cpp +0 -519
  312. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_TestHandlers.cpp +0 -38
  313. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_UiHandlers.cpp +0 -668
  314. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_WorldPartitionHandlers.cpp +0 -346
  315. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.cpp +0 -1345
  316. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.h +0 -149
  317. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpConnectionManager.cpp +0 -782
  318. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSettings.h +0 -115
  319. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSubsystem.h +0 -796
  320. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpConnectionManager.h +0 -117
  321. package/scripts/check-unreal-connection.mjs +0 -19
  322. package/scripts/clean-tmp.js +0 -23
  323. package/scripts/patch-wasm.js +0 -26
  324. package/scripts/run-all-tests.mjs +0 -136
  325. package/scripts/smoke-test.ts +0 -94
  326. package/scripts/sync-mcp-plugin.js +0 -143
  327. package/scripts/test-no-plugin-alternates.mjs +0 -113
  328. package/scripts/validate-server.js +0 -46
  329. package/scripts/verify-automation-bridge.js +0 -200
  330. package/src/automation/bridge.ts +0 -630
  331. package/src/automation/connection-manager.ts +0 -148
  332. package/src/automation/handshake.ts +0 -99
  333. package/src/automation/index.ts +0 -2
  334. package/src/automation/message-handler.ts +0 -192
  335. package/src/automation/request-tracker.ts +0 -155
  336. package/src/automation/types.ts +0 -108
  337. package/src/cli.ts +0 -34
  338. package/src/config/class-aliases.ts +0 -65
  339. package/src/config.ts +0 -73
  340. package/src/constants.ts +0 -29
  341. package/src/graphql/loaders.ts +0 -244
  342. package/src/graphql/resolvers.ts +0 -1008
  343. package/src/graphql/schema.ts +0 -452
  344. package/src/graphql/server.ts +0 -156
  345. package/src/graphql/types.ts +0 -10
  346. package/src/handlers/resource-handlers.ts +0 -186
  347. package/src/index.ts +0 -243
  348. package/src/resources/actors.ts +0 -127
  349. package/src/resources/assets.ts +0 -286
  350. package/src/resources/levels.ts +0 -68
  351. package/src/server/resource-registry.ts +0 -47
  352. package/src/server/tool-registry.ts +0 -354
  353. package/src/server-setup.ts +0 -114
  354. package/src/services/health-monitor.ts +0 -132
  355. package/src/services/metrics-server.ts +0 -176
  356. package/src/tools/actors.ts +0 -564
  357. package/src/tools/animation.ts +0 -941
  358. package/src/tools/assets.ts +0 -394
  359. package/src/tools/audio.ts +0 -499
  360. package/src/tools/base-tool.ts +0 -52
  361. package/src/tools/behavior-tree.ts +0 -45
  362. package/src/tools/blueprint.ts +0 -940
  363. package/src/tools/consolidated-tool-definitions.ts +0 -1256
  364. package/src/tools/consolidated-tool-handlers.ts +0 -302
  365. package/src/tools/debug.ts +0 -622
  366. package/src/tools/dynamic-handler-registry.ts +0 -33
  367. package/src/tools/editor.ts +0 -435
  368. package/src/tools/engine.ts +0 -43
  369. package/src/tools/environment.ts +0 -281
  370. package/src/tools/foliage.ts +0 -596
  371. package/src/tools/handlers/actor-handlers.ts +0 -244
  372. package/src/tools/handlers/animation-handlers.ts +0 -237
  373. package/src/tools/handlers/argument-helper.ts +0 -142
  374. package/src/tools/handlers/asset-handlers.ts +0 -550
  375. package/src/tools/handlers/audio-handlers.ts +0 -194
  376. package/src/tools/handlers/blueprint-handlers.ts +0 -380
  377. package/src/tools/handlers/common-handlers.ts +0 -108
  378. package/src/tools/handlers/editor-handlers.ts +0 -124
  379. package/src/tools/handlers/effect-handlers.ts +0 -224
  380. package/src/tools/handlers/environment-handlers.ts +0 -183
  381. package/src/tools/handlers/graph-handlers.ts +0 -117
  382. package/src/tools/handlers/input-handlers.ts +0 -28
  383. package/src/tools/handlers/inspect-handlers.ts +0 -450
  384. package/src/tools/handlers/level-handlers.ts +0 -253
  385. package/src/tools/handlers/lighting-handlers.ts +0 -151
  386. package/src/tools/handlers/performance-handlers.ts +0 -132
  387. package/src/tools/handlers/pipeline-handlers.ts +0 -194
  388. package/src/tools/handlers/sequence-handlers.ts +0 -438
  389. package/src/tools/handlers/system-handlers.ts +0 -564
  390. package/src/tools/input.ts +0 -160
  391. package/src/tools/introspection.ts +0 -689
  392. package/src/tools/landscape.ts +0 -649
  393. package/src/tools/level.ts +0 -989
  394. package/src/tools/lighting.ts +0 -1052
  395. package/src/tools/logs.ts +0 -219
  396. package/src/tools/materials.ts +0 -295
  397. package/src/tools/niagara.ts +0 -485
  398. package/src/tools/performance.ts +0 -661
  399. package/src/tools/physics.ts +0 -679
  400. package/src/tools/property-dictionary.ts +0 -98
  401. package/src/tools/sequence.ts +0 -385
  402. package/src/tools/tool-definition-utils.ts +0 -35
  403. package/src/tools/ui.ts +0 -452
  404. package/src/types/automation-responses.ts +0 -119
  405. package/src/types/env.ts +0 -17
  406. package/src/types/handler-types.ts +0 -442
  407. package/src/types/responses.ts +0 -355
  408. package/src/types/tool-interfaces.ts +0 -250
  409. package/src/types/tool-types.ts +0 -575
  410. package/src/unreal-bridge.ts +0 -693
  411. package/src/utils/command-validator.ts +0 -139
  412. package/src/utils/elicitation.ts +0 -132
  413. package/src/utils/error-handler.ts +0 -287
  414. package/src/utils/ini-reader.ts +0 -86
  415. package/src/utils/logger.ts +0 -35
  416. package/src/utils/normalize.test.ts +0 -162
  417. package/src/utils/normalize.ts +0 -146
  418. package/src/utils/path-security.ts +0 -43
  419. package/src/utils/response-factory.ts +0 -44
  420. package/src/utils/response-validator.ts +0 -395
  421. package/src/utils/result-helpers.ts +0 -195
  422. package/src/utils/safe-json.test.ts +0 -90
  423. package/src/utils/safe-json.ts +0 -70
  424. package/src/utils/unreal-command-queue.ts +0 -166
  425. package/src/utils/validation.test.ts +0 -184
  426. package/src/utils/validation.ts +0 -312
  427. package/src/wasm/index.ts +0 -838
  428. package/test-server.mjs +0 -100
  429. package/tests/test-animation.mjs +0 -369
  430. package/tests/test-asset-advanced.mjs +0 -82
  431. package/tests/test-asset-graph.mjs +0 -311
  432. package/tests/test-audio.mjs +0 -417
  433. package/tests/test-automation-timeouts.mjs +0 -98
  434. package/tests/test-behavior-tree.mjs +0 -444
  435. package/tests/test-blueprint-graph.mjs +0 -410
  436. package/tests/test-blueprint.mjs +0 -577
  437. package/tests/test-client-mode.mjs +0 -86
  438. package/tests/test-console-command.mjs +0 -56
  439. package/tests/test-control-actor.mjs +0 -425
  440. package/tests/test-control-editor.mjs +0 -112
  441. package/tests/test-graphql.mjs +0 -372
  442. package/tests/test-input.mjs +0 -349
  443. package/tests/test-inspect.mjs +0 -302
  444. package/tests/test-landscape.mjs +0 -316
  445. package/tests/test-lighting.mjs +0 -428
  446. package/tests/test-manage-asset.mjs +0 -438
  447. package/tests/test-manage-level.mjs +0 -89
  448. package/tests/test-materials.mjs +0 -356
  449. package/tests/test-niagara.mjs +0 -185
  450. package/tests/test-no-inline-python.mjs +0 -122
  451. package/tests/test-performance.mjs +0 -539
  452. package/tests/test-plugin-handshake.mjs +0 -82
  453. package/tests/test-runner.mjs +0 -993
  454. package/tests/test-sequence.mjs +0 -104
  455. package/tests/test-system.mjs +0 -96
  456. package/tests/test-wasm.mjs +0 -283
  457. package/tests/test-world-partition.mjs +0 -215
  458. package/tsconfig.json +0 -56
  459. package/vitest.config.ts +0 -35
  460. package/wasm/Cargo.lock +0 -363
  461. package/wasm/Cargo.toml +0 -42
  462. package/wasm/LICENSE +0 -21
  463. package/wasm/README.md +0 -253
  464. package/wasm/src/dependency_resolver.rs +0 -377
  465. package/wasm/src/lib.rs +0 -153
  466. package/wasm/src/property_parser.rs +0 -271
  467. package/wasm/src/transform_math.rs +0 -396
  468. package/wasm/tests/integration.rs +0 -109
package/.env.production DELETED
@@ -1,61 +0,0 @@
1
- # Production Configuration for Unreal Engine MCP Server
2
-
3
- # Unreal Engine Automation Settings
4
- MCP_AUTOMATION_WS_PORT=8090
5
-
6
- # Tool Mode Configuration
7
- # Set to 'false' to use individual tools (36+), 'true' or unset for consolidated (10)
8
- USE_CONSOLIDATED_TOOLS=true
9
-
10
- # Logging Level
11
- # Available levels (from quietest to most verbose):
12
- # - error : only errors
13
- # - warn : warnings and errors
14
- # - info : info, warnings, errors (default)
15
- # - debug : full debug, very verbose
16
- LOG_LEVEL=info
17
-
18
- # Server Configuration
19
- MCP_SERVER_NAME=unreal-engine-mcp
20
- MCP_SERVER_VERSION=0.5.0
21
-
22
- # Connection Settings
23
- MAX_RETRY_ATTEMPTS=3
24
- RETRY_DELAY_MS=2000
25
-
26
- # Performance Settings
27
- REQUEST_TIMEOUT_MS=30000
28
- WEBSOCKET_KEEPALIVE_MS=30000
29
- WASM_ENABLED=true
30
-
31
- # Automation Bridge / WebSocket
32
- MCP_AUTOMATION_WS_HOST=127.0.0.1
33
- MCP_AUTOMATION_WS_PORTS=8090,8091
34
- MCP_AUTOMATION_WS_PROTOCOLS=mcp-automation
35
- MCP_AUTOMATION_BRIDGE_ENABLED=true
36
- MCP_AUTOMATION_SERVER_LEGACY=true
37
- MCP_AUTOMATION_CLIENT_MODE=true
38
- MCP_AUTOMATION_CLIENT_HOST=127.0.0.1
39
- MCP_AUTOMATION_CLIENT_PORT=8090
40
-
41
- # MCP timeouts and caching
42
- MCP_AUTOMATION_REQUEST_TIMEOUT_MS=120000
43
- MCP_AUTOMATION_PLUGIN_CREATE_TIMEOUT_MS=15000
44
- MCP_AUTOMATION_SCS_TIMEOUT_MS=120000
45
- MCP_AUTOMATION_EVENT_TIMEOUT_MS=0
46
- ASSET_LIST_TTL_MS=10000
47
- MCP_ROUTE_STDOUT_LOGS=true
48
-
49
- # GraphQL API (disabled by default)
50
- GRAPHQL_ENABLED=false
51
- GRAPHQL_PORT=4000
52
- GRAPHQL_HOST=127.0.0.1
53
- GRAPHQL_PATH=/graphql
54
- GRAPHQL_CORS_ORIGIN=*
55
- GRAPHQL_CORS_CREDENTIALS=false
56
-
57
- # Elicitation and environment defaults
58
- MCP_ELICITATION_TIMEOUT_MS=180000
59
- MCP_ENV_DEFAULT_TIME_OF_DAY=14
60
- MCP_ENV_DEFAULT_SUN_INTENSITY=5
61
- MCP_ENV_DEFAULT_SKYLIGHT_INTENSITY=1
package/.eslintrc.json DELETED
File without changes
@@ -1,8 +0,0 @@
1
- {
2
- "extends": "plugin:@typescript-eslint/recommended",
3
- "parser": "@typescript-eslint/parser",
4
- "rules": {
5
- "@typescript-eslint/no-unused-vars": ["warn", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" }],
6
- "@typescript-eslint/no-non-null-assertion": "off"
7
- }
8
- }
@@ -1,94 +0,0 @@
1
- name: 'Bug Report'
2
- description: 'Report a bug to help us improve Unreal Engine MCP Server'
3
- labels:
4
- - 'bug'
5
- body:
6
- - type: 'markdown'
7
- attributes:
8
- value: |-
9
- > [!IMPORTANT]
10
- > Thanks for taking the time to fill out this bug report!
11
- >
12
- > Please search **[existing issues](https://github.com/ChiR24/Unreal_mcp/issues)** to see if an issue already exists for the bug you encountered.
13
-
14
- - type: 'textarea'
15
- id: 'problem'
16
- attributes:
17
- label: 'What happened?'
18
- description: 'A clear and concise description of what the bug is.'
19
- validations:
20
- required: true
21
-
22
- - type: 'textarea'
23
- id: 'expected'
24
- attributes:
25
- label: 'What did you expect to happen?'
26
- validations:
27
- required: true
28
-
29
- - type: 'dropdown'
30
- id: 'ue-version'
31
- attributes:
32
- label: 'Unreal Engine Version'
33
- options:
34
- - 'UE 5.0'
35
- - 'UE 5.1'
36
- - 'UE 5.2'
37
- - 'UE 5.3'
38
- - 'UE 5.4'
39
- - 'UE 5.5'
40
- - 'UE 5.6'
41
- - 'UE 5.7'
42
- - 'Other'
43
- validations:
44
- required: true
45
-
46
- - type: 'dropdown'
47
- id: 'mcp-client'
48
- attributes:
49
- label: 'MCP Client'
50
- options:
51
- - 'Claude Desktop'
52
- - 'Cursor'
53
- - 'VS Code (Copilot)'
54
- - 'Custom MCP Client'
55
- - 'Other'
56
- validations:
57
- required: true
58
-
59
- - type: 'textarea'
60
- id: 'environment'
61
- attributes:
62
- label: 'Environment Information'
63
- description: 'Please include OS, Node.js version, and any relevant environment details.'
64
- value: |-
65
- - **OS**: [e.g., Windows 11, macOS Sonoma, Ubuntu 22.04]
66
- - **Node.js Version**: [e.g., 18.x, 20.x]
67
- - **MCP Server Version**: [e.g., 0.5.0]
68
- validations:
69
- required: true
70
-
71
- - type: 'textarea'
72
- id: 'reproduction'
73
- attributes:
74
- label: 'Steps to Reproduce'
75
- description: 'How can we reproduce the issue?'
76
- value: |-
77
- 1.
78
- 2.
79
- 3.
80
- validations:
81
- required: true
82
-
83
- - type: 'textarea'
84
- id: 'logs'
85
- attributes:
86
- label: 'Relevant Logs'
87
- description: 'Paste any relevant error logs or console output.'
88
- render: 'shell'
89
-
90
- - type: 'textarea'
91
- id: 'additional-context'
92
- attributes:
93
- label: 'Additional Context'
94
- description: 'Add any other context or screenshots about the problem here.'
@@ -1,8 +0,0 @@
1
- blank_issues_enabled: false
2
- contact_links:
3
- - name: 'Documentation'
4
- url: 'https://github.com/ChiR24/Unreal_mcp/tree/main/docs'
5
- about: 'Check the documentation for usage guides and API reference.'
6
- - name: 'Discussions'
7
- url: 'https://github.com/ChiR24/Unreal_mcp/discussions'
8
- about: 'Ask questions and share ideas with the community.'
@@ -1,56 +0,0 @@
1
- name: 'Feature Request'
2
- description: 'Suggest a new feature or improvement for Unreal Engine MCP Server'
3
- labels:
4
- - 'enhancement'
5
- body:
6
- - type: 'markdown'
7
- attributes:
8
- value: |-
9
- > [!IMPORTANT]
10
- > Thanks for taking the time to suggest an enhancement!
11
- >
12
- > Please search **[existing issues](https://github.com/ChiR24/Unreal_mcp/issues)** to see if a similar feature has already been requested.
13
-
14
- - type: 'textarea'
15
- id: 'feature'
16
- attributes:
17
- label: 'What would you like to be added?'
18
- description: 'A clear and concise description of the enhancement.'
19
- validations:
20
- required: true
21
-
22
- - type: 'dropdown'
23
- id: 'category'
24
- attributes:
25
- label: 'Feature Category'
26
- options:
27
- - 'New Tool'
28
- - 'Existing Tool Enhancement'
29
- - 'Plugin (C++)'
30
- - 'Performance'
31
- - 'Documentation'
32
- - 'Testing'
33
- - 'Developer Experience'
34
- - 'Other'
35
- validations:
36
- required: true
37
-
38
- - type: 'textarea'
39
- id: 'rationale'
40
- attributes:
41
- label: 'Why is this needed?'
42
- description: 'A clear and concise description of why this enhancement is needed.'
43
- validations:
44
- required: true
45
-
46
- - type: 'textarea'
47
- id: 'alternatives'
48
- attributes:
49
- label: 'Alternatives Considered'
50
- description: 'Any alternative solutions or features you have considered.'
51
-
52
- - type: 'textarea'
53
- id: 'additional-context'
54
- attributes:
55
- label: 'Additional Context'
56
- description: 'Add any other context, mockups, or screenshots about the feature request here.'
@@ -1,478 +0,0 @@
1
- # Unreal MCP — AI Agent Quick Guide (for AI coding agents)
2
-
3
- **Two-process architecture**: Node.js MCP server (`src/`) ↔ Native C++ UE Editor plugin (`Plugins/McpAutomationBridge/Source/`)
4
-
5
- **Data flow**: JSON payloads → `sendAutomationRequest(action, params)` (TS) → WebSocket → `UMcpAutomationBridgeSubsystem::ProcessAutomationRequest()` (C++) → Domain-specific `*Handlers.cpp` (native UE subsystems). Uses `FJsonObjectConverter::JsonObjectToUStruct()` + `FProperty` for typed marshaling.
6
-
7
- ## 🚀 Quickstart Checklist
8
-
9
- ### Prerequisites
10
- - **Enable UE Plugins**: MCP Automation Bridge, Editor Scripting Utilities
11
- - **Required Plugins**: Sequencer, Level Sequence Editor, Control Rig, Subobject Data Interface (UE 5.7+)
12
-
13
- ### Setup Commands
14
- ```bash
15
- # Sync plugin to Unreal project
16
- npm run automation:sync -- --project "X:/MyProject/Plugins"
17
-
18
- # Verify plugin installation
19
- npm run automation:verify -- --project "X:/MyProject/Plugins"
20
-
21
- # Start development server (auto-connects on demand)
22
- npm run dev
23
-
24
- # Build with WASM optimization (5-8x performance)
25
- npm run build:wasm
26
- ```
27
-
28
- ## 🗺️ Architecture Overview
29
-
30
- ### Core Components
31
-
32
- **Node.js Server (`src/`)**
33
- - `src/index.ts`: MCP server setup, tool registration, WASM initialization
34
- - `src/unreal-bridge.ts`: Connection management, command throttling, safety validation
35
- - `src/automation/bridge.ts`: WebSocket client with handshake/reconnect logic
36
- - `src/tools/consolidated-*.ts`: 17 tool dispatchers with response validation
37
- - `src/wasm/index.ts`: WebAssembly integration (JSON parsing, transform math)
38
-
39
- **C++ Plugin (`Plugins/McpAutomationBridge/Source/McpAutomationBridge/`)**
40
- - `Private/McpAutomationBridgeSubsystem.cpp`: WebSocket server, request routing
41
- - `Private/McpBridgeWebSocket.cpp/h`: Custom WebSocket with protocol negotiation
42
- - `Private/McpAutomationBridgeHelpers.h`: JSON↔UStruct conversion, class resolution
43
- - `Private/*Handlers.cpp` (18 files): Domain-specific implementations
44
-
45
- ### Communication Protocol
46
- - **Transport**: WebSocket (`ws://127.0.0.1:8091`)
47
- - **Message format**: `{type: "automation_request", requestId: string, action: string, payload: object}`
48
- - **Response format**: `{success: boolean, message?: string, error?: string, data?: object}`
49
- - **Handshake**: Capability token exchange with metadata
50
- - **Heartbeat**: 15s interval for connection health
51
-
52
- ## 🛠️ Developer Workflows
53
-
54
- ### Build & Test
55
- ```bash
56
- # Full build (TypeScript + WASM)
57
- npm run build
58
-
59
- # TypeScript only (faster iteration)
60
- npm run build:core
61
-
62
- # Run specific tool tests
63
- npm run test:manage_asset
64
- npm run test:control_actor
65
- npm run test:blueprint
66
-
67
- # Run all tests
68
- npm run test
69
-
70
- # Lint (TypeScript, C++, C#)
71
- npm run lint
72
- npm run lint:cpp
73
- ```
74
-
75
- ### Debugging
76
- ```bash
77
- # Check WebSocket connections
78
- netstat -ano | findstr :8091
79
-
80
- # Clean plugin build artifacts
81
- rm -r Plugins/McpAutomationBridge/{Binaries,Intermediate}
82
-
83
- # Set debug logging
84
- LOG_LEVEL=debug npm run dev
85
-
86
- # View MCP resources in Unreal
87
- ue://health # Metrics dashboard
88
- ue://automation-bridge # Connection status
89
- ```
90
-
91
- ## 📋 Critical Patterns & Conventions
92
-
93
- ### 1. Two-Step Tool Implementation
94
- **C++ Handler** → **TypeScript Wrapper** → **Consolidated Router**
95
-
96
- ```cpp
97
- // In McpAutomationBridgeSubsystem.cpp
98
- if (Action == TEXT("create_material"))
99
- {
100
- return AssetWorkflowHandlers::CreateMaterial(Payload, Reply);
101
- }
102
- ```
103
-
104
- ```typescript
105
- // In src/tools/assets.ts
106
- const resp = await automationBridge.sendAutomationRequest('create_material', {name, path});
107
- return responseValidator.wrapResponse('manage_asset', resp);
108
- ```
109
-
110
- ### 2. Response Validation
111
- All tools use `responseValidator.wrapResponse()` with Zod schemas defined in `consolidated-tool-definitions.ts`:
112
-
113
- ```typescript
114
- // Register schema in src/index.ts
115
- responseValidator.registerSchema('manage_asset', toolDefs.find(t => t.name === 'manage_asset').outputSchema);
116
- ```
117
-
118
- ### 3. Command Safety
119
- - **Validation**: `CommandValidator.validate()` blocks dangerous commands
120
- - **Throttling**: `executeThrottledCommand()` with priority queueing
121
- - **Timeouts**: Default 30s, configurable via `timeoutMs`
122
- - **Retry logic**: Exponential backoff with `ErrorHandler.retryWithBackoff()`
123
-
124
- ### 4. Path Normalization
125
- - **UE paths**: `/Content` → `/Game` (via `normalize.ts`)
126
- - **Vectors**: `{x,y,z}` or `[x,y,z]` → `toVec3Tuple()`
127
- - **Asset references**: Use `ResolveClassByName()` in C++ helpers
128
-
129
- ### 5. WASM Optimization
130
- Automatic fallback when WASM unavailable:
131
-
132
- ```typescript
133
- // In src/wasm/index.ts
134
- try {
135
- const result = wasmModule.PropertyParser.parse_properties(jsonStr);
136
- // 5-8x faster
137
- } catch (error) {
138
- // Fallback to TypeScript
139
- return JSON.parse(jsonStr);
140
- }
141
- ```
142
-
143
- ## 🔧 Adding New Tools
144
-
145
- ### Step-by-Step
146
-
147
- 1. **C++ Implementation**
148
- - Add handler in appropriate `*Handlers.cpp` file
149
- - Register in `McpAutomationBridgeSubsystem.cpp::ProcessAutomationRequest()`
150
- - Return `FReply{Success=true, Data=JsonObject}`
151
-
152
- 2. **TypeScript Wrapper**
153
- - Create or update `src/tools/<domain>.ts`
154
- - Use `automationBridge.sendAutomationRequest(action, params)`
155
- - Wrap response with `responseValidator.wrapResponse()`
156
-
157
- 3. **Consolidated Routing**
158
- - Add to `consolidated-tool-definitions.ts` (input/output schemas)
159
- - Route in `consolidated-tool-handlers.ts`
160
-
161
- 4. **Testing**
162
- - Create `tests/test-<domain>.mjs` with Markdown test cases
163
- - Run with `npm run test:<domain>`
164
-
165
- ### Example: New Material Action
166
-
167
- ```typescript
168
- // 1. Add to consolidated-tool-definitions.ts
169
- actions: ['list', 'create_material', 'update_material_shader']
170
-
171
- // 2. Add properties to inputSchema
172
- shaderType: { type: 'string', enum: ['DefaultLit', 'Unlit', 'Subsurface'] }
173
-
174
- // 3. Implement in src/tools/assets.ts
175
- case 'update_material_shader':
176
- return automationBridge.sendAutomationRequest('update_material_shader', params);
177
-
178
- // 4. Add test case in tests/test-materials.mjs
179
- {
180
- scenario: "Update material shader type",
181
- toolName: "manage_asset",
182
- arguments: {
183
- action: "update_material_shader",
184
- assetPath: "/Game/M_MasterMaterial_Test",
185
- shaderType: "Unlit"
186
- },
187
- expected: "success"
188
- }
189
- ```
190
-
191
- ## 🎯 Key Integration Points
192
-
193
- ### WebSocket Communication
194
- - **Client**: `src/automation/bridge.ts` (Node.js)
195
- - **Server**: `McpBridgeWebSocket.cpp` (Unreal Plugin)
196
- - **Protocol**: Custom MCP automation protocol with handshake
197
- - **Reconnect**: Exponential backoff with jitter
198
-
199
- ### Cross-Process Data Flow
200
- ```
201
- TypeScript Tool Call
202
-
203
- UnrealBridge.tryConnect()
204
-
205
- AutomationBridge.sendAutomationRequest()
206
-
207
- WebSocket → McpAutomationBridgeSubsystem
208
-
209
- ProcessAutomationRequest() → Handler
210
-
211
- FReply → JSON → TypeScript Response
212
- ```
213
-
214
- ### Error Handling
215
- - **Timeouts**: 30s default, configurable per request
216
- - **Retries**: 3 attempts with exponential backoff
217
- - **Fallbacks**: Automatic TypeScript when WASM unavailable
218
- - **Validation**: Zod schemas for all tool I/O
219
-
220
- ## 📊 Performance Optimization
221
-
222
- ### WASM Acceleration (5-8x faster)
223
- - **JSON parsing**: Property parsing with depth limits
224
- - **Transform math**: Vector/matrix operations
225
- - **Dependency resolution**: Asset graph traversal
226
- - **Topological sorting**: Build order calculation
227
-
228
- ### Command Throttling
229
- - **Priority queue**: 1-10 priority levels
230
- - **Minimum delay**: 100ms for stats, 300ms for operations
231
- - **Concurrency limits**: Configurable max pending requests
232
-
233
- ### Caching
234
- - **Asset lists**: 10-second TTL
235
- - **Class resolution**: Memoized lookups
236
- - **WebSocket connections**: Persistent with reconnect
237
-
238
- ## 🧪 Testing Strategy
239
-
240
- ### Test Structure
241
- - **Markdown-based**: Human-readable test cases
242
- - **Domain-specific**: 17 test files covering all tools
243
- - **Integration-focused**: Real Unreal Engine operations
244
-
245
- ### Running Tests
246
- ```bash
247
- # Single tool test
248
- npm run test:manage_asset
249
-
250
- # All tests
251
- npm run test
252
-
253
- # With debug output
254
- LOG_LEVEL=debug npm run test:blueprint
255
- ```
256
-
257
- ### Test Case Format
258
- ```javascript
259
- {
260
- scenario: "Descriptive test name",
261
- toolName: "manage_asset",
262
- arguments: { action: "create_material", name: "TestMaterial" },
263
- expected: "success|not_found|error_message"
264
- }
265
- ```
266
-
267
- ## 🚨 Common Pitfalls
268
-
269
- ### 1. Plugin Not Enabled
270
- **Symptom**: `Automation bridge not connected`
271
- **Fix**: Enable "MCP Automation Bridge" in UE Editor Plugins
272
-
273
- ### 2. Port Conflicts
274
- **Symptom**: Connection refused on :8091
275
- **Fix**: Check `netstat -ano | findstr :8091` and kill conflicting process
276
-
277
- ### 3. WASM Missing
278
- **Symptom**: Fallback to TypeScript warnings
279
- **Fix**: Run `npm run build:wasm` or set `WASM_ENABLED=false`
280
-
281
- ### 4. Path Normalization
282
- **Symptom**: Asset not found errors
283
- **Fix**: Use `/Game` prefix, not `/Content`
284
-
285
- ### 5. Command Validation
286
- **Symptom**: "Dangerous command blocked"
287
- **Fix**: Use safe alternatives or whitelist in `CommandValidator`
288
-
289
- ## 📚 Essential References
290
-
291
- ### Key Files
292
- - `src/constants.ts`: Configuration defaults and timeouts
293
- - `src/utils/response-validator.ts`: Response schema validation
294
- - `src/utils/command-validator.ts`: Safety rules and blocked commands
295
- - `src/utils/unreal-command-queue.ts`: Throttling implementation
296
-
297
- ### Documentation
298
- - `docs/handler-mapping.md`: TypeScript → C++ handler mappings
299
- - `docs/GraphQL-API.md`: Query interface specification
300
- - `README.md`: Complete setup and usage guide
301
-
302
- ### Debug Resources
303
- - `ue://health`: Real-time metrics dashboard
304
- - `ue://automation-bridge`: Connection status and pending requests
305
- - UE Output Log: Filter for `bridge_ack` and `automation_request`
306
-
307
- ## 🎓 Learning Resources
308
-
309
- ### Understanding the Codebase
310
- 1. Start with `src/index.ts` → `createServer()`
311
- 2. Follow WebSocket flow in `src/automation/bridge.ts`
312
- 3. Examine a simple handler: `McpAutomationBridge_AssetQueryHandlers.cpp`
313
- 4. Study tool implementation: `src/tools/assets.ts`
314
- 5. Review test patterns: `tests/test-manage-asset.mjs`
315
-
316
- ### Recommended Reading Order
317
- ```
318
- README.md → docs/handler-mapping.md → src/index.ts
319
- → src/automation/bridge.ts → src/tools/consolidated-*.ts
320
- → Plugins/.../McpAutomationBridgeSubsystem.cpp
321
- ```
322
-
323
- ## 🤝 Contribution Guidelines
324
-
325
- ### Pull Request Requirements
326
- - **Scope**: Single tool/action per PR
327
- - **Tests**: Add Markdown test cases
328
- - **Documentation**: Update `handler-mapping.md` if adding handlers
329
- - **Validation**: Ensure Zod schemas are comprehensive
330
-
331
- ### Code Style
332
- - **TypeScript**: Follow ESLint rules (`npm run lint`)
333
- - **C++**: Use Unreal coding standards
334
- - **Comments**: Document non-obvious logic and safety considerations
335
- - **Error handling**: Structured errors with context
336
-
337
- ### Review Checklist
338
- - [ ] Tool works with and without WASM
339
- - [ ] Response validation schema is complete
340
- - [ ] Command throttling is appropriate
341
- - [ ] Error messages are actionable
342
- - [ ] Test cases cover success and failure paths
343
-
344
- ## 📈 Performance Tuning
345
-
346
- ### Configuration Variables
347
- ```env
348
- # Connection
349
- MCP_AUTOMATION_PORT=8091
350
- MCP_AUTOMATION_REQUEST_TIMEOUT_MS=120000
351
-
352
- # Performance
353
- WASM_ENABLED=true
354
- ASSET_LIST_TTL_MS=10000
355
-
356
- # Logging
357
- LOG_LEVEL=info
358
- ```
359
-
360
- ### Optimization Tips
361
- - **Batch operations**: Use `delete_assets` instead of multiple `delete`
362
- - **Caching**: Leverage 10s asset cache for repeated queries
363
- - **Priority**: Set appropriate priority for time-sensitive operations
364
- - **WASM**: Enable for JSON-heavy and math-intensive operations
365
-
366
- ## 🎯 Quick Reference
367
-
368
- ### Most Used Commands
369
- ```bash
370
- # Development
371
- npm run dev # Start server with auto-reload
372
- npm run build # Build TypeScript + WASM
373
- npm run lint # Check code style
374
-
375
- # Testing
376
- npm run test # All tests
377
- npm run test:blueprint # Specific tool tests
378
-
379
- # Plugin Management
380
- npm run automation:sync # Sync to UE project
381
- npm run automation:verify # Verify installation
382
-
383
- # Debugging
384
- LOG_LEVEL=debug npm run dev
385
- netstat -ano | findstr :8091
386
- ```
387
-
388
- ### Common File Patterns
389
- ```
390
- src/tools/<domain>.ts # Tool implementations
391
- src/tools/consolidated-*.ts # Routing and validation
392
- Plugins/.../*Handlers.cpp # Native C++ handlers
393
- Tests/test-<domain>.mjs # Test cases
394
- ```
395
-
396
- ## 🆘 Troubleshooting
397
-
398
- ### Connection Issues
399
- ```bash
400
- # Check if plugin is listening
401
- netstat -ano | findstr :8091
402
-
403
- # Verify plugin files
404
- npm run automation:verify -- --project "C:/Path/To/Project"
405
-
406
- # Clean and rebuild
407
- rm -r Plugins/McpAutomationBridge/{Binaries,Intermediate}
408
- npm run build
409
- ```
410
-
411
- ### Performance Problems
412
- ```bash
413
- # Check WASM status
414
- curl http://localhost:8090/metrics | grep wasm
415
-
416
- # Monitor command queue
417
- LOG_LEVEL=debug npm run dev
418
-
419
- # Disable WASM for testing
420
- WASM_ENABLED=false npm run dev
421
- ```
422
-
423
- ### Test Failures
424
- ```bash
425
- # Run single test with debug
426
- LOG_LEVEL=debug npm run test:manage_asset
427
-
428
- # Check Unreal Editor logs
429
- # Filter for "automation_request" in Output Log
430
-
431
- # Verify plugin capabilities
432
- ue://automation-bridge
433
- ```
434
-
435
- ## 📋 Checklist for New Contributors
436
-
437
- 1. [ ] Read `README.md` and this guide
438
- 2. [ ] Set up Unreal Engine project with required plugins
439
- 3. [ ] Run `npm run automation:sync`
440
- 4. [ ] Start server with `npm run dev`
441
- 5. [ ] Verify connection in UE Output Log
442
- 6. [ ] Run tests with `npm run test`
443
- 7. [ ] Explore existing tools and handlers
444
- 8. [ ] Start with small, focused changes
445
- 9. [ ] Add comprehensive test cases
446
- 10. [ ] Document new features in `handler-mapping.md`
447
-
448
- ## 🤖 AI Agent Specifics
449
-
450
- ### Understanding the System
451
- - **Dual-process**: Node.js ↔ Unreal Editor plugin communication
452
- - **Protocol**: Custom WebSocket-based automation protocol
453
- - **Safety**: Command validation and throttling are mandatory
454
- - **Performance**: WASM optimization is automatic but optional
455
-
456
- ### Common AI Tasks
457
- 1. **Add new automation**: Follow the two-step implementation pattern
458
- 2. **Fix connection issues**: Check plugin status and ports
459
- 3. **Optimize performance**: Leverage WASM and caching
460
- 4. **Extend functionality**: Add new actions to existing tools
461
- 5. **Debug problems**: Use metrics endpoints and detailed logging
462
-
463
- ### When to Ask for Help
464
- - Plugin installation issues
465
- - C++ handler implementation questions
466
- - WebSocket protocol details
467
- - Performance optimization strategies
468
- - Test case design for complex scenarios
469
-
470
- ## 📝 Feedback Request
471
-
472
- Please provide feedback on:
473
- 1. **Clarity**: Are the workflows and patterns clear?
474
- 2. **Completeness**: Are any critical aspects missing?
475
- 3. **Accuracy**: Are the examples and commands correct?
476
- 4. **Organization**: Is the information easy to find?
477
-
478
- Suggest improvements to make this guide more helpful for AI agents working on this codebase!