unreal-engine-mcp-server 0.4.7 โ†’ 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 +267 -31
  29. package/CONTRIBUTING.md +140 -0
  30. package/README.md +166 -71
  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 -619
  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 +5462 -1781
  97. package/dist/tools/consolidated-tool-definitions.js +829 -496
  98. package/dist/tools/consolidated-tool-handlers.d.ts +2 -1
  99. package/dist/tools/consolidated-tool-handlers.js +211 -1026
  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 +3 -3
  161. package/dist/tools/logs.js +5 -57
  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 +183 -19
  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 -663
  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 -515
  316. package/src/tools/consolidated-tool-handlers.ts +272 -1139
  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 +9 -57
  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 +243 -21
  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 -574
  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
@@ -2,31 +2,32 @@ name: Publish to MCP Registry
2
2
 
3
3
  on:
4
4
  push:
5
- tags: ["v*"] # Triggers on version tags like v1.2.0
6
- workflow_dispatch: # Allow manual triggering
5
+ tags: ["v*"]
6
+ workflow_dispatch:
7
7
 
8
8
  jobs:
9
9
  publish:
10
10
  runs-on: ubuntu-latest
11
11
  permissions:
12
- id-token: write # Required for OIDC authentication
12
+ id-token: write
13
13
  contents: read
14
14
 
15
15
  steps:
16
16
  - name: Checkout code
17
- uses: actions/checkout@v4
17
+ uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
18
18
 
19
19
  - name: Setup Node.js
20
- uses: actions/setup-node@v4
20
+ uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
21
21
  with:
22
22
  node-version: "20"
23
23
  registry-url: "https://registry.npmjs.org"
24
+ cache: 'npm'
24
25
 
25
26
  - name: Install dependencies
26
27
  run: npm ci
27
28
 
28
- - name: Run tests
29
- run: npm run test
29
+ - name: Run smoke tests
30
+ run: npm run test:smoke
30
31
  continue-on-error: true
31
32
 
32
33
  - name: Run linting
@@ -59,17 +60,21 @@ jobs:
59
60
  NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
60
61
 
61
62
  - name: Install MCP Publisher
63
+ if: ${{ success() }}
62
64
  run: |
63
65
  curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.1.0/mcp-publisher_1.1.0_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher
64
66
  chmod +x mcp-publisher
65
67
 
66
68
  - name: Login to MCP Registry
69
+ if: ${{ success() }}
67
70
  run: ./mcp-publisher login github-oidc
68
71
 
69
72
  - name: Publish to MCP Registry
73
+ if: ${{ success() }}
70
74
  run: ./mcp-publisher publish
71
75
 
72
76
  - name: Verify publication
77
+ if: ${{ always() }}
73
78
  run: |
74
79
  echo "Waiting for registry to update..."
75
80
  sleep 30
@@ -0,0 +1,23 @@
1
+ name: Release Drafter
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ update_release_draft:
14
+ permissions:
15
+ contents: write
16
+ pull-requests: write
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: release-drafter/release-drafter@v6.1.0 # v6.1.0
20
+ with:
21
+ config-name: release-drafter.yml
22
+ env:
23
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,112 @@
1
+ name: Create GitHub Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*.*.*'
7
+
8
+ permissions:
9
+ contents: write
10
+
11
+ jobs:
12
+ release:
13
+ name: Create Release
14
+ runs-on: ubuntu-latest
15
+
16
+ steps:
17
+ - name: Checkout code
18
+ uses: actions/checkout@v4 # v4
19
+ with:
20
+ fetch-depth: 0
21
+
22
+ - name: Setup Node.js
23
+ uses: actions/setup-node@v4 # v4
24
+ with:
25
+ node-version: '20'
26
+ cache: 'npm'
27
+
28
+ - name: Install dependencies
29
+ run: npm ci
30
+
31
+ - name: Build package
32
+ run: npm run build
33
+
34
+ - name: Extract version from tag
35
+ id: version
36
+ run: |
37
+ VERSION=${GITHUB_REF#refs/tags/v}
38
+ echo "version=$VERSION" >> $GITHUB_OUTPUT
39
+ echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
40
+ echo "Releasing version: $VERSION"
41
+
42
+ - name: Extract changelog for this version
43
+ id: changelog
44
+ run: |
45
+ VERSION=${{ steps.version.outputs.version }}
46
+
47
+ CHANGELOG=$(awk -v ver="$VERSION" '
48
+ $0 ~ "## .*\\[" ver "\\]" { found=1; next }
49
+ found && /^## .*\[/ { exit }
50
+ found { print }
51
+ ' CHANGELOG.md)
52
+
53
+ if [ -z "$CHANGELOG" ]; then
54
+ CHANGELOG="Release ${{ steps.version.outputs.tag }}"
55
+ fi
56
+
57
+ echo "$CHANGELOG" > release_notes.md
58
+ echo "Generated release notes:"
59
+ cat release_notes.md
60
+
61
+ - name: Create dist archive
62
+ run: |
63
+ mkdir -p release-artifacts
64
+
65
+ tar -czvf release-artifacts/unreal-engine-mcp-server-${{ steps.version.outputs.version }}.tar.gz \
66
+ dist/ \
67
+ package.json \
68
+ README.md \
69
+ CHANGELOG.md \
70
+ LICENSE
71
+
72
+ zip -r release-artifacts/unreal-engine-mcp-server-${{ steps.version.outputs.version }}.zip \
73
+ dist/ \
74
+ package.json \
75
+ README.md \
76
+ CHANGELOG.md \
77
+ LICENSE
78
+
79
+ - name: Create Plugin archive
80
+ run: |
81
+ if [ -d "plugins/McpAutomationBridge" ]; then
82
+ tar -czvf release-artifacts/McpAutomationBridge-plugin-${{ steps.version.outputs.version }}.tar.gz \
83
+ plugins/McpAutomationBridge/
84
+
85
+ zip -r release-artifacts/McpAutomationBridge-plugin-${{ steps.version.outputs.version }}.zip \
86
+ plugins/McpAutomationBridge/
87
+
88
+ echo "Plugin archive created"
89
+ else
90
+ echo "Plugin directory not found, skipping plugin archive"
91
+ fi
92
+
93
+ - name: Create GitHub Release
94
+ uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # v2.0.8
95
+ with:
96
+ name: Release ${{ steps.version.outputs.tag }}
97
+ body_path: release_notes.md
98
+ draft: false
99
+ prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }}
100
+ files: |
101
+ release-artifacts/*
102
+ env:
103
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
104
+
105
+ - name: Release Summary
106
+ run: |
107
+ echo "## Release Created Successfully! ๐ŸŽ‰" >> $GITHUB_STEP_SUMMARY
108
+ echo "" >> $GITHUB_STEP_SUMMARY
109
+ echo "**Version:** ${{ steps.version.outputs.tag }}" >> $GITHUB_STEP_SUMMARY
110
+ echo "" >> $GITHUB_STEP_SUMMARY
111
+ echo "### Artifacts:" >> $GITHUB_STEP_SUMMARY
112
+ ls -la release-artifacts/ >> $GITHUB_STEP_SUMMARY
@@ -0,0 +1,35 @@
1
+ name: "Semantic Pull Request"
2
+
3
+ on:
4
+ pull_request_target:
5
+ types:
6
+ - opened
7
+ - edited
8
+ - synchronize
9
+
10
+ permissions:
11
+ pull-requests: read
12
+ statuses: write
13
+
14
+ jobs:
15
+ main:
16
+ name: Validate PR Title
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6.1.1
20
+ env:
21
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
22
+ with:
23
+ types: |
24
+ feat
25
+ fix
26
+ docs
27
+ style
28
+ refactor
29
+ perf
30
+ test
31
+ build
32
+ ci
33
+ chore
34
+ revert
35
+ requireScope: false
@@ -0,0 +1,36 @@
1
+ name: Smoke Test (Mock Mode)
2
+ permissions:
3
+ contents: read
4
+
5
+ on:
6
+ push:
7
+ branches: [ "main" ]
8
+ pull_request:
9
+ branches: [ "main" ]
10
+
11
+ concurrency:
12
+ group: ${{ github.workflow }}-${{ github.ref }}
13
+ cancel-in-progress: true
14
+
15
+ jobs:
16
+ smoke-test:
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
20
+
21
+ - name: Use Node.js
22
+ uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
23
+ with:
24
+ node-version: '20.x'
25
+ cache: 'npm'
26
+
27
+ - name: Install dependencies
28
+ run: npm ci
29
+
30
+ - name: Build
31
+ run: npm run build
32
+
33
+ - name: Run Smoke Test
34
+ run: npm run test:smoke
35
+ env:
36
+ MOCK_UNREAL_CONNECTION: "true"
@@ -0,0 +1,28 @@
1
+ name: '๐Ÿท๏ธ Stale Issue and PR Management'
2
+
3
+ on:
4
+ schedule:
5
+ - cron: '0 0 * * *'
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ issues: write
10
+ pull-requests: write
11
+
12
+ jobs:
13
+ stale:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/stale@997185467fa4f803885201cee163a9f38240193d # v10.1.1
17
+ with:
18
+ stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 14 days if no further activity occurs. Thank you for your contributions!'
19
+ stale-pr-message: 'This pull request has been automatically marked as stale because it has not had recent activity. It will be closed in 14 days if no further activity occurs. Please update your PR or add a comment if you would like to keep it open.'
20
+ close-issue-message: 'This issue was closed because it has been stale for 14 days with no activity.'
21
+ close-pr-message: 'This pull request was closed because it has been stale for 14 days with no activity.'
22
+ days-before-stale: 60
23
+ days-before-close: 14
24
+ stale-issue-label: 'stale'
25
+ stale-pr-label: 'stale'
26
+ exempt-issue-labels: 'pinned,security,bug,enhancement'
27
+ exempt-pr-labels: 'pinned,security'
28
+ operations-per-run: 100
package/CHANGELOG.md CHANGED
@@ -1,43 +1,279 @@
1
- # Changelog
1
+ # ๐Ÿ“‹ Changelog
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
- ## [0.4.7] - 2025-11-16
6
- ### Added
7
- - Output Log reading via `system_control` tool with `read_log` action. Supports filtering by category (comma-separated or array), log level (Error, Warning, Log, Verbose, VeryVerbose, All), line count (up to 2000), specific log path, include prefixes, and exclude categories. Automatically resolves the latest project log under Saved/Logs.
8
- - New `src/tools/logs.ts` implementing robust log tailing, parsing (timestamp/category/level/message), and UE-specific internal entry filtering (e.g., excludes LogPython RESULT: blocks unless requested).
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
9
7
 
10
- ### Changed
11
- - `system_control` tool schema: Added `read_log` action with full filter parameters to inputSchema; extended outputSchema with `logPath`, `entries` array, and `filteredCount`.
12
- - Updated `src/tools/consolidated-tool-handlers.ts` to route `read_log` to LogTools without requiring UE connection (file-based).
13
- - `src/index.ts`: Instantiates and passes LogTools to consolidated handler.
14
- - Version bumped to 0.4.7 in package.json, package-lock.json, server.json, .env.production, and runtime config.
8
+ ---
15
9
 
16
- ## [0.4.6] - 2025-10-04
17
- ### Fixed
18
- - Fixed duplicate response output issue where tool responses were being displayed twice in MCP content
19
- - Response validator now emits concise summaries in text content instead of duplicating full JSON payloads
20
- - Structured content is preserved for validation and tests while user-facing output is streamlined
10
+ ## ๐Ÿท๏ธ [0.5.0] - 2025-12-16
21
11
 
22
- ## [0.4.5] - 2025-10-03
23
- ### Added
24
- - Expose `UE_PROJECT_PATH` environment variable across runtime config, Smithery manifest, and client example configs. This allows tools that need an absolute .uproject path (e.g., engine_start) to work without additional manual configuration.
25
- - Added `projectPath` to the runtime `configSchema` so Smithery's session UI can inject a project path into the server environment.
12
+ > [!IMPORTANT]
13
+ > ### ๐Ÿ”„ Major Architecture Migration
14
+ > This release marks the **complete migration** from Unreal's built-in Remote Plugin to a native C++ **McpAutomationBridge** plugin. This provides:
15
+ > - โšก Better performance
16
+ > - ๐Ÿ”— Tighter editor integration
17
+ > - ๐Ÿšซ No dependency on Unreal's Remote API
18
+ >
19
+ > **BREAKING CHANGE:** Response format has been standardized across all automation tools. Clients should expect responses to follow the new `StandardActionResponse` format with `success`, `data`, `warnings`, and `error` fields.
26
20
 
27
- ### Changed
28
- - Make `createServer` a synchronous factory (removed `async`) and updated `createServerDefault` and `startStdioServer` to use the synchronous factory. This aligns the exported default with Smitheryโ€™s expectations and prevents auto-start mismatches in the bundled output.
29
- - Provide a default for `ueHost` in the exported `configSchema` so the Smithery configuration dialog pre-fills the host input.
21
+ ### ๐Ÿ—๏ธ Architecture
30
22
 
31
- ### Documentation
32
- - Updated `README.md`, `claude_desktop_config_example.json`, and `mcp-config-example.json` to include `UE_PROJECT_PATH` and usage notes.
33
- - Updated `smithery.yaml` and `server.json` manifest to declare `UE_PROJECT_PATH` and default values.
23
+ | Change | Description |
24
+ |--------|-------------|
25
+ | ๐Ÿ†• **Native C++ Plugin** | Introduced `McpAutomationBridge` - a native UE5 editor plugin replacing the Remote API |
26
+ | ๐Ÿ”Œ **Direct Editor Integration** | Commands execute directly in the editor context via automation bridge subsystem |
27
+ | ๐ŸŒ **WebSocket Communication** | Implemented `McpBridgeWebSocket` for real-time bidirectional communication |
28
+ | ๐ŸŽฏ **Bridge-First Architecture** | All operations route through the native C++ bridge (`fe65968`) |
29
+ | ๐Ÿ“ **Standardized Responses** | All tools now return `StandardActionResponse` format (`0a8999b`) |
34
30
 
35
- ### Build
36
- - Rebuilt the Smithery bundle and TypeScript output to ensure schema and defaults are exported in the distributed artifact.
31
+ ### โœจ Added
37
32
 
38
- ### Fixes
39
- - Fixes Smithery UI blank ueHost field by defining a default in the runtime schema.
33
+ <details>
34
+ <summary><b>๐ŸŽฎ Engine Compatibility</b></summary>
40
35
 
36
+ - **UE 5.7 Support** - Updated McpAutomationBridge with ControlRig dynamic loading and improved sequence handling (`ec5409b`)
41
37
 
42
- ## [0.4.4] - 2025-09-30
43
- - Previous release notes retained in upstream repo.
38
+ </details>
39
+
40
+ <details>
41
+ <summary><b>๐Ÿ”ง New APIs & Integrations</b></summary>
42
+
43
+ - **GraphQL API** - Broadened automation bridge with GraphQL support, WASM integration, UI/editor integrations (`ffdd814`)
44
+ - **WebAssembly Integration** - High-performance JSON parsing with 5-8x performance gains (`23f63c7`)
45
+
46
+ </details>
47
+
48
+ <details>
49
+ <summary><b>๐ŸŒ‰ Automation Bridge Features</b></summary>
50
+
51
+ | Feature | Commit |
52
+ |---------|--------|
53
+ | Server mode on port `8091` | `267aa42` |
54
+ | Client mode with enhanced connection handling | `bf0fa56` |
55
+ | Heartbeat tracking and output capturing | `28242e1` |
56
+ | Event handling and asset management | `d10e1e2` |
57
+
58
+ </details>
59
+
60
+ <details>
61
+ <summary><b>๐ŸŽ›๏ธ New Tool Systems (0a8999b, 0ac82ac)</b></summary>
62
+
63
+ | Tool | Description |
64
+ |------|-------------|
65
+ | ๐ŸŽฎ **Input Management** | New `manage_input` tool with EnhancedInput support for Input Actions and Mapping Contexts |
66
+ | ๐Ÿ’ก **Lighting Manager** | Full lighting configuration via `manage_lighting` including spawn, GI setup, shadow config, build lighting |
67
+ | ๐Ÿ“Š **Performance Manager** | `manage_performance` with profiling (CPU/GPU/Memory), optimization, scalability, Nanite/Lumen config |
68
+ | ๐ŸŒณ **Behavior Tree Editing** | Full behavior tree creation and node editing via `manage_behavior_tree` |
69
+ | ๐ŸŽฌ **Enhanced Sequencer** | Track operations (add/remove tracks, set muted/solo/locked), display rate, tick resolution |
70
+ | ๐ŸŒ **World Partition** | Cell management, data layer toggling via `manage_level` |
71
+ | ๐Ÿ–ผ๏ธ **Widget Management** | UI widget creation, visibility controls, child widget adding |
72
+
73
+ </details>
74
+
75
+ <details>
76
+ <summary><b>๐Ÿ“Š Graph Editing Capabilities (0a8999b)</b></summary>
77
+
78
+ - **Blueprint Graph** - Direct node manipulation with `manage_blueprint_graph` (create_node, delete_node, connect_pins, etc.)
79
+ - **Material Graph** - Node operations via `manage_asset` (add_material_node, connect_material_pins, etc.)
80
+ - **Niagara Graph** - Module and parameter editing (add_niagara_module, set_niagara_parameter, etc.)
81
+
82
+ </details>
83
+
84
+ <details>
85
+ <summary><b>๐Ÿ› ๏ธ New Handlers & Actions</b></summary>
86
+
87
+ - Blueprint graph management and Niagara functionalities (`aff4d55`)
88
+ - Physics simulation setup in AnimationTools (`83a6f5d`)
89
+ - **New Asset Actions:**
90
+ - `generate_lods`, `add_material_parameter`, `list_instances`
91
+ - `reset_instance_parameters`, `get_material_stats`, `exists`
92
+ - `nanite_rebuild_mesh`
93
+ - World partition and rendering tool handlers (`83a6f5d`)
94
+ - Screenshot with base64 image encoding (`bb4f6a8`)
95
+
96
+ </details>
97
+
98
+ <details>
99
+ <summary><b>๐Ÿงช Test Suites</b></summary>
100
+
101
+ **50+ new test cases** covering:
102
+ - Animation, Assets, Materials
103
+ - Sequences, World Partition
104
+ - Blueprints, Niagara, Behavior Trees
105
+ - Audio, Input Actions
106
+ - And more! (`31c6db9`, `85817c9`, `fc47839`, `02fd2af`)
107
+
108
+ </details>
109
+
110
+ ### ๐Ÿ”„ Changed
111
+
112
+ #### Core Refactors
113
+ | Component | Change | Commit |
114
+ |-----------|--------|--------|
115
+ | `SequenceTools` | Migrated to Automation Bridge | `c2fb15a` |
116
+ | `UnrealBridge` | Refactored for bridge connection | `7bd48d8` |
117
+ | Automation Dispatch | Editor-native handlers modernization | `c9db1a4` |
118
+ | Test Runner | Timeout expectations & content extraction | `c9766b0` |
119
+ | UI Handlers | Improved readability and organization | `bb4f6a8` |
120
+ | Connection Manager | Streamlined connection handling | `0ac82ac` |
121
+
122
+ #### Tool Improvements
123
+ - ๐Ÿš— **PhysicsTools** - Vehicle config logic updated, deprecated checks removed (`6dba9f7`)
124
+ - ๐ŸŽฌ **AnimationTools** - Logging and response normalization (`7666c31`)
125
+ - โš ๏ธ **Error Handling** - Utilities refactored, INI file reader added (`f5444e4`)
126
+ - ๐Ÿ“ **Blueprint Actions** - Timeout handling enhancements (`65d2738`)
127
+ - ๐ŸŽจ **Materials** - Enhanced material graph editing capabilities (`0a8999b`)
128
+ - ๐Ÿ”Š **Audio** - Improved sound component management (`0a8999b`)
129
+
130
+ #### Other Changes
131
+ - ๐Ÿ“ก **Connection & Logging** - Improved error messages for clarity (`41350b3`)
132
+ - ๐Ÿ“š **Documentation** - README updated with UE 5.7, WASM docs, architecture overview, 17 tools (`8d72f28`, `4d77b7e`)
133
+ - ๐Ÿ”„ **Dependencies** - Updated to latest versions (`08eede5`)
134
+ - ๐Ÿ“ **Type Definitions** - Enhanced tool interfaces and type coverage (`0a8999b`)
135
+
136
+ ### ๐Ÿ› Fixed
137
+
138
+ - `McpAutomationBridgeSubsystem` - Header removal, logging category, heartbeat methods (`498f644`)
139
+ - `McpBridgeWebSocket` - Reliable WebSocket communication (`861ad91`)
140
+ - **AutomationBridge** - Heartbeat handling and server metadata retrieval (`0da54f7`)
141
+ - **UI Handlers** - Missing payload and invalid widget path error handling (`bb4f6a8`)
142
+ - **Screenshot** - Clearer error messages and flow (`bb4f6a8`)
143
+
144
+ ### ๐Ÿ—‘๏ธ Removed
145
+
146
+ | Removed | Reason |
147
+ |---------|--------|
148
+ | ๐Ÿ”Œ Remote API Dependency | Replaced by native C++ plugin |
149
+ | ๐Ÿ Python Fallbacks | Native C++ automation preferred (`fe65968`) |
150
+ | ๐Ÿ“ฆ Unused HTTP Client | Cleanup from error-handler (`f5444e4`) |
151
+
152
+ ---
153
+
154
+ ## ๐Ÿท๏ธ [0.4.7] - 2025-11-16
155
+
156
+ ### โœจ Added
157
+ - Output Log reading via `system_control` tool with `read_log` action. filtering by category, level, line count.
158
+ - New `src/tools/logs.ts` implementing robust log tailing.
159
+ - ๐Ÿ†• Initial `McpAutomationBridge` plugin with foundational implementation (`30e62f9`)
160
+ - ๐Ÿงช Comprehensive test suites for various Unreal Engine tools (`31c6db9`)
161
+
162
+ ### ๐Ÿ”„ Changed
163
+ - `system_control` tool schema: Added `read_log` action.
164
+ - Updated tool handlers to route `read_log` to LogTools.
165
+ - Version bumped to 0.4.7.
166
+
167
+ ### ๐Ÿ“š Documentation
168
+ - Updated README.md with initial bridge documentation (`a24dafd`)
169
+
170
+ ---
171
+
172
+ ## ๐Ÿท๏ธ [0.4.6] - 2025-10-04
173
+
174
+ ### ๐Ÿ› Fixed
175
+ - Fixed duplicate response output issue where tool responses were displayed twice in MCP content
176
+ - Response validator now emits concise summaries instead of duplicating full JSON payloads
177
+ - Structured content preserved for validation while user-facing output is streamlined
178
+
179
+ ---
180
+
181
+ ## ๐Ÿท๏ธ [0.4.5] - 2025-10-03
182
+
183
+ ### โœจ Added
184
+ - ๐Ÿ”ง Expose `UE_PROJECT_PATH` environment variable across runtime config, Smithery manifest, and client configs
185
+ - ๐Ÿ“ Added `projectPath` to runtime `configSchema` for Smithery's session UI
186
+
187
+ ### ๐Ÿ”„ Changed
188
+ - โšก Made `createServer` synchronous factory (removed `async`)
189
+ - ๐Ÿ  Default for `ueHost` in exported `configSchema`
190
+
191
+ ### ๐Ÿ“š Documentation
192
+ - Updated `README.md`, config examples to include `UE_PROJECT_PATH`
193
+ - Updated `smithery.yaml` and `server.json` manifests
194
+
195
+ ### ๐Ÿ”จ Build
196
+ - Rebuilt Smithery bundle and TypeScript output
197
+
198
+ ### ๐Ÿ› Fixed
199
+ - Smithery UI blank `ueHost` field by defining default in runtime schema
200
+
201
+ ---
202
+
203
+ ## ๐Ÿท๏ธ [0.4.4] - 2025-09-28
204
+
205
+ ### โœจ Improvements
206
+
207
+ - ๐Ÿค **Client Elicitation Helper** - Added support for Cursor, VS Code, Claude Desktop, and other MCP clients
208
+ - ๐Ÿ“Š **Consistent RESULT Parsing** - Handles JSON5 and legacy Python literals across all tools
209
+ - ๐Ÿ”’ **Safe Output Stringification** - Robust handling of circular references and complex objects
210
+ - ๐Ÿ” **Enhanced Logging** - Improved validation messages for easier debugging
211
+
212
+ ---
213
+
214
+ ## ๐Ÿท๏ธ [0.4.0] - 2025-09-20
215
+
216
+ > **Major Release** - Consolidated Tools Mode
217
+
218
+ ### โœจ Improvements
219
+
220
+ - ๐ŸŽฏ **Consolidated Tools Mode Exclusively** - Removed legacy mode, all tools now use unified handler system
221
+ - ๐Ÿงน **Simplified Tool Handlers** - Removed deprecated code paths and inline plugin validation
222
+ - ๐Ÿ“ **Enhanced Error Handling** - Better error messages and recovery mechanisms
223
+
224
+ ### ๐Ÿ”ง Quality & Maintenance
225
+
226
+ - โšก Reduced resource usage by optimizing tool handlers
227
+ - ๐Ÿงน Cleanup of deprecated environment variables
228
+
229
+ ---
230
+
231
+ ## ๐Ÿท๏ธ [0.3.1] - 2025-09-19
232
+
233
+ > **BREAKING:** Connection behavior is now on-demand
234
+
235
+ ### ๐Ÿ—๏ธ Architecture
236
+
237
+ - ๐Ÿ”„ **On-Demand Connection** - Shifted to intelligent on-demand connection model
238
+ - ๐Ÿšซ **No Background Processes** - Eliminated persistent background connections
239
+
240
+ ### โšก Performance
241
+
242
+ - Reduced resource usage and eliminated background processes
243
+ - Optimized connection state management
244
+
245
+ ### ๐Ÿ›ก๏ธ Reliability
246
+
247
+ - Improved error handling and connection state management
248
+ - Better recovery from connection failures
249
+
250
+ ---
251
+
252
+ ## ๐Ÿท๏ธ [0.3.0] - 2025-09-17
253
+
254
+ > ๐ŸŽ‰ **Initial Public Release**
255
+
256
+ ### โœจ Features
257
+
258
+ - ๐ŸŽฎ **13 Consolidated Tools** - Full suite of Unreal Engine automation tools
259
+ - ๐Ÿ“ **Normalized Asset Listing** - Auto-map `/Content` and `/Game` paths
260
+ - ๐Ÿ”๏ธ **Landscape Creation** - Returns real UE/Python response data
261
+ - ๐Ÿ“ **Action-Oriented Descriptions** - Enhanced tool documentation with usage examples
262
+
263
+ ### ๐Ÿ”ง Quality & Maintenance
264
+
265
+ - Server version 0.3.0 with clarified 13-tool mode
266
+ - Comprehensive documentation and examples
267
+ - Lint error fixes and code style cleanup
268
+
269
+ ---
270
+
271
+ <div align="center">
272
+
273
+ ### ๐Ÿ”— Links
274
+
275
+ [![GitHub](https://img.shields.io/badge/GitHub-Repository-181717?style=for-the-badge&logo=github)](https://github.com/ChiR24/Unreal_mcp)
276
+ [![npm](https://img.shields.io/badge/npm-Package-CB3837?style=for-the-badge&logo=npm)](https://www.npmjs.com/package/unreal-engine-mcp-server)
277
+ [![UE5](https://img.shields.io/badge/Unreal-5.6%20|%205.7-0E1128?style=for-the-badge&logo=unrealengine)](https://www.unrealengine.com/)
278
+
279
+ </div>