unreal-engine-mcp-server 0.4.6 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) 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.yml +148 -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 +23 -0
  19. package/.github/workflows/labeler.yml +16 -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 +12 -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 +269 -22
  29. package/CONTRIBUTING.md +140 -0
  30. package/README.md +166 -72
  31. package/claude_desktop_config_example.json +7 -6
  32. package/dist/automation/bridge.d.ts +50 -0
  33. package/dist/automation/bridge.js +452 -0
  34. package/dist/automation/connection-manager.d.ts +23 -0
  35. package/dist/automation/connection-manager.js +107 -0
  36. package/dist/automation/handshake.d.ts +11 -0
  37. package/dist/automation/handshake.js +89 -0
  38. package/dist/automation/index.d.ts +3 -0
  39. package/dist/automation/index.js +3 -0
  40. package/dist/automation/message-handler.d.ts +12 -0
  41. package/dist/automation/message-handler.js +149 -0
  42. package/dist/automation/request-tracker.d.ts +25 -0
  43. package/dist/automation/request-tracker.js +98 -0
  44. package/dist/automation/types.d.ts +130 -0
  45. package/dist/automation/types.js +2 -0
  46. package/dist/cli.js +32 -5
  47. package/dist/config.d.ts +27 -0
  48. package/dist/config.js +60 -0
  49. package/dist/constants.d.ts +12 -0
  50. package/dist/constants.js +12 -0
  51. package/dist/graphql/resolvers.d.ts +268 -0
  52. package/dist/graphql/resolvers.js +743 -0
  53. package/dist/graphql/schema.d.ts +5 -0
  54. package/dist/graphql/schema.js +437 -0
  55. package/dist/graphql/server.d.ts +26 -0
  56. package/dist/graphql/server.js +115 -0
  57. package/dist/graphql/types.d.ts +7 -0
  58. package/dist/graphql/types.js +2 -0
  59. package/dist/handlers/resource-handlers.d.ts +20 -0
  60. package/dist/handlers/resource-handlers.js +180 -0
  61. package/dist/index.d.ts +31 -18
  62. package/dist/index.js +119 -604
  63. package/dist/prompts/index.js +4 -4
  64. package/dist/resources/actors.d.ts +17 -12
  65. package/dist/resources/actors.js +56 -76
  66. package/dist/resources/assets.d.ts +6 -14
  67. package/dist/resources/assets.js +115 -147
  68. package/dist/resources/levels.d.ts +13 -13
  69. package/dist/resources/levels.js +25 -34
  70. package/dist/server/resource-registry.d.ts +20 -0
  71. package/dist/server/resource-registry.js +37 -0
  72. package/dist/server/tool-registry.d.ts +23 -0
  73. package/dist/server/tool-registry.js +322 -0
  74. package/dist/server-setup.d.ts +21 -0
  75. package/dist/server-setup.js +111 -0
  76. package/dist/services/health-monitor.d.ts +34 -0
  77. package/dist/services/health-monitor.js +105 -0
  78. package/dist/services/metrics-server.d.ts +11 -0
  79. package/dist/services/metrics-server.js +105 -0
  80. package/dist/tools/actors.d.ts +147 -9
  81. package/dist/tools/actors.js +350 -311
  82. package/dist/tools/animation.d.ts +135 -4
  83. package/dist/tools/animation.js +510 -411
  84. package/dist/tools/assets.d.ts +117 -19
  85. package/dist/tools/assets.js +259 -284
  86. package/dist/tools/audio.d.ts +102 -42
  87. package/dist/tools/audio.js +272 -685
  88. package/dist/tools/base-tool.d.ts +17 -0
  89. package/dist/tools/base-tool.js +46 -0
  90. package/dist/tools/behavior-tree.d.ts +94 -0
  91. package/dist/tools/behavior-tree.js +39 -0
  92. package/dist/tools/blueprint/helpers.d.ts +29 -0
  93. package/dist/tools/blueprint/helpers.js +182 -0
  94. package/dist/tools/blueprint.d.ts +228 -118
  95. package/dist/tools/blueprint.js +685 -832
  96. package/dist/tools/consolidated-tool-definitions.d.ts +5475 -1627
  97. package/dist/tools/consolidated-tool-definitions.js +829 -482
  98. package/dist/tools/consolidated-tool-handlers.d.ts +2 -1
  99. package/dist/tools/consolidated-tool-handlers.js +211 -1009
  100. package/dist/tools/debug.d.ts +143 -85
  101. package/dist/tools/debug.js +234 -180
  102. package/dist/tools/dynamic-handler-registry.d.ts +11 -0
  103. package/dist/tools/dynamic-handler-registry.js +101 -0
  104. package/dist/tools/editor.d.ts +139 -18
  105. package/dist/tools/editor.js +239 -244
  106. package/dist/tools/engine.d.ts +10 -4
  107. package/dist/tools/engine.js +13 -5
  108. package/dist/tools/environment.d.ts +36 -0
  109. package/dist/tools/environment.js +267 -0
  110. package/dist/tools/foliage.d.ts +105 -14
  111. package/dist/tools/foliage.js +219 -331
  112. package/dist/tools/handlers/actor-handlers.d.ts +3 -0
  113. package/dist/tools/handlers/actor-handlers.js +232 -0
  114. package/dist/tools/handlers/animation-handlers.d.ts +3 -0
  115. package/dist/tools/handlers/animation-handlers.js +185 -0
  116. package/dist/tools/handlers/argument-helper.d.ts +16 -0
  117. package/dist/tools/handlers/argument-helper.js +80 -0
  118. package/dist/tools/handlers/asset-handlers.d.ts +3 -0
  119. package/dist/tools/handlers/asset-handlers.js +496 -0
  120. package/dist/tools/handlers/audio-handlers.d.ts +3 -0
  121. package/dist/tools/handlers/audio-handlers.js +166 -0
  122. package/dist/tools/handlers/blueprint-handlers.d.ts +4 -0
  123. package/dist/tools/handlers/blueprint-handlers.js +358 -0
  124. package/dist/tools/handlers/common-handlers.d.ts +14 -0
  125. package/dist/tools/handlers/common-handlers.js +56 -0
  126. package/dist/tools/handlers/editor-handlers.d.ts +3 -0
  127. package/dist/tools/handlers/editor-handlers.js +119 -0
  128. package/dist/tools/handlers/effect-handlers.d.ts +3 -0
  129. package/dist/tools/handlers/effect-handlers.js +171 -0
  130. package/dist/tools/handlers/environment-handlers.d.ts +3 -0
  131. package/dist/tools/handlers/environment-handlers.js +170 -0
  132. package/dist/tools/handlers/graph-handlers.d.ts +3 -0
  133. package/dist/tools/handlers/graph-handlers.js +90 -0
  134. package/dist/tools/handlers/input-handlers.d.ts +3 -0
  135. package/dist/tools/handlers/input-handlers.js +21 -0
  136. package/dist/tools/handlers/inspect-handlers.d.ts +3 -0
  137. package/dist/tools/handlers/inspect-handlers.js +383 -0
  138. package/dist/tools/handlers/level-handlers.d.ts +3 -0
  139. package/dist/tools/handlers/level-handlers.js +237 -0
  140. package/dist/tools/handlers/lighting-handlers.d.ts +3 -0
  141. package/dist/tools/handlers/lighting-handlers.js +144 -0
  142. package/dist/tools/handlers/performance-handlers.d.ts +3 -0
  143. package/dist/tools/handlers/performance-handlers.js +130 -0
  144. package/dist/tools/handlers/pipeline-handlers.d.ts +3 -0
  145. package/dist/tools/handlers/pipeline-handlers.js +110 -0
  146. package/dist/tools/handlers/sequence-handlers.d.ts +3 -0
  147. package/dist/tools/handlers/sequence-handlers.js +376 -0
  148. package/dist/tools/handlers/system-handlers.d.ts +4 -0
  149. package/dist/tools/handlers/system-handlers.js +506 -0
  150. package/dist/tools/input.d.ts +19 -0
  151. package/dist/tools/input.js +89 -0
  152. package/dist/tools/introspection.d.ts +103 -40
  153. package/dist/tools/introspection.js +425 -568
  154. package/dist/tools/landscape.d.ts +97 -36
  155. package/dist/tools/landscape.js +280 -409
  156. package/dist/tools/level.d.ts +130 -10
  157. package/dist/tools/level.js +639 -675
  158. package/dist/tools/lighting.d.ts +77 -38
  159. package/dist/tools/lighting.js +441 -943
  160. package/dist/tools/logs.d.ts +45 -0
  161. package/dist/tools/logs.js +210 -0
  162. package/dist/tools/materials.d.ts +91 -24
  163. package/dist/tools/materials.js +190 -118
  164. package/dist/tools/niagara.d.ts +149 -39
  165. package/dist/tools/niagara.js +232 -182
  166. package/dist/tools/performance.d.ts +27 -12
  167. package/dist/tools/performance.js +204 -122
  168. package/dist/tools/physics.d.ts +32 -77
  169. package/dist/tools/physics.js +171 -582
  170. package/dist/tools/property-dictionary.d.ts +13 -0
  171. package/dist/tools/property-dictionary.js +82 -0
  172. package/dist/tools/sequence.d.ts +73 -48
  173. package/dist/tools/sequence.js +196 -748
  174. package/dist/tools/tool-definition-utils.d.ts +59 -0
  175. package/dist/tools/tool-definition-utils.js +35 -0
  176. package/dist/tools/ui.d.ts +66 -34
  177. package/dist/tools/ui.js +134 -214
  178. package/dist/types/env.d.ts +0 -3
  179. package/dist/types/env.js +0 -7
  180. package/dist/types/tool-interfaces.d.ts +898 -0
  181. package/dist/types/tool-interfaces.js +2 -0
  182. package/dist/types/tool-types.d.ts +195 -11
  183. package/dist/types/tool-types.js +0 -4
  184. package/dist/unreal-bridge.d.ts +24 -131
  185. package/dist/unreal-bridge.js +364 -1506
  186. package/dist/utils/command-validator.d.ts +9 -0
  187. package/dist/utils/command-validator.js +67 -0
  188. package/dist/utils/elicitation.d.ts +1 -1
  189. package/dist/utils/elicitation.js +12 -15
  190. package/dist/utils/error-handler.d.ts +2 -51
  191. package/dist/utils/error-handler.js +11 -87
  192. package/dist/utils/ini-reader.d.ts +3 -0
  193. package/dist/utils/ini-reader.js +69 -0
  194. package/dist/utils/logger.js +9 -6
  195. package/dist/utils/normalize.d.ts +3 -0
  196. package/dist/utils/normalize.js +56 -0
  197. package/dist/utils/response-factory.d.ts +7 -0
  198. package/dist/utils/response-factory.js +33 -0
  199. package/dist/utils/response-validator.d.ts +3 -24
  200. package/dist/utils/response-validator.js +130 -81
  201. package/dist/utils/result-helpers.d.ts +4 -5
  202. package/dist/utils/result-helpers.js +15 -16
  203. package/dist/utils/safe-json.js +5 -11
  204. package/dist/utils/unreal-command-queue.d.ts +24 -0
  205. package/dist/utils/unreal-command-queue.js +120 -0
  206. package/dist/utils/validation.d.ts +0 -40
  207. package/dist/utils/validation.js +1 -78
  208. package/dist/wasm/index.d.ts +70 -0
  209. package/dist/wasm/index.js +535 -0
  210. package/docs/GraphQL-API.md +888 -0
  211. package/docs/Migration-Guide-v0.5.0.md +692 -0
  212. package/docs/Roadmap.md +53 -0
  213. package/docs/WebAssembly-Integration.md +628 -0
  214. package/docs/editor-plugin-extension.md +370 -0
  215. package/docs/handler-mapping.md +242 -0
  216. package/docs/native-automation-progress.md +128 -0
  217. package/docs/testing-guide.md +423 -0
  218. package/mcp-config-example.json +6 -6
  219. package/package.json +60 -27
  220. package/plugins/McpAutomationBridge/Config/FilterPlugin.ini +8 -0
  221. package/plugins/McpAutomationBridge/McpAutomationBridge.uplugin +64 -0
  222. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/McpAutomationBridge.Build.cs +189 -0
  223. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.cpp +22 -0
  224. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.h +30 -0
  225. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeHelpers.h +1983 -0
  226. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeModule.cpp +72 -0
  227. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSettings.cpp +46 -0
  228. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSubsystem.cpp +581 -0
  229. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AnimationHandlers.cpp +2394 -0
  230. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetQueryHandlers.cpp +300 -0
  231. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetWorkflowHandlers.cpp +2807 -0
  232. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AudioHandlers.cpp +1087 -0
  233. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BehaviorTreeHandlers.cpp +488 -0
  234. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.cpp +643 -0
  235. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.h +31 -0
  236. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintGraphHandlers.cpp +1184 -0
  237. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers.cpp +5652 -0
  238. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers_List.cpp +152 -0
  239. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ControlHandlers.cpp +2614 -0
  240. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_DebugHandlers.cpp +42 -0
  241. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EditorFunctionHandlers.cpp +1237 -0
  242. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EffectHandlers.cpp +1701 -0
  243. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EnvironmentHandlers.cpp +2145 -0
  244. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_FoliageHandlers.cpp +954 -0
  245. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InputHandlers.cpp +209 -0
  246. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InsightsHandlers.cpp +41 -0
  247. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LandscapeHandlers.cpp +1164 -0
  248. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LevelHandlers.cpp +762 -0
  249. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LightingHandlers.cpp +634 -0
  250. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LogHandlers.cpp +136 -0
  251. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_MaterialGraphHandlers.cpp +494 -0
  252. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraGraphHandlers.cpp +278 -0
  253. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraHandlers.cpp +625 -0
  254. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PerformanceHandlers.cpp +401 -0
  255. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PipelineHandlers.cpp +67 -0
  256. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ProcessRequest.cpp +735 -0
  257. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PropertyHandlers.cpp +2634 -0
  258. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_RenderHandlers.cpp +189 -0
  259. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.cpp +917 -0
  260. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.h +39 -0
  261. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequenceHandlers.cpp +2670 -0
  262. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequencerHandlers.cpp +519 -0
  263. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_TestHandlers.cpp +38 -0
  264. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_UiHandlers.cpp +668 -0
  265. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_WorldPartitionHandlers.cpp +346 -0
  266. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.cpp +1330 -0
  267. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.h +149 -0
  268. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpConnectionManager.cpp +783 -0
  269. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSettings.h +115 -0
  270. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSubsystem.h +796 -0
  271. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpConnectionManager.h +117 -0
  272. package/scripts/check-unreal-connection.mjs +19 -0
  273. package/scripts/clean-tmp.js +23 -0
  274. package/scripts/patch-wasm.js +26 -0
  275. package/scripts/run-all-tests.mjs +131 -0
  276. package/scripts/smoke-test.ts +94 -0
  277. package/scripts/sync-mcp-plugin.js +143 -0
  278. package/scripts/test-no-plugin-alternates.mjs +113 -0
  279. package/scripts/validate-server.js +46 -0
  280. package/scripts/verify-automation-bridge.js +200 -0
  281. package/server.json +57 -21
  282. package/src/automation/bridge.ts +558 -0
  283. package/src/automation/connection-manager.ts +130 -0
  284. package/src/automation/handshake.ts +99 -0
  285. package/src/automation/index.ts +2 -0
  286. package/src/automation/message-handler.ts +167 -0
  287. package/src/automation/request-tracker.ts +123 -0
  288. package/src/automation/types.ts +107 -0
  289. package/src/cli.ts +33 -6
  290. package/src/config.ts +73 -0
  291. package/src/constants.ts +12 -0
  292. package/src/graphql/resolvers.ts +1010 -0
  293. package/src/graphql/schema.ts +452 -0
  294. package/src/graphql/server.ts +154 -0
  295. package/src/graphql/types.ts +7 -0
  296. package/src/handlers/resource-handlers.ts +186 -0
  297. package/src/index.ts +152 -649
  298. package/src/prompts/index.ts +4 -4
  299. package/src/resources/actors.ts +58 -76
  300. package/src/resources/assets.ts +147 -134
  301. package/src/resources/levels.ts +28 -33
  302. package/src/server/resource-registry.ts +47 -0
  303. package/src/server/tool-registry.ts +354 -0
  304. package/src/server-setup.ts +148 -0
  305. package/src/services/health-monitor.ts +132 -0
  306. package/src/services/metrics-server.ts +142 -0
  307. package/src/tools/actors.ts +417 -322
  308. package/src/tools/animation.ts +671 -461
  309. package/src/tools/assets.ts +353 -289
  310. package/src/tools/audio.ts +323 -766
  311. package/src/tools/base-tool.ts +52 -0
  312. package/src/tools/behavior-tree.ts +45 -0
  313. package/src/tools/blueprint/helpers.ts +189 -0
  314. package/src/tools/blueprint.ts +787 -965
  315. package/src/tools/consolidated-tool-definitions.ts +993 -500
  316. package/src/tools/consolidated-tool-handlers.ts +272 -1122
  317. package/src/tools/debug.ts +292 -187
  318. package/src/tools/dynamic-handler-registry.ts +151 -0
  319. package/src/tools/editor.ts +309 -246
  320. package/src/tools/engine.ts +14 -3
  321. package/src/tools/environment.ts +287 -0
  322. package/src/tools/foliage.ts +314 -379
  323. package/src/tools/handlers/actor-handlers.ts +271 -0
  324. package/src/tools/handlers/animation-handlers.ts +237 -0
  325. package/src/tools/handlers/argument-helper.ts +142 -0
  326. package/src/tools/handlers/asset-handlers.ts +532 -0
  327. package/src/tools/handlers/audio-handlers.ts +194 -0
  328. package/src/tools/handlers/blueprint-handlers.ts +380 -0
  329. package/src/tools/handlers/common-handlers.ts +87 -0
  330. package/src/tools/handlers/editor-handlers.ts +123 -0
  331. package/src/tools/handlers/effect-handlers.ts +220 -0
  332. package/src/tools/handlers/environment-handlers.ts +183 -0
  333. package/src/tools/handlers/graph-handlers.ts +116 -0
  334. package/src/tools/handlers/input-handlers.ts +28 -0
  335. package/src/tools/handlers/inspect-handlers.ts +450 -0
  336. package/src/tools/handlers/level-handlers.ts +252 -0
  337. package/src/tools/handlers/lighting-handlers.ts +147 -0
  338. package/src/tools/handlers/performance-handlers.ts +132 -0
  339. package/src/tools/handlers/pipeline-handlers.ts +127 -0
  340. package/src/tools/handlers/sequence-handlers.ts +415 -0
  341. package/src/tools/handlers/system-handlers.ts +564 -0
  342. package/src/tools/input.ts +101 -0
  343. package/src/tools/introspection.ts +493 -584
  344. package/src/tools/landscape.ts +394 -489
  345. package/src/tools/level.ts +752 -694
  346. package/src/tools/lighting.ts +583 -984
  347. package/src/tools/logs.ts +219 -0
  348. package/src/tools/materials.ts +231 -121
  349. package/src/tools/niagara.ts +293 -168
  350. package/src/tools/performance.ts +320 -168
  351. package/src/tools/physics.ts +268 -613
  352. package/src/tools/property-dictionary.ts +98 -0
  353. package/src/tools/sequence.ts +255 -815
  354. package/src/tools/tool-definition-utils.ts +35 -0
  355. package/src/tools/ui.ts +207 -283
  356. package/src/types/env.ts +0 -10
  357. package/src/types/tool-interfaces.ts +250 -0
  358. package/src/types/tool-types.ts +250 -13
  359. package/src/unreal-bridge.ts +460 -1550
  360. package/src/utils/command-validator.ts +75 -0
  361. package/src/utils/elicitation.ts +10 -7
  362. package/src/utils/error-handler.ts +14 -90
  363. package/src/utils/ini-reader.ts +86 -0
  364. package/src/utils/logger.ts +8 -3
  365. package/src/utils/normalize.ts +60 -0
  366. package/src/utils/response-factory.ts +39 -0
  367. package/src/utils/response-validator.ts +176 -56
  368. package/src/utils/result-helpers.ts +21 -19
  369. package/src/utils/safe-json.ts +14 -11
  370. package/src/utils/unreal-command-queue.ts +152 -0
  371. package/src/utils/validation.ts +4 -1
  372. package/src/wasm/index.ts +838 -0
  373. package/test-server.mjs +100 -0
  374. package/tests/run-unreal-tool-tests.mjs +242 -14
  375. package/tests/test-animation.mjs +44 -0
  376. package/tests/test-asset-advanced.mjs +82 -0
  377. package/tests/test-asset-errors.mjs +35 -0
  378. package/tests/test-audio.mjs +219 -0
  379. package/tests/test-automation-timeouts.mjs +98 -0
  380. package/tests/test-behavior-tree.mjs +261 -0
  381. package/tests/test-blueprint-events.mjs +35 -0
  382. package/tests/test-blueprint-graph.mjs +79 -0
  383. package/tests/test-blueprint.mjs +577 -0
  384. package/tests/test-client-mode.mjs +86 -0
  385. package/tests/test-console-command.mjs +56 -0
  386. package/tests/test-control-actor.mjs +425 -0
  387. package/tests/test-control-editor.mjs +80 -0
  388. package/tests/test-extra-tools.mjs +38 -0
  389. package/tests/test-graphql.mjs +322 -0
  390. package/tests/test-inspect.mjs +72 -0
  391. package/tests/test-landscape.mjs +60 -0
  392. package/tests/test-manage-asset.mjs +438 -0
  393. package/tests/test-manage-level.mjs +70 -0
  394. package/tests/test-materials.mjs +356 -0
  395. package/tests/test-niagara.mjs +185 -0
  396. package/tests/test-no-inline-python.mjs +122 -0
  397. package/tests/test-plugin-handshake.mjs +82 -0
  398. package/tests/test-render.mjs +33 -0
  399. package/tests/test-runner.mjs +933 -0
  400. package/tests/test-search-assets.mjs +66 -0
  401. package/tests/test-sequence.mjs +68 -0
  402. package/tests/test-system.mjs +57 -0
  403. package/tests/test-wasm.mjs +193 -0
  404. package/tests/test-world-partition.mjs +215 -0
  405. package/tsconfig.json +3 -3
  406. package/wasm/Cargo.lock +363 -0
  407. package/wasm/Cargo.toml +42 -0
  408. package/wasm/LICENSE +21 -0
  409. package/wasm/README.md +253 -0
  410. package/wasm/src/dependency_resolver.rs +377 -0
  411. package/wasm/src/lib.rs +153 -0
  412. package/wasm/src/property_parser.rs +271 -0
  413. package/wasm/src/transform_math.rs +396 -0
  414. package/wasm/tests/integration.rs +109 -0
  415. package/.github/workflows/smithery-build.yml +0 -29
  416. package/dist/tools/build_environment_advanced.d.ts +0 -65
  417. package/dist/tools/build_environment_advanced.js +0 -633
  418. package/dist/tools/rc.d.ts +0 -110
  419. package/dist/tools/rc.js +0 -437
  420. package/dist/tools/visual.d.ts +0 -40
  421. package/dist/tools/visual.js +0 -282
  422. package/dist/utils/http.d.ts +0 -6
  423. package/dist/utils/http.js +0 -151
  424. package/dist/utils/python-output.d.ts +0 -18
  425. package/dist/utils/python-output.js +0 -290
  426. package/dist/utils/python.d.ts +0 -2
  427. package/dist/utils/python.js +0 -4
  428. package/dist/utils/stdio-redirect.d.ts +0 -2
  429. package/dist/utils/stdio-redirect.js +0 -20
  430. package/docs/unreal-tool-test-cases.md +0 -572
  431. package/smithery.yaml +0 -29
  432. package/src/tools/build_environment_advanced.ts +0 -732
  433. package/src/tools/rc.ts +0 -515
  434. package/src/tools/visual.ts +0 -281
  435. package/src/utils/http.ts +0 -187
  436. package/src/utils/python-output.ts +0 -351
  437. package/src/utils/python.ts +0 -3
  438. package/src/utils/stdio-redirect.ts +0 -18
@@ -0,0 +1,370 @@
1
+ # MCP Automation Bridge Plugin
2
+
3
+ The MCP Automation Bridge is a production-ready Unreal Editor plugin that enables direct communication between the MCP server and Unreal Engine, providing **100% native C++ implementations** for all automation tasks. This document describes the current implementation and future roadmap.
4
+
5
+ ## Goals
6
+ - **Direct SCS Access** – expose Blueprint SimpleConstructionScript mutations through a curated C++ API that the MCP server can call.
7
+ - **Typed Property Marshaling** – relay incoming JSON payloads through Unreal's `FProperty` system so class/enum/soft object references resolve without manual string coercion.
8
+ - **Asset Lifecycle Helpers** – wrap save/move/delete flows with redirector fix-up, source control hooks, and safety prompts suppressed via automation policies.
9
+ - **Modal Dialog Mediation** – surface blocking dialogs to the MCP server with explicit continue/cancel channels instead of stalling automation.
10
+ - **Native-Only Architecture** – all operations implemented in C++ without Python dependencies for maximum reliability and performance.
11
+
12
+ ## Architecture Sketch
13
+ - Editor plugin registers a `UMcpAutomationBridge` subsystem.
14
+ - Subsystem subscribes to a local WebSocket or named pipe opened by the Node MCP server when it needs elevated actions.
15
+ - Each elevated command includes a capability token so the plugin can enforce an allow-list (exposed through project settings) and fail gracefully if disabled.
16
+ - Results are serialized back to the MCP server with structured warnings so the client can still prompt the user when manual intervention is required.
17
+
18
+ ## Plugin Architecture (Current: v0.6.0)
19
+
20
+ ### Core Components
21
+ - **Plugin Location**: `plugins/McpAutomationBridge/` (source) and `Public/McpAutomationBridge/` (distribution)
22
+ - **Module Type**: Editor-only subsystem (`UEditorSubsystem`)
23
+ - **Main Class**: `UMcpAutomationBridgeSubsystem` - manages WebSocket connections, request routing, and automation execution
24
+ - **WebSocket Implementation**: `FMcpBridgeWebSocket` - custom lightweight WebSocket client (no external dependencies)
25
+ - **Settings**: `UMcpAutomationBridgeSettings` - configurable via **Project Settings ▸ Plugins ▸ MCP Automation Bridge**
26
+
27
+ ### Connection Management
28
+ - **WebSocket Server Mode**: Plugin connects TO the MCP server's WebSocket listener (default: `ws://127.0.0.1:8091`)
29
+ - **Handshake Protocol**: `bridge_hello` → capability token validation → `bridge_ack`
30
+ - **Reconnection**: Automatic with exponential backoff (configurable delay, 5s default)
31
+ - **Heartbeat**: Optional heartbeat tracking for connection health monitoring
32
+ - **Capability Token**: Optional security layer for authentication
33
+ - **Multi-Port Support**: Can connect to multiple server ports simultaneously
34
+
35
+ ### Request Processing
36
+ - **Thread-Safe Queue**: Incoming requests queued and processed sequentially on game thread
37
+ - **Telemetry**: Tracks success/failure rates, execution times, and action statistics
38
+ - **Error Handling**: Structured error responses with error codes and retry flags
39
+ - **Timeout Management**: Configurable timeouts for long-running operations
40
+
41
+ ## Server Integration (0.1.0)
42
+ - `src/automation-bridge.ts` spins up a lightweight WebSocket server (default `ws://127.0.0.1:8091`) guarded by an optional capability token.
43
+ - Handshake flow: editor sends `bridge_hello` → server validates capability token → server responds with `bridge_ack` and caches the socket for future elevated commands.
44
+ - Environment flags: `MCP_AUTOMATION_HOST`, `MCP_AUTOMATION_PORT`, `MCP_AUTOMATION_CAPABILITY_TOKEN`, and `MCP_AUTOMATION_CLIENT_MODE` allow operators to relocate or disable the listener without code changes.
45
+ - Health endpoint (`ue://health`) now surfaces bridge connectivity status so MCP clients can confirm when the plugin is online.
46
+
47
+ ## Implemented Actions (Current)
48
+
49
+ ### 1. Asset Operations (`HandleAssetAction`)
50
+ ✅ **Fully Implemented** - Native C++ using UE Asset Tools
51
+ - `import_asset_deferred` - Native `UAssetImportTask` with FBX/texture support
52
+ - `create_material` - `UMaterialFactoryNew` for material creation
53
+ - `create_material_instance` - Material instance creation with parameter overrides
54
+ - `duplicate_asset` - Asset duplication with overwrite control
55
+ - `rename_asset` - Asset renaming with conflict detection
56
+ - `move_asset` - Asset moving with optional redirector fixup
57
+ - `delete_assets` - Bulk asset deletion with dependency handling
58
+ - `list` - Asset Registry directory listing with filtering
59
+ - `create_folder` - Content folder creation
60
+ - `get_dependencies` - Asset dependency graph traversal
61
+ - `create_thumbnail` - Thumbnail generation
62
+ - `set_tags` - Asset metadata tagging
63
+ - `generate_report` - Asset reports
64
+ - `validate` - Asset existence validation
65
+ - `get_source_control_state` - Check checkout/revision status
66
+ - `analyze_graph` - Deep dependency analysis (WASM-accelerated)
67
+
68
+ ### 2. Editor Function Execution (`HandleExecuteEditorFunction`)
69
+ ✅ **Fully Implemented** - Native subsystem operations
70
+ - `execute_console_command` - Direct `GEditor->Exec()` console command execution
71
+ - `GET_ALL_ACTORS` - `UEditorActorSubsystem::GetAllLevelActors()`
72
+ - `SPAWN_ACTOR` - `UEditorActorSubsystem::SpawnActorFromClass()`
73
+ - `DELETE_ACTOR` - `UEditorActorSubsystem::DestroyActor()`
74
+ - `ASSET_EXISTS` - `UEditorAssetLibrary::DoesAssetExist()`
75
+ - `SET_VIEWPORT_CAMERA` - `UUnrealEditorSubsystem::SetLevelViewportCameraInfo()`
76
+ - `CREATE_LEVEL` - Level creation via subsystem
77
+ - `LOAD_LEVEL` - Level loading
78
+ - `SAVE_LEVEL` - Level saving
79
+ - `BUILD_LIGHTING` - `ULevelEditorSubsystem::BuildLightMaps()`
80
+ - `LIST_ACTOR_COMPONENTS` - Enumerate components for any editor actor via `UEditorActorSubsystem`
81
+ - `RESOLVE_OBJECT` - Resolve assets or classes and surface best-effort metadata for inspection tools
82
+ - `SAVE_DIRTY_PACKAGES` / `SAVE_ALL_DIRTY_PACKAGES` - Trigger native dirty-package saves through `UEditorLoadingAndSavingUtils`
83
+ - `SAVE_ASSET` - Persist a specific asset path using throttled `UEditorAssetLibrary` helpers
84
+ - `SET_BLUEPRINT_DEFAULT` - Routes to native blueprint default editing without Python fallbacks
85
+
86
+ ### 3. Property Operations (`HandleSetObjectProperty`, `HandleGetObjectProperty`)
87
+ ✅ **Fully Implemented** - Typed `FProperty` marshaling
88
+ - **set_object_property** - JSON → `FProperty` conversion with type safety
89
+ - **get_object_property** - `FProperty` → JSON serialization
90
+ - **Array Operations**: append, remove, insert, get_element, set_element, clear
91
+ - **Map Operations**: set_value, get_value, remove_key, has_key, get_keys, clear
92
+ - **Set Operations**: add, remove, contains, clear
93
+ - **Supported Types**: primitives, enums, objects, soft object paths, structs (Vector/Rotator), arrays, maps, sets
94
+
95
+ ### 4. Blueprint Operations (`HandleBlueprintAction`)
96
+ ⚠️ **Partially Implemented** - SCS modification in progress
97
+ - Blueprint asset creation ✅
98
+ - SimpleConstructionScript (SCS) node manipulation ⚠️
99
+ - Component addition to blueprints ⚠️
100
+ - Blueprint compilation and saving ✅
101
+ - CDO (Class Default Object) property modification ✅
102
+ - Blueprint default overrides via `SET_BLUEPRINT_DEFAULT` requests ✅
103
+
104
+ ### 5. Sequence/Sequencer Operations
105
+ ✅ **Fully Implemented** - Level Sequence Editor integration
106
+ - **HandleSequenceAction** - Sequence creation and management
107
+ - **HandleAddSequencerKeyframe** - Keyframe operations
108
+ - **HandleManageSequencerTrack** - Track management
109
+ - **HandleAddCameraTrack** - Camera track addition
110
+ - **HandleAddAnimationTrack** - Animation track addition
111
+ - **HandleAddTransformTrack** - Transform track addition
112
+
113
+ ### 6. Effect Operations (`HandleEffectAction`)
114
+ ✅ **Fully Implemented** - Niagara and debug visualization
115
+ - Niagara system creation (`UNiagaraSystemFactoryNew`)
116
+ - Niagara emitter creation
117
+ - Spawn Niagara actors in level
118
+ - Modify Niagara user parameters
119
+ - Debug shape drawing (lines, boxes, spheres, arrows)
120
+ - Dynamic light spawning
121
+ - Effect cleanup operations
122
+
123
+ ### 7. Animation & Physics (`HandleAnimationPhysicsAction`)
124
+ ✅ **Fully Implemented** - Animation blueprint and physics setup
125
+ - **HandleCreateAnimBlueprint** - Animation blueprint creation
126
+ - **HandlePlayAnimMontage** - Montage playback control
127
+ - **HandleSetupRagdoll** - Ragdoll physics configuration
128
+ - Physics asset manipulation
129
+ - Skeletal mesh animation control
130
+
131
+ ### 8. Environment Building (`HandleBuildEnvironmentAction`)
132
+ ✅ **Fully Implemented** - Landscape and foliage tools
133
+ - **HandleCreateLandscape** - Landscape actor creation
134
+ - **HandleEditLandscape** - Landscape editing dispatcher
135
+ - **HandleModifyHeightmap** - Heightmap sculpting
136
+ - **HandlePaintLandscapeLayer** - Layer painting
137
+ - **HandlePaintFoliage** - Foliage painting with density control
138
+ - **HandleRemoveFoliage** - Foliage removal
139
+ - **HandleGetFoliageInstances** - Foliage instance queries
140
+
141
+ ### 9. Material Graph Operations (`HandleCreateMaterialNodes`)
142
+ ✅ **Fully Implemented** - Material editor graph manipulation
143
+ - **HandleAddMaterialTextureSample** - Add texture sample nodes
144
+ - **HandleAddMaterialExpression** - Add material expression nodes
145
+ - Material graph node connections
146
+ - Material parameter setup
147
+
148
+ ### 10. Asset Workflow (`HandleSourceControl*`, `HandleFixupRedirectors`, etc.)
149
+ ✅ **Fully Implemented** - Production asset pipeline support
150
+ - **HandleSourceControlCheckout** - Perforce/SVN checkout
151
+ - **HandleSourceControlSubmit** - Perforce/SVN submit
152
+ - **HandleFixupRedirectors** - Redirector cleanup after moves
153
+ - **HandleBulkRenameAssets** - Batch asset renaming
154
+ - **HandleBulkDeleteAssets** - Batch asset deletion
155
+ - **HandleGenerateThumbnail** - Thumbnail generation
156
+
157
+ ### 11. Actor & Editor Control
158
+ ✅ **Fully Implemented** - Viewport and actor manipulation
159
+ - PIE (Play In Editor) control - `ULevelEditorSubsystem::EditorPlaySimulate()`
160
+ - Camera positioning and rotation - `UUnrealEditorSubsystem::SetLevelViewportCameraInfo()`
161
+ - View mode changes - Native `GEditor->Exec()` with safety validation
162
+ - Actor spawning with class resolution
163
+ - Actor deletion with label matching
164
+ - Actor property modification
165
+
166
+ ### 12. Python Execution (`HandleExecuteEditorPython`)
167
+ ❌ **REMOVED** - Python execution is no longer supported
168
+ - All automation is now implemented natively in C++
169
+ - `execute_editor_python` action returns error: "Python execution is no longer supported"
170
+ - Improves security, reliability, and performance
171
+ - **Migration**: Use native automation actions instead
172
+
173
+ ## Tool Coverage Matrix (Updated)
174
+
175
+ | Consolidated Tool | Actions | Bridge Status | Notes |
176
+ |-------------------|---------|---------------|-------|
177
+ | **manage_asset** | `list` | ✅ Native | Asset Registry native listing |
178
+ | | `import` | ✅ Native | `UAssetImportTask` FBX/texture import |
179
+ | | `create_material` | ✅ Native | `UMaterialFactoryNew` native creation |
180
+ | | `create_material_instance` | ✅ Native | Native material instance factory |
181
+ | | `duplicate` / `rename` / `move` | ✅ Native | `UEditorAssetLibrary` + `AssetTools` |
182
+ | | `delete` | ✅ Native | Bulk deletion with dependency handling |
183
+ | **control_actor** | `spawn` | ✅ Native | `UEditorActorSubsystem::SpawnActorFromClass()` |
184
+ | | `delete` | ✅ Native | `UEditorActorSubsystem::DestroyActor()` |
185
+ | | `apply_force` | 🔧 Planned | Physics forces native implementation pending |
186
+ | **control_editor** | `play` / `stop` / `pause` | ✅ Native | `ULevelEditorSubsystem` PIE control |
187
+ | | `set_camera` | ✅ Native | `UUnrealEditorSubsystem::SetLevelViewportCameraInfo()` |
188
+ | | `set_view_mode` | ✅ Native | Safe viewmode validation + `GEditor->Exec()` |
189
+ | | `console_command` | ✅ Native | `GEditor->Exec()` direct execution |
190
+ | **manage_level** | `load` / `save` / `stream` | ✅ Native | Editor function handlers for level ops |
191
+ | | `create_level` | ✅ Native | Native `CREATE_LEVEL` function |
192
+ | | `create_light` | ✅ Native | `SPAWN_ACTOR` with light class |
193
+ | | `build_lighting` | ✅ Native | `ULevelEditorSubsystem::BuildLightMaps()` |
194
+ | **animation_physics** | `create_animation_bp` | ✅ Native | Animation blueprint factory |
195
+ | | `play_montage` | ✅ Native | Native montage playback control |
196
+ | | `setup_ragdoll` | ✅ Native | Ragdoll physics configuration |
197
+ | | `configure_vehicle` | ⚠️ Partial | Complex vehicle setup in progress |
198
+ | **create_effect** | `niagara` | ✅ Native | `UNiagaraSystemFactoryNew` native creation |
199
+ | | `spawn_niagara` | ✅ Native | Native Niagara actor spawning |
200
+ | | `debug_shape` | ✅ Native | Debug line/box/sphere drawing |
201
+ | | `dynamic_light` | ✅ Native | Dynamic light spawning |
202
+ | **manage_blueprint** | `create` | ✅ Native | Blueprint asset creation |
203
+ | | `add_component` | ✅ Native | SCS manipulation via native APIs; UE 5.7+ SubobjectDataInterface support added |
204
+ | | `edit_defaults` | ✅ Native | CDO property modification |
205
+ | **build_environment** | `create_landscape` | ✅ Native | Landscape actor creation |
206
+ | | `sculpt` / `paint` | ✅ Native | Heightmap/layer editing |
207
+ | | `add_foliage` | ✅ Native | Foliage painting with density control |
208
+ | **system_control** | `profile` / `show_fps` | ✅ Native | Console command execution |
209
+ | | `set_quality` | ✅ Native | Quality settings via console |
210
+ | | `screenshot` | ✅ Native | Screenshot capture commands |
211
+ | **console_command** | (all) | ✅ Native | Direct `GEditor->Exec()` with safety filtering |
212
+ | **execute_python** | (all) | ❌ Removed | Python execution removed; use native actions |
213
+ | **manage_sequence** | `create` / `add_track` | ✅ Native | Level Sequence Editor native operations |
214
+ | | `keyframe` | ✅ Native | Native keyframe manipulation |
215
+ | **inspect** | `get_property` | ✅ Native | `FProperty` → JSON serialization |
216
+ | | `set_property` | ✅ Native | JSON → `FProperty` typed marshaling |
217
+ | | `list` | ✅ Native | Actor/asset listing via subsystems |
218
+ | **manage_audio** | `create_sound_cue` | ✅ Native | Sound Cue asset creation |
219
+ | | `play_sound_at_location` | ✅ Native | 3D spatial sound playback |
220
+ | | `create_audio_component` | ✅ Native | Audio component creation |
221
+ | **manage_behavior_tree** | `add_node` | ✅ Native | Behavior Tree node creation |
222
+ | | `connect_nodes` | ✅ Native | Node connection management |
223
+ | | `set_node_properties` | ✅ Native | Node property editing |
224
+
225
+ **Legend:**
226
+ - ✅ **Native** = Fully implemented in C++ plugin
227
+ - ⚠️ **Partial** = Some operations implemented; work in progress
228
+ - 🔧 **Planned** = Designed but not yet implemented
229
+ - ❌ **Removed** = Feature removed (Python execution)
230
+
231
+ ## Current Version Status (v0.6.0)
232
+
233
+ ### ✅ Completed Features
234
+ 1. ✔️ **WebSocket Transport** - Custom lightweight WebSocket client with no external dependencies
235
+ 2. ✔️ **Asset Operations** - Complete native asset pipeline (import, create, modify, delete)
236
+ 3. ✔️ **Property Marshaling** - Full `FProperty` system integration with type safety
237
+ 4. ✔️ **Editor Functions** - Native implementations of common editor operations
238
+ 5. ✔️ **Sequence/Animation** - Level Sequence Editor and animation blueprint integration
239
+ 6. ✔️ **Environment Tools** - Landscape and foliage manipulation
240
+ 7. ✔️ **Material Graph** - Material node creation and editing
241
+ 8. ✔️ **Source Control** - Perforce/SVN integration
242
+ 9. ✔️ **Telemetry** - Request tracking and performance metrics
243
+ 10. ✔️ **Security** - Capability token authentication
244
+ 11. ✔️ **Camera Control** - Native viewport camera positioning via `SetLevelViewportCameraInfo()`
245
+ 12. ✔️ **Python-Free Architecture** - 100% native C++ implementation
246
+
247
+ ### ⚠️ In Progress
248
+ 1. **Blueprint SCS Enhancements** - Improving UE 5.6+ SubobjectData subsystem compatibility
249
+ - Native component addition and modification (UE 5.7+ supported)
250
+ - Full SCS tree manipulation
251
+ 2. **Modal Dialog Interception** - Handling blocking editor dialogs
252
+ - Asset save prompts
253
+ - Package checkout dialogs
254
+
255
+ ### 📅 Roadmap (v0.7.0+)
256
+
257
+ #### High Priority
258
+ 1. **Complete Blueprint SCS API** - Finalize SimpleConstructionScript manipulation for UE 5.6+
259
+ - Leverage `SubobjectData` subsystem when available
260
+ - Fallback to legacy reflection-based approach for older engines
261
+ - Native component property editing
262
+
263
+ 2. **Physics System Integration** - Native physics force application
264
+ - `UPrimitiveComponent::AddForce()` wrappers
265
+ - Physics constraint manipulation
266
+ - Impulse and torque application
267
+ - Vehicle physics configuration
268
+
269
+ 3. **Modal Dialog Mediation** - Intercept blocking dialogs
270
+ - Asset save prompts
271
+ - Package checkout dialogs
272
+ - Build lighting confirmation
273
+ - Timeout-based fallback responses
274
+
275
+ #### Medium Priority
276
+ 4. **Hot Reload Support** - Update plugin without editor restart
277
+ - Dynamic handler registration
278
+ - State preservation across reloads
279
+
280
+ 5. **Enhanced Telemetry** - Expanded metrics and diagnostics
281
+ - Per-action success/failure rates
282
+ - Performance profiling data
283
+ - Connection health history
284
+
285
+ 6. **Batch Operations** - Multi-operation transactions
286
+ - Transactional asset workflows
287
+ - Undo/redo support
288
+ - Rollback on failure
289
+
290
+ 7. **Advanced Security** - Enhanced authentication
291
+ - Session token support
292
+ - Per-action capability tokens
293
+ - Client certificate validation
294
+
295
+ #### Low Priority
296
+ 8. **Marketplace Distribution** - Packaged plugin distribution
297
+ - Pre-compiled binaries for multiple UE versions
298
+ - Simplified installation process
299
+ - Documentation and samples
300
+
301
+ 9. **Blueprint Visual Editing** - Direct Blueprint graph manipulation
302
+ - Node creation and connection
303
+ - Function/macro creation
304
+ - Event graph editing
305
+
306
+ ## Dependencies
307
+
308
+ ### Required Unreal Engine Modules
309
+ - **Core** - Base engine functionality
310
+ - **CoreUObject** - UObject system
311
+ - **Engine** - Runtime engine
312
+ - **UnrealEd** - Editor subsystems
313
+ - **EditorScriptingUtilities** - Editor scripting APIs
314
+ - **AssetTools** - Asset manipulation
315
+ - **AssetRegistry** - Asset database
316
+ - **LevelEditor** - Level editing subsystems
317
+ - **BlueprintGraph** - Blueprint editing
318
+ - **LevelSequence** / **LevelSequenceEditor** - Sequencer
319
+ - **Landscape** / **LandscapeEditor** - Terrain tools
320
+ - **Niagara** / **NiagaraEditor** - VFX system
321
+ - **MaterialEditor** - Material editing
322
+
323
+ ### Optional Modules (Auto-Detected)
324
+ - **SubobjectDataInterface** - UE 5.7+ Blueprint SCS subsystem
325
+ - **ControlRig** - Animation and physics tools
326
+ - **SourceControl** - Version control integration
327
+
328
+ ## Installation & Configuration
329
+
330
+ ### Plugin Installation
331
+ 1. Copy `Public/McpAutomationBridge/` to your project's `Plugins/` directory
332
+ 2. Regenerate project files
333
+ 3. Enable plugin via **Edit ▸ Plugins ▸ MCP Automation Bridge**
334
+ 4. Restart editor
335
+
336
+ ### Configuration (Project Settings ▸ Plugins ▸ MCP Automation Bridge)
337
+ - **Server Host**: MCP server address (default: `127.0.0.1`)
338
+ - **Server Port**: WebSocket port (default: `8091`)
339
+ - **Capability Token**: Optional security token
340
+ - **Reconnect Enabled**: Auto-reconnect on disconnect
341
+ - **Reconnect Delay**: Delay between reconnection attempts (default: 5s)
342
+ - **Heartbeat Timeout**: Connection health timeout
343
+ - **Ticker Interval**: Subsystem tick frequency (default: 0.25s)
344
+
345
+ ### Environment Variables (Override Settings)
346
+ - `MCP_AUTOMATION_HOST` - Server host override
347
+ - `MCP_AUTOMATION_PORT` - Server port override
348
+ - `MCP_AUTOMATION_CAPABILITY_TOKEN` - Security token
349
+ - `MCP_IGNORE_SUBOBJECTDATA` - Disable SubobjectData detection
350
+ - `MCP_FORCE_SUBOBJECTDATA` - Force SubobjectData module linkage
351
+
352
+ ### Deprecated Settings (Removed)
353
+ - ~~`MCP_ALLOW_PYTHON_FALLBACKS`~~ - Python execution has been removed
354
+ - ~~`Allow Python Fallbacks`~~ - Setting removed from project settings
355
+ - ~~`bAllowPythonFallbacks`~~ - Configuration property removed
356
+ - ~~`bAllowAllPythonFallbacks`~~ - Configuration property removed
357
+
358
+ ## Contributions
359
+
360
+ Contributions welcome! Please open an issue or discussion before starting major work to ensure alignment with the roadmap.
361
+
362
+ ### Development Guidelines
363
+ - Follow Unreal Engine C++ coding standards
364
+ - Add handler functions to appropriate `McpAutomationBridge_*Handlers.cpp` files
365
+ - Register new handlers in `ProcessAutomationRequest()`
366
+ - Update `McpAutomationBridgeSubsystem.h` with handler declarations
367
+ - Add comprehensive error handling with structured error codes
368
+ - Test across multiple UE versions (5.0-5.7)
369
+ - Document new actions in this file
370
+ - **No Python dependencies** - All new features must be native C++
@@ -0,0 +1,242 @@
1
+ # Handler Mappings
2
+
3
+ This document maps the TypeScript tool definitions to their corresponding C++ handlers in the Unreal Engine plugin.
4
+
5
+ ## 1. Asset Manager (`manage_asset`)
6
+
7
+ | Action | C++ Handler File | C++ Function | Notes |
8
+ | :--- | :--- | :--- | :--- |
9
+ | `list` | `McpAutomationBridge_AssetQueryHandlers.cpp` | `HandleAssetQueryAction` | |
10
+ | `search_assets` | `McpAutomationBridge_AssetQueryHandlers.cpp` | `HandleAssetQueryAction` | |
11
+ | `import` | `McpAutomationBridge_AssetWorkflowHandlers.cpp` | `HandleAssetAction` | |
12
+ | `duplicate` | `McpAutomationBridge_AssetWorkflowHandlers.cpp` | `HandleAssetAction` | |
13
+ | `rename` | `McpAutomationBridge_AssetWorkflowHandlers.cpp` | `HandleAssetAction` | |
14
+ | `move` | `McpAutomationBridge_AssetWorkflowHandlers.cpp` | `HandleAssetAction` | |
15
+ | `delete` | `McpAutomationBridge_AssetWorkflowHandlers.cpp` | `HandleAssetAction` | |
16
+ | `delete_assets` | `McpAutomationBridge_AssetWorkflowHandlers.cpp` | `HandleBulkDeleteAssets` | |
17
+ | `create_folder` | `McpAutomationBridge_AssetWorkflowHandlers.cpp` | `HandleAssetAction` | |
18
+ | `get_asset` | `McpAutomationBridge_AssetWorkflowHandlers.cpp` | `HandleGetAsset` | |
19
+ | `get_dependencies` | `McpAutomationBridge_AssetQueryHandlers.cpp` | `HandleGetAssetDependencies` | |
20
+ | `get_source_control_state` | `McpAutomationBridge_AssetWorkflowHandlers.cpp` | `HandleSourceControlCheckout` | |
21
+ | `analyze_graph` | `McpAutomationBridge_AssetQueryHandlers.cpp` | `HandleGetAssetReferences` | |
22
+ | `create_thumbnail` | `McpAutomationBridge_AssetWorkflowHandlers.cpp` | `HandleGenerateThumbnail` | |
23
+ | `set_tags` | `McpAutomationBridge_AssetWorkflowHandlers.cpp` | `HandleAssetAction` | |
24
+ | `validate` | `McpAutomationBridge_AssetWorkflowHandlers.cpp` | `HandleAssetAction` | |
25
+ | `fixup_redirectors` | `McpAutomationBridge_AssetWorkflowHandlers.cpp` | `HandleFixupRedirectors` | |
26
+ | `generate_report` | `McpAutomationBridge_AssetWorkflowHandlers.cpp` | `HandleAssetAction` | |
27
+ | `create_material` | `McpAutomationBridge_AssetWorkflowHandlers.cpp` | `HandleAssetAction` | |
28
+ | `create_material_instance` | `McpAutomationBridge_AssetWorkflowHandlers.cpp` | `HandleAssetAction` | |
29
+ | `create_render_target` | `McpAutomationBridge_RenderHandlers.cpp` | `HandleRenderAction` | |
30
+ | `nanite_rebuild_mesh` | `McpAutomationBridge_RenderHandlers.cpp` | `HandleRenderAction` | |
31
+ | `add_material_node` | `McpAutomationBridge_MaterialGraphHandlers.cpp` | `HandleAddMaterialExpression` | |
32
+ | `connect_material_pins` | `McpAutomationBridge_MaterialGraphHandlers.cpp` | `HandleCreateMaterialNodes` | |
33
+ | `remove_material_node` | `McpAutomationBridge_MaterialGraphHandlers.cpp` | `HandleCreateMaterialNodes` | |
34
+ | `add_bt_node` | `McpAutomationBridge_BehaviorTreeHandlers.cpp` | `HandleBehaviorTreeAction` | |
35
+ | `connect_bt_nodes` | `McpAutomationBridge_BehaviorTreeHandlers.cpp` | `HandleBehaviorTreeAction` | |
36
+
37
+ ## 2. Blueprint Manager (`manage_blueprint`)
38
+
39
+ | Action | C++ Handler File | C++ Function | Notes |
40
+ | :--- | :--- | :--- | :--- |
41
+ | `create` | `McpAutomationBridge_BlueprintCreationHandlers.cpp` | `HandleBlueprintAction` | |
42
+ | `get_blueprint` | `McpAutomationBridge_BlueprintHandlers.cpp` | `HandleBlueprintAction` | |
43
+ | `compile` | `McpAutomationBridge_BlueprintHandlers.cpp` | `HandleBlueprintAction` | |
44
+ | `add_component` | `McpAutomationBridge_SCSHandlers.cpp` | `HandleBlueprintAction` | Uses `SubobjectData` in UE 5.7+ |
45
+ | `set_default` | `McpAutomationBridge_BlueprintHandlers.cpp` | `HandleBlueprintAction` | |
46
+ | `modify_scs` | `McpAutomationBridge_SCSHandlers.cpp` | `HandleBlueprintAction` | |
47
+ | `get_scs` | `McpAutomationBridge_SCSHandlers.cpp` | `HandleBlueprintAction` | |
48
+ | `create_node` | `McpAutomationBridge_BlueprintGraphHandlers.cpp` | `HandleBlueprintGraphAction` | |
49
+ | `delete_node` | `McpAutomationBridge_BlueprintGraphHandlers.cpp` | `HandleBlueprintGraphAction` | |
50
+ | `connect_pins` | `McpAutomationBridge_BlueprintGraphHandlers.cpp` | `HandleBlueprintGraphAction` | |
51
+ | `break_pin_links` | `McpAutomationBridge_BlueprintGraphHandlers.cpp` | `HandleBlueprintGraphAction` | |
52
+ | `set_node_property` | `McpAutomationBridge_BlueprintGraphHandlers.cpp` | `HandleBlueprintGraphAction` | |
53
+
54
+ ## 17. Input Manager (`manage_input`)
55
+
56
+ | Action | C++ Handler File | C++ Function | Notes |
57
+ | :--- | :--- | :--- | :--- |
58
+ | `create_input_action` | `McpAutomationBridge_InputHandlers.cpp` | `HandleInputAction` | |
59
+ | `create_input_mapping_context` | `McpAutomationBridge_InputHandlers.cpp` | `HandleInputAction` | |
60
+ | `add_mapping` | `McpAutomationBridge_InputHandlers.cpp` | `HandleInputAction` | |
61
+ | `remove_mapping` | `McpAutomationBridge_InputHandlers.cpp` | `HandleInputAction` | |
62
+ | `add_variable` | `McpAutomationBridge_BlueprintHandlers.cpp` | `HandleBlueprintAction` | |
63
+ | `add_function` | `McpAutomationBridge_BlueprintHandlers.cpp` | `HandleBlueprintAction` | |
64
+ | `add_event` | `McpAutomationBridge_BlueprintHandlers.cpp` | `HandleBlueprintAction` | Supports custom & standard events |
65
+
66
+ ## 3. Actor Control (`control_actor`)
67
+
68
+ | Action | C++ Handler File | C++ Function | Notes |
69
+ | :--- | :--- | :--- | :--- |
70
+ | `spawn` | `McpAutomationBridge_ControlHandlers.cpp` | `HandleControlActorAction` | |
71
+ | `spawn_blueprint` | `McpAutomationBridge_ControlHandlers.cpp` | `HandleControlActorAction` | |
72
+ | `delete` | `McpAutomationBridge_ControlHandlers.cpp` | `HandleControlActorAction` | |
73
+ | `delete_by_tag` | `McpAutomationBridge_ControlHandlers.cpp` | `HandleControlActorAction` | |
74
+ | `duplicate` | `McpAutomationBridge_ControlHandlers.cpp` | `HandleControlActorAction` | |
75
+ | `apply_force` | `McpAutomationBridge_ControlHandlers.cpp` | `HandleControlActorAction` | |
76
+ | `set_transform` | `McpAutomationBridge_ControlHandlers.cpp` | `HandleControlActorAction` | |
77
+ | `get_transform` | `McpAutomationBridge_ControlHandlers.cpp` | `HandleControlActorAction` | |
78
+ | `set_visibility` | `McpAutomationBridge_ControlHandlers.cpp` | `HandleControlActorAction` | |
79
+ | `add_component` | `McpAutomationBridge_ControlHandlers.cpp` | `HandleControlActorAction` | Runtime component addition |
80
+ | `add_tag` | `McpAutomationBridge_ControlHandlers.cpp` | `HandleControlActorAction` | |
81
+ | `find_by_tag` | `McpAutomationBridge_ControlHandlers.cpp` | `HandleControlActorAction` | |
82
+ | `list` | `McpAutomationBridge_ControlHandlers.cpp` | `HandleControlActorAction` | |
83
+ | `attach` | `McpAutomationBridge_ControlHandlers.cpp` | `HandleControlActorAction` | |
84
+ | `detach` | `McpAutomationBridge_ControlHandlers.cpp` | `HandleControlActorAction` | |
85
+
86
+ ## 4. Editor Control (`control_editor`)
87
+
88
+ | Action | C++ Handler File | C++ Function | Notes |
89
+ | :--- | :--- | :--- | :--- |
90
+ | `play` | `McpAutomationBridge_EditorFunctionHandlers.cpp` | `HandleControlEditorAction` | |
91
+ | `stop` | `McpAutomationBridge_EditorFunctionHandlers.cpp` | `HandleControlEditorAction` | |
92
+ | `set_camera` | `McpAutomationBridge_EditorFunctionHandlers.cpp` | `HandleControlEditorAction` | |
93
+ | `console_command` | `McpAutomationBridge_EditorFunctionHandlers.cpp` | `HandleConsoleCommandAction` | |
94
+ | `screenshot` | `McpAutomationBridge_EditorFunctionHandlers.cpp` | `HandleControlEditorAction` | |
95
+ | `simulate_input` | `McpAutomationBridge_UiHandlers.cpp` | `HandleUiAction` | |
96
+ | `create_bookmark` | `McpAutomationBridge_EditorFunctionHandlers.cpp` | `HandleControlEditorAction` | |
97
+
98
+ ## 5. Level Manager (`manage_level`)
99
+
100
+ | Action | C++ Handler File | C++ Function | Notes |
101
+ | :--- | :--- | :--- | :--- |
102
+ | `load` | `McpAutomationBridge_EditorFunctionHandlers.cpp` | `HandleLevelAction` | |
103
+ | `save` | `McpAutomationBridge_EditorFunctionHandlers.cpp` | `HandleLevelAction` | |
104
+ | `create_level` | `McpAutomationBridge_EditorFunctionHandlers.cpp` | `HandleLevelAction` | |
105
+ | `export_level` | `McpAutomationBridge_LevelHandlers.cpp` | `HandleLevelAction` | |
106
+ | `import_level` | `McpAutomationBridge_LevelHandlers.cpp` | `HandleLevelAction` | |
107
+ | `load_cells` | `McpAutomationBridge_WorldPartitionHandlers.cpp` | `HandleWorldPartitionAction` | |
108
+ | `set_datalayer` | `McpAutomationBridge_WorldPartitionHandlers.cpp` | `HandleWorldPartitionAction` | |
109
+
110
+ ## 6. Lighting Manager (`manage_lighting`)
111
+
112
+ | Action | C++ Handler File | C++ Function | Notes |
113
+ | :--- | :--- | :--- | :--- |
114
+ | `spawn_light` | `McpAutomationBridge_LightingHandlers.cpp` | `HandleLightingAction` | |
115
+ | `spawn_sky_light` | `McpAutomationBridge_LightingHandlers.cpp` | `HandleLightingAction` | |
116
+ | `build_lighting` | `McpAutomationBridge_LightingHandlers.cpp` | `HandleLightingAction` | |
117
+ | `ensure_single_sky_light` | `McpAutomationBridge_LightingHandlers.cpp` | `HandleLightingAction` | |
118
+ | `create_lightmass_volume` | `McpAutomationBridge_LightingHandlers.cpp` | `HandleLightingAction` | |
119
+ | `setup_volumetric_fog` | `McpAutomationBridge_LightingHandlers.cpp` | `HandleLightingAction` | |
120
+ | `create_lighting_enabled_level` | `McpAutomationBridge_LightingHandlers.cpp` | `HandleLightingAction` | |
121
+ | `setup_global_illumination` | `McpAutomationBridge_LightingHandlers.cpp` | `HandleLightingAction` | |
122
+ | `configure_shadows` | `McpAutomationBridge_LightingHandlers.cpp` | `HandleLightingAction` | |
123
+ | `set_exposure` | `McpAutomationBridge_LightingHandlers.cpp` | `HandleLightingAction` | |
124
+ | `set_ambient_occlusion` | `McpAutomationBridge_LightingHandlers.cpp` | `HandleLightingAction` | |
125
+
126
+ ## 7. Performance Manager (`manage_performance`)
127
+
128
+ | Action | C++ Handler File | C++ Function | Notes |
129
+ | :--- | :--- | :--- | :--- |
130
+ | `generate_memory_report` | `McpAutomationBridge_PerformanceHandlers.cpp` | `HandlePerformanceAction` | |
131
+ | `configure_texture_streaming` | `McpAutomationBridge_PerformanceHandlers.cpp` | `HandlePerformanceAction` | |
132
+ | `merge_actors` | `McpAutomationBridge_PerformanceHandlers.cpp` | `HandlePerformanceAction` | |
133
+ | `start_profiling` | `McpAutomationBridge_PerformanceHandlers.cpp` | `HandlePerformanceAction` | |
134
+ | `stop_profiling` | `McpAutomationBridge_PerformanceHandlers.cpp` | `HandlePerformanceAction` | |
135
+ | `show_fps` | `McpAutomationBridge_PerformanceHandlers.cpp` | `HandlePerformanceAction` | |
136
+ | `show_stats` | `McpAutomationBridge_PerformanceHandlers.cpp` | `HandlePerformanceAction` | |
137
+ | `set_scalability` | `McpAutomationBridge_PerformanceHandlers.cpp` | `HandlePerformanceAction` | |
138
+ | `set_resolution_scale` | `McpAutomationBridge_PerformanceHandlers.cpp` | `HandlePerformanceAction` | |
139
+ | `set_vsync` | `McpAutomationBridge_PerformanceHandlers.cpp` | `HandlePerformanceAction` | |
140
+ | `set_frame_rate_limit` | `McpAutomationBridge_PerformanceHandlers.cpp` | `HandlePerformanceAction` | |
141
+ | `configure_nanite` | `McpAutomationBridge_PerformanceHandlers.cpp` | `HandlePerformanceAction` | |
142
+ | `configure_lod` | `McpAutomationBridge_PerformanceHandlers.cpp` | `HandlePerformanceAction` | |
143
+
144
+ ## 8. Animation & Physics (`animation_physics`)
145
+
146
+ | Action | C++ Handler File | C++ Function | Notes |
147
+ | :--- | :--- | :--- | :--- |
148
+ | `create_animation_bp` | `McpAutomationBridge_AnimationHandlers.cpp` | `HandleCreateAnimBlueprint` | |
149
+ | `play_montage` | `McpAutomationBridge_AnimationHandlers.cpp` | `HandlePlayAnimMontage` | |
150
+ | `setup_ragdoll` | `McpAutomationBridge_AnimationHandlers.cpp` | `HandleSetupRagdoll` | |
151
+ | `configure_vehicle` | `McpAutomationBridge_AnimationHandlers.cpp` | `HandleAnimationPhysicsAction` | |
152
+
153
+ ## 9. Effects Manager (`manage_effect`)
154
+
155
+ | Action | C++ Handler File | C++ Function | Notes |
156
+ | :--- | :--- | :--- | :--- |
157
+ | `niagara` | `McpAutomationBridge_EffectHandlers.cpp` | `HandleEffectAction` | |
158
+ | `spawn_niagara` | `McpAutomationBridge_EffectHandlers.cpp` | `HandleSpawnNiagaraActor` | |
159
+ | `debug_shape` | `McpAutomationBridge_EffectHandlers.cpp` | `HandleEffectAction` | |
160
+ | `create_niagara_system` | `McpAutomationBridge_EffectHandlers.cpp` | `HandleCreateNiagaraSystem` | |
161
+ | `create_niagara_emitter` | `McpAutomationBridge_EffectHandlers.cpp` | `HandleCreateNiagaraEmitter` | |
162
+ | `add_niagara_module` | `McpAutomationBridge_NiagaraGraphHandlers.cpp` | `HandleNiagaraGraphAction` | |
163
+
164
+ ## 10. Environment Builder (`build_environment`)
165
+
166
+ | Action | C++ Handler File | C++ Function | Notes |
167
+ | :--- | :--- | :--- | :--- |
168
+ | `create_landscape` | `McpAutomationBridge_LandscapeHandlers.cpp` | `HandleCreateLandscape` | |
169
+ | `sculpt` | `McpAutomationBridge_LandscapeHandlers.cpp` | `HandleSculptLandscape` | |
170
+ | `paint_foliage` | `McpAutomationBridge_FoliageHandlers.cpp` | `HandlePaintFoliage` | |
171
+ | `add_foliage_instances` | `McpAutomationBridge_FoliageHandlers.cpp` | `HandleAddFoliageInstances` | |
172
+ | `get_foliage_instances` | `McpAutomationBridge_FoliageHandlers.cpp` | `HandleGetFoliageInstances` | |
173
+ | `remove_foliage` | `McpAutomationBridge_FoliageHandlers.cpp` | `HandleRemoveFoliage` | |
174
+ | `create_procedural_terrain` | `McpAutomationBridge_EnvironmentHandlers.cpp` | `HandleCreateProceduralTerrain` | |
175
+
176
+ ## 11. System Control (`system_control`)
177
+
178
+ | Action | C++ Handler File | C++ Function | Notes |
179
+ | :--- | :--- | :--- | :--- |
180
+ | `execute_command` | `McpAutomationBridge_EditorFunctionHandlers.cpp` | `HandleExecuteEditorFunction` | |
181
+ | `console_command` | `McpAutomationBridge_EditorFunctionHandlers.cpp` | `HandleConsoleCommandAction` | |
182
+ | `run_ubt` | *None* | *None* | Handled in TypeScript (`child_process`) |
183
+ | `run_tests` | `McpAutomationBridge_TestHandlers.cpp` | `HandleTestAction` | |
184
+ | `subscribe` | `McpAutomationBridge_LogHandlers.cpp` | `HandleLogAction` | |
185
+ | `unsubscribe` | `McpAutomationBridge_LogHandlers.cpp` | `HandleLogAction` | |
186
+ | `spawn_category` | `McpAutomationBridge_DebugHandlers.cpp` | `HandleDebugAction` | |
187
+ | `start_session` | `McpAutomationBridge_InsightsHandlers.cpp` | `HandleInsightsAction` | |
188
+ | `lumen_update_scene` | `McpAutomationBridge_RenderHandlers.cpp` | `HandleRenderAction` | |
189
+ | `set_project_setting` | `McpAutomationBridge_EnvironmentHandlers.cpp` | `HandleSystemControlAction` | |
190
+ | `create_hud` | `McpAutomationBridge_UiHandlers.cpp` | `HandleUiAction` | Sub-action of `system_control` |
191
+ | `set_widget_text` | `McpAutomationBridge_UiHandlers.cpp` | `HandleUiAction` | Sub-action of `system_control` |
192
+ | `set_widget_image` | `McpAutomationBridge_UiHandlers.cpp` | `HandleUiAction` | Sub-action of `system_control` |
193
+ | `set_widget_visibility` | `McpAutomationBridge_UiHandlers.cpp` | `HandleUiAction` | Sub-action of `system_control` |
194
+ | `remove_widget_from_viewport` | `McpAutomationBridge_UiHandlers.cpp` | `HandleUiAction` | Sub-action of `system_control` |
195
+
196
+ ## 12. Sequencer (`manage_sequence`)
197
+
198
+ | Action | C++ Handler File | C++ Function | Notes |
199
+ | :--- | :--- | :--- | :--- |
200
+ | `create` | `McpAutomationBridge_SequenceHandlers.cpp` | `HandleSequenceAction` | |
201
+ | `add_actor` | `McpAutomationBridge_SequenceHandlers.cpp` | `HandleSequenceAction` | |
202
+ | `play` | `McpAutomationBridge_SequenceHandlers.cpp` | `HandleSequenceAction` | |
203
+ | `add_keyframe` | `McpAutomationBridge_SequencerHandlers.cpp` | `HandleAddSequencerKeyframe` | |
204
+ | `add_camera` | `McpAutomationBridge_SequenceHandlers.cpp` | `HandleAddCameraTrack` | |
205
+
206
+ ## 13. Introspection (`inspect`)
207
+
208
+ | Action | C++ Handler File | C++ Function | Notes |
209
+ | :--- | :--- | :--- | :--- |
210
+ | `inspect_object` | `McpAutomationBridge_PropertyHandlers.cpp` | `HandleInspectAction` | |
211
+ | `set_property` | `McpAutomationBridge_PropertyHandlers.cpp` | `HandleSetObjectProperty` | |
212
+ | `get_property` | `McpAutomationBridge_PropertyHandlers.cpp` | `HandleGetObjectProperty` | |
213
+ | `get_components` | `McpAutomationBridge_ControlHandlers.cpp` | `HandleControlActorAction` | |
214
+ | `list_objects` | `McpAutomationBridge_PropertyHandlers.cpp` | `HandleInspectAction` | |
215
+
216
+ ## 14. Audio Manager (`manage_audio`)
217
+
218
+ | Action | C++ Handler File | C++ Function | Notes |
219
+ | :--- | :--- | :--- | :--- |
220
+ | `create_sound_cue` | `McpAutomationBridge_AudioHandlers.cpp` | `HandleAudioAction` | |
221
+ | `play_sound_at_location` | `McpAutomationBridge_AudioHandlers.cpp` | `HandleAudioAction` | |
222
+ | `create_audio_component` | `McpAutomationBridge_AudioHandlers.cpp` | `HandleAudioAction` | |
223
+
224
+ ## 15. Behavior Tree Manager (`manage_behavior_tree`)
225
+
226
+ | Action | C++ Handler File | C++ Function | Notes |
227
+ | :--- | :--- | :--- | :--- |
228
+ | `add_node` | `McpAutomationBridge_BehaviorTreeHandlers.cpp` | `HandleBehaviorTreeAction` | |
229
+ | `connect_nodes` | `McpAutomationBridge_BehaviorTreeHandlers.cpp` | `HandleBehaviorTreeAction` | |
230
+ | `remove_node` | `McpAutomationBridge_BehaviorTreeHandlers.cpp` | `HandleBehaviorTreeAction` | |
231
+ | `break_connections` | `McpAutomationBridge_BehaviorTreeHandlers.cpp` | `HandleBehaviorTreeAction` | |
232
+ | `set_node_properties` | `McpAutomationBridge_BehaviorTreeHandlers.cpp` | `HandleBehaviorTreeAction` | |
233
+
234
+ ## 16. Blueprint Graph Manager (`manage_blueprint_graph`)
235
+
236
+ | Action | C++ Handler File | C++ Function | Notes |
237
+ | :--- | :--- | :--- | :--- |
238
+ | `create_node` | `McpAutomationBridge_BlueprintGraphHandlers.cpp` | `HandleBlueprintGraphAction` | |
239
+ | `delete_node` | `McpAutomationBridge_BlueprintGraphHandlers.cpp` | `HandleBlueprintGraphAction` | |
240
+ | `connect_pins` | `McpAutomationBridge_BlueprintGraphHandlers.cpp` | `HandleBlueprintGraphAction` | |
241
+ | `break_pin_links` | `McpAutomationBridge_BlueprintGraphHandlers.cpp` | `HandleBlueprintGraphAction` | |
242
+ | `set_node_property` | `McpAutomationBridge_BlueprintGraphHandlers.cpp` | `HandleBlueprintGraphAction` | |