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.
- package/.env.example +26 -0
- package/.env.production +38 -7
- package/.eslintrc.json +0 -54
- package/.eslintrc.override.json +8 -0
- package/.github/ISSUE_TEMPLATE/bug_report.yml +94 -0
- package/.github/ISSUE_TEMPLATE/config.yml +8 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +56 -0
- package/.github/copilot-instructions.md +478 -45
- package/.github/dependabot.yml +19 -0
- package/.github/labeler.yml +24 -0
- package/.github/labels.yml +70 -0
- package/.github/pull_request_template.md +42 -0
- package/.github/release-drafter.yml +148 -0
- package/.github/workflows/auto-merge.yml +38 -0
- package/.github/workflows/ci.yml +38 -0
- package/.github/workflows/dependency-review.yml +17 -0
- package/.github/workflows/gemini-issue-triage.yml +172 -0
- package/.github/workflows/greetings.yml +23 -0
- package/.github/workflows/labeler.yml +16 -0
- package/.github/workflows/links.yml +80 -0
- package/.github/workflows/pr-size-labeler.yml +137 -0
- package/.github/workflows/publish-mcp.yml +12 -7
- package/.github/workflows/release-drafter.yml +23 -0
- package/.github/workflows/release.yml +112 -0
- package/.github/workflows/semantic-pull-request.yml +35 -0
- package/.github/workflows/smoke-test.yml +36 -0
- package/.github/workflows/stale.yml +28 -0
- package/CHANGELOG.md +269 -22
- package/CONTRIBUTING.md +140 -0
- package/README.md +166 -72
- package/claude_desktop_config_example.json +7 -6
- package/dist/automation/bridge.d.ts +50 -0
- package/dist/automation/bridge.js +452 -0
- package/dist/automation/connection-manager.d.ts +23 -0
- package/dist/automation/connection-manager.js +107 -0
- package/dist/automation/handshake.d.ts +11 -0
- package/dist/automation/handshake.js +89 -0
- package/dist/automation/index.d.ts +3 -0
- package/dist/automation/index.js +3 -0
- package/dist/automation/message-handler.d.ts +12 -0
- package/dist/automation/message-handler.js +149 -0
- package/dist/automation/request-tracker.d.ts +25 -0
- package/dist/automation/request-tracker.js +98 -0
- package/dist/automation/types.d.ts +130 -0
- package/dist/automation/types.js +2 -0
- package/dist/cli.js +32 -5
- package/dist/config.d.ts +27 -0
- package/dist/config.js +60 -0
- package/dist/constants.d.ts +12 -0
- package/dist/constants.js +12 -0
- package/dist/graphql/resolvers.d.ts +268 -0
- package/dist/graphql/resolvers.js +743 -0
- package/dist/graphql/schema.d.ts +5 -0
- package/dist/graphql/schema.js +437 -0
- package/dist/graphql/server.d.ts +26 -0
- package/dist/graphql/server.js +115 -0
- package/dist/graphql/types.d.ts +7 -0
- package/dist/graphql/types.js +2 -0
- package/dist/handlers/resource-handlers.d.ts +20 -0
- package/dist/handlers/resource-handlers.js +180 -0
- package/dist/index.d.ts +31 -18
- package/dist/index.js +119 -604
- package/dist/prompts/index.js +4 -4
- package/dist/resources/actors.d.ts +17 -12
- package/dist/resources/actors.js +56 -76
- package/dist/resources/assets.d.ts +6 -14
- package/dist/resources/assets.js +115 -147
- package/dist/resources/levels.d.ts +13 -13
- package/dist/resources/levels.js +25 -34
- package/dist/server/resource-registry.d.ts +20 -0
- package/dist/server/resource-registry.js +37 -0
- package/dist/server/tool-registry.d.ts +23 -0
- package/dist/server/tool-registry.js +322 -0
- package/dist/server-setup.d.ts +21 -0
- package/dist/server-setup.js +111 -0
- package/dist/services/health-monitor.d.ts +34 -0
- package/dist/services/health-monitor.js +105 -0
- package/dist/services/metrics-server.d.ts +11 -0
- package/dist/services/metrics-server.js +105 -0
- package/dist/tools/actors.d.ts +147 -9
- package/dist/tools/actors.js +350 -311
- package/dist/tools/animation.d.ts +135 -4
- package/dist/tools/animation.js +510 -411
- package/dist/tools/assets.d.ts +117 -19
- package/dist/tools/assets.js +259 -284
- package/dist/tools/audio.d.ts +102 -42
- package/dist/tools/audio.js +272 -685
- package/dist/tools/base-tool.d.ts +17 -0
- package/dist/tools/base-tool.js +46 -0
- package/dist/tools/behavior-tree.d.ts +94 -0
- package/dist/tools/behavior-tree.js +39 -0
- package/dist/tools/blueprint/helpers.d.ts +29 -0
- package/dist/tools/blueprint/helpers.js +182 -0
- package/dist/tools/blueprint.d.ts +228 -118
- package/dist/tools/blueprint.js +685 -832
- package/dist/tools/consolidated-tool-definitions.d.ts +5475 -1627
- package/dist/tools/consolidated-tool-definitions.js +829 -482
- package/dist/tools/consolidated-tool-handlers.d.ts +2 -1
- package/dist/tools/consolidated-tool-handlers.js +211 -1009
- package/dist/tools/debug.d.ts +143 -85
- package/dist/tools/debug.js +234 -180
- package/dist/tools/dynamic-handler-registry.d.ts +11 -0
- package/dist/tools/dynamic-handler-registry.js +101 -0
- package/dist/tools/editor.d.ts +139 -18
- package/dist/tools/editor.js +239 -244
- package/dist/tools/engine.d.ts +10 -4
- package/dist/tools/engine.js +13 -5
- package/dist/tools/environment.d.ts +36 -0
- package/dist/tools/environment.js +267 -0
- package/dist/tools/foliage.d.ts +105 -14
- package/dist/tools/foliage.js +219 -331
- package/dist/tools/handlers/actor-handlers.d.ts +3 -0
- package/dist/tools/handlers/actor-handlers.js +232 -0
- package/dist/tools/handlers/animation-handlers.d.ts +3 -0
- package/dist/tools/handlers/animation-handlers.js +185 -0
- package/dist/tools/handlers/argument-helper.d.ts +16 -0
- package/dist/tools/handlers/argument-helper.js +80 -0
- package/dist/tools/handlers/asset-handlers.d.ts +3 -0
- package/dist/tools/handlers/asset-handlers.js +496 -0
- package/dist/tools/handlers/audio-handlers.d.ts +3 -0
- package/dist/tools/handlers/audio-handlers.js +166 -0
- package/dist/tools/handlers/blueprint-handlers.d.ts +4 -0
- package/dist/tools/handlers/blueprint-handlers.js +358 -0
- package/dist/tools/handlers/common-handlers.d.ts +14 -0
- package/dist/tools/handlers/common-handlers.js +56 -0
- package/dist/tools/handlers/editor-handlers.d.ts +3 -0
- package/dist/tools/handlers/editor-handlers.js +119 -0
- package/dist/tools/handlers/effect-handlers.d.ts +3 -0
- package/dist/tools/handlers/effect-handlers.js +171 -0
- package/dist/tools/handlers/environment-handlers.d.ts +3 -0
- package/dist/tools/handlers/environment-handlers.js +170 -0
- package/dist/tools/handlers/graph-handlers.d.ts +3 -0
- package/dist/tools/handlers/graph-handlers.js +90 -0
- package/dist/tools/handlers/input-handlers.d.ts +3 -0
- package/dist/tools/handlers/input-handlers.js +21 -0
- package/dist/tools/handlers/inspect-handlers.d.ts +3 -0
- package/dist/tools/handlers/inspect-handlers.js +383 -0
- package/dist/tools/handlers/level-handlers.d.ts +3 -0
- package/dist/tools/handlers/level-handlers.js +237 -0
- package/dist/tools/handlers/lighting-handlers.d.ts +3 -0
- package/dist/tools/handlers/lighting-handlers.js +144 -0
- package/dist/tools/handlers/performance-handlers.d.ts +3 -0
- package/dist/tools/handlers/performance-handlers.js +130 -0
- package/dist/tools/handlers/pipeline-handlers.d.ts +3 -0
- package/dist/tools/handlers/pipeline-handlers.js +110 -0
- package/dist/tools/handlers/sequence-handlers.d.ts +3 -0
- package/dist/tools/handlers/sequence-handlers.js +376 -0
- package/dist/tools/handlers/system-handlers.d.ts +4 -0
- package/dist/tools/handlers/system-handlers.js +506 -0
- package/dist/tools/input.d.ts +19 -0
- package/dist/tools/input.js +89 -0
- package/dist/tools/introspection.d.ts +103 -40
- package/dist/tools/introspection.js +425 -568
- package/dist/tools/landscape.d.ts +97 -36
- package/dist/tools/landscape.js +280 -409
- package/dist/tools/level.d.ts +130 -10
- package/dist/tools/level.js +639 -675
- package/dist/tools/lighting.d.ts +77 -38
- package/dist/tools/lighting.js +441 -943
- package/dist/tools/logs.d.ts +45 -0
- package/dist/tools/logs.js +210 -0
- package/dist/tools/materials.d.ts +91 -24
- package/dist/tools/materials.js +190 -118
- package/dist/tools/niagara.d.ts +149 -39
- package/dist/tools/niagara.js +232 -182
- package/dist/tools/performance.d.ts +27 -12
- package/dist/tools/performance.js +204 -122
- package/dist/tools/physics.d.ts +32 -77
- package/dist/tools/physics.js +171 -582
- package/dist/tools/property-dictionary.d.ts +13 -0
- package/dist/tools/property-dictionary.js +82 -0
- package/dist/tools/sequence.d.ts +73 -48
- package/dist/tools/sequence.js +196 -748
- package/dist/tools/tool-definition-utils.d.ts +59 -0
- package/dist/tools/tool-definition-utils.js +35 -0
- package/dist/tools/ui.d.ts +66 -34
- package/dist/tools/ui.js +134 -214
- package/dist/types/env.d.ts +0 -3
- package/dist/types/env.js +0 -7
- package/dist/types/tool-interfaces.d.ts +898 -0
- package/dist/types/tool-interfaces.js +2 -0
- package/dist/types/tool-types.d.ts +195 -11
- package/dist/types/tool-types.js +0 -4
- package/dist/unreal-bridge.d.ts +24 -131
- package/dist/unreal-bridge.js +364 -1506
- package/dist/utils/command-validator.d.ts +9 -0
- package/dist/utils/command-validator.js +67 -0
- package/dist/utils/elicitation.d.ts +1 -1
- package/dist/utils/elicitation.js +12 -15
- package/dist/utils/error-handler.d.ts +2 -51
- package/dist/utils/error-handler.js +11 -87
- package/dist/utils/ini-reader.d.ts +3 -0
- package/dist/utils/ini-reader.js +69 -0
- package/dist/utils/logger.js +9 -6
- package/dist/utils/normalize.d.ts +3 -0
- package/dist/utils/normalize.js +56 -0
- package/dist/utils/response-factory.d.ts +7 -0
- package/dist/utils/response-factory.js +33 -0
- package/dist/utils/response-validator.d.ts +3 -24
- package/dist/utils/response-validator.js +130 -81
- package/dist/utils/result-helpers.d.ts +4 -5
- package/dist/utils/result-helpers.js +15 -16
- package/dist/utils/safe-json.js +5 -11
- package/dist/utils/unreal-command-queue.d.ts +24 -0
- package/dist/utils/unreal-command-queue.js +120 -0
- package/dist/utils/validation.d.ts +0 -40
- package/dist/utils/validation.js +1 -78
- package/dist/wasm/index.d.ts +70 -0
- package/dist/wasm/index.js +535 -0
- package/docs/GraphQL-API.md +888 -0
- package/docs/Migration-Guide-v0.5.0.md +692 -0
- package/docs/Roadmap.md +53 -0
- package/docs/WebAssembly-Integration.md +628 -0
- package/docs/editor-plugin-extension.md +370 -0
- package/docs/handler-mapping.md +242 -0
- package/docs/native-automation-progress.md +128 -0
- package/docs/testing-guide.md +423 -0
- package/mcp-config-example.json +6 -6
- package/package.json +60 -27
- package/plugins/McpAutomationBridge/Config/FilterPlugin.ini +8 -0
- package/plugins/McpAutomationBridge/McpAutomationBridge.uplugin +64 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/McpAutomationBridge.Build.cs +189 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.cpp +22 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.h +30 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeHelpers.h +1983 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeModule.cpp +72 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSettings.cpp +46 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSubsystem.cpp +581 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AnimationHandlers.cpp +2394 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetQueryHandlers.cpp +300 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetWorkflowHandlers.cpp +2807 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AudioHandlers.cpp +1087 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BehaviorTreeHandlers.cpp +488 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.cpp +643 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.h +31 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintGraphHandlers.cpp +1184 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers.cpp +5652 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers_List.cpp +152 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ControlHandlers.cpp +2614 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_DebugHandlers.cpp +42 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EditorFunctionHandlers.cpp +1237 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EffectHandlers.cpp +1701 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EnvironmentHandlers.cpp +2145 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_FoliageHandlers.cpp +954 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InputHandlers.cpp +209 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InsightsHandlers.cpp +41 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LandscapeHandlers.cpp +1164 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LevelHandlers.cpp +762 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LightingHandlers.cpp +634 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LogHandlers.cpp +136 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_MaterialGraphHandlers.cpp +494 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraGraphHandlers.cpp +278 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraHandlers.cpp +625 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PerformanceHandlers.cpp +401 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PipelineHandlers.cpp +67 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ProcessRequest.cpp +735 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PropertyHandlers.cpp +2634 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_RenderHandlers.cpp +189 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.cpp +917 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.h +39 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequenceHandlers.cpp +2670 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequencerHandlers.cpp +519 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_TestHandlers.cpp +38 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_UiHandlers.cpp +668 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_WorldPartitionHandlers.cpp +346 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.cpp +1330 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.h +149 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpConnectionManager.cpp +783 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSettings.h +115 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSubsystem.h +796 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpConnectionManager.h +117 -0
- package/scripts/check-unreal-connection.mjs +19 -0
- package/scripts/clean-tmp.js +23 -0
- package/scripts/patch-wasm.js +26 -0
- package/scripts/run-all-tests.mjs +131 -0
- package/scripts/smoke-test.ts +94 -0
- package/scripts/sync-mcp-plugin.js +143 -0
- package/scripts/test-no-plugin-alternates.mjs +113 -0
- package/scripts/validate-server.js +46 -0
- package/scripts/verify-automation-bridge.js +200 -0
- package/server.json +57 -21
- package/src/automation/bridge.ts +558 -0
- package/src/automation/connection-manager.ts +130 -0
- package/src/automation/handshake.ts +99 -0
- package/src/automation/index.ts +2 -0
- package/src/automation/message-handler.ts +167 -0
- package/src/automation/request-tracker.ts +123 -0
- package/src/automation/types.ts +107 -0
- package/src/cli.ts +33 -6
- package/src/config.ts +73 -0
- package/src/constants.ts +12 -0
- package/src/graphql/resolvers.ts +1010 -0
- package/src/graphql/schema.ts +452 -0
- package/src/graphql/server.ts +154 -0
- package/src/graphql/types.ts +7 -0
- package/src/handlers/resource-handlers.ts +186 -0
- package/src/index.ts +152 -649
- package/src/prompts/index.ts +4 -4
- package/src/resources/actors.ts +58 -76
- package/src/resources/assets.ts +147 -134
- package/src/resources/levels.ts +28 -33
- package/src/server/resource-registry.ts +47 -0
- package/src/server/tool-registry.ts +354 -0
- package/src/server-setup.ts +148 -0
- package/src/services/health-monitor.ts +132 -0
- package/src/services/metrics-server.ts +142 -0
- package/src/tools/actors.ts +417 -322
- package/src/tools/animation.ts +671 -461
- package/src/tools/assets.ts +353 -289
- package/src/tools/audio.ts +323 -766
- package/src/tools/base-tool.ts +52 -0
- package/src/tools/behavior-tree.ts +45 -0
- package/src/tools/blueprint/helpers.ts +189 -0
- package/src/tools/blueprint.ts +787 -965
- package/src/tools/consolidated-tool-definitions.ts +993 -500
- package/src/tools/consolidated-tool-handlers.ts +272 -1122
- package/src/tools/debug.ts +292 -187
- package/src/tools/dynamic-handler-registry.ts +151 -0
- package/src/tools/editor.ts +309 -246
- package/src/tools/engine.ts +14 -3
- package/src/tools/environment.ts +287 -0
- package/src/tools/foliage.ts +314 -379
- package/src/tools/handlers/actor-handlers.ts +271 -0
- package/src/tools/handlers/animation-handlers.ts +237 -0
- package/src/tools/handlers/argument-helper.ts +142 -0
- package/src/tools/handlers/asset-handlers.ts +532 -0
- package/src/tools/handlers/audio-handlers.ts +194 -0
- package/src/tools/handlers/blueprint-handlers.ts +380 -0
- package/src/tools/handlers/common-handlers.ts +87 -0
- package/src/tools/handlers/editor-handlers.ts +123 -0
- package/src/tools/handlers/effect-handlers.ts +220 -0
- package/src/tools/handlers/environment-handlers.ts +183 -0
- package/src/tools/handlers/graph-handlers.ts +116 -0
- package/src/tools/handlers/input-handlers.ts +28 -0
- package/src/tools/handlers/inspect-handlers.ts +450 -0
- package/src/tools/handlers/level-handlers.ts +252 -0
- package/src/tools/handlers/lighting-handlers.ts +147 -0
- package/src/tools/handlers/performance-handlers.ts +132 -0
- package/src/tools/handlers/pipeline-handlers.ts +127 -0
- package/src/tools/handlers/sequence-handlers.ts +415 -0
- package/src/tools/handlers/system-handlers.ts +564 -0
- package/src/tools/input.ts +101 -0
- package/src/tools/introspection.ts +493 -584
- package/src/tools/landscape.ts +394 -489
- package/src/tools/level.ts +752 -694
- package/src/tools/lighting.ts +583 -984
- package/src/tools/logs.ts +219 -0
- package/src/tools/materials.ts +231 -121
- package/src/tools/niagara.ts +293 -168
- package/src/tools/performance.ts +320 -168
- package/src/tools/physics.ts +268 -613
- package/src/tools/property-dictionary.ts +98 -0
- package/src/tools/sequence.ts +255 -815
- package/src/tools/tool-definition-utils.ts +35 -0
- package/src/tools/ui.ts +207 -283
- package/src/types/env.ts +0 -10
- package/src/types/tool-interfaces.ts +250 -0
- package/src/types/tool-types.ts +250 -13
- package/src/unreal-bridge.ts +460 -1550
- package/src/utils/command-validator.ts +75 -0
- package/src/utils/elicitation.ts +10 -7
- package/src/utils/error-handler.ts +14 -90
- package/src/utils/ini-reader.ts +86 -0
- package/src/utils/logger.ts +8 -3
- package/src/utils/normalize.ts +60 -0
- package/src/utils/response-factory.ts +39 -0
- package/src/utils/response-validator.ts +176 -56
- package/src/utils/result-helpers.ts +21 -19
- package/src/utils/safe-json.ts +14 -11
- package/src/utils/unreal-command-queue.ts +152 -0
- package/src/utils/validation.ts +4 -1
- package/src/wasm/index.ts +838 -0
- package/test-server.mjs +100 -0
- package/tests/run-unreal-tool-tests.mjs +242 -14
- package/tests/test-animation.mjs +44 -0
- package/tests/test-asset-advanced.mjs +82 -0
- package/tests/test-asset-errors.mjs +35 -0
- package/tests/test-audio.mjs +219 -0
- package/tests/test-automation-timeouts.mjs +98 -0
- package/tests/test-behavior-tree.mjs +261 -0
- package/tests/test-blueprint-events.mjs +35 -0
- package/tests/test-blueprint-graph.mjs +79 -0
- package/tests/test-blueprint.mjs +577 -0
- package/tests/test-client-mode.mjs +86 -0
- package/tests/test-console-command.mjs +56 -0
- package/tests/test-control-actor.mjs +425 -0
- package/tests/test-control-editor.mjs +80 -0
- package/tests/test-extra-tools.mjs +38 -0
- package/tests/test-graphql.mjs +322 -0
- package/tests/test-inspect.mjs +72 -0
- package/tests/test-landscape.mjs +60 -0
- package/tests/test-manage-asset.mjs +438 -0
- package/tests/test-manage-level.mjs +70 -0
- package/tests/test-materials.mjs +356 -0
- package/tests/test-niagara.mjs +185 -0
- package/tests/test-no-inline-python.mjs +122 -0
- package/tests/test-plugin-handshake.mjs +82 -0
- package/tests/test-render.mjs +33 -0
- package/tests/test-runner.mjs +933 -0
- package/tests/test-search-assets.mjs +66 -0
- package/tests/test-sequence.mjs +68 -0
- package/tests/test-system.mjs +57 -0
- package/tests/test-wasm.mjs +193 -0
- package/tests/test-world-partition.mjs +215 -0
- package/tsconfig.json +3 -3
- package/wasm/Cargo.lock +363 -0
- package/wasm/Cargo.toml +42 -0
- package/wasm/LICENSE +21 -0
- package/wasm/README.md +253 -0
- package/wasm/src/dependency_resolver.rs +377 -0
- package/wasm/src/lib.rs +153 -0
- package/wasm/src/property_parser.rs +271 -0
- package/wasm/src/transform_math.rs +396 -0
- package/wasm/tests/integration.rs +109 -0
- package/.github/workflows/smithery-build.yml +0 -29
- package/dist/tools/build_environment_advanced.d.ts +0 -65
- package/dist/tools/build_environment_advanced.js +0 -633
- package/dist/tools/rc.d.ts +0 -110
- package/dist/tools/rc.js +0 -437
- package/dist/tools/visual.d.ts +0 -40
- package/dist/tools/visual.js +0 -282
- package/dist/utils/http.d.ts +0 -6
- package/dist/utils/http.js +0 -151
- package/dist/utils/python-output.d.ts +0 -18
- package/dist/utils/python-output.js +0 -290
- package/dist/utils/python.d.ts +0 -2
- package/dist/utils/python.js +0 -4
- package/dist/utils/stdio-redirect.d.ts +0 -2
- package/dist/utils/stdio-redirect.js +0 -20
- package/docs/unreal-tool-test-cases.md +0 -572
- package/smithery.yaml +0 -29
- package/src/tools/build_environment_advanced.ts +0 -732
- package/src/tools/rc.ts +0 -515
- package/src/tools/visual.ts +0 -281
- package/src/utils/http.ts +0 -187
- package/src/utils/python-output.ts +0 -351
- package/src/utils/python.ts +0 -3
- package/src/utils/stdio-redirect.ts +0 -18
|
@@ -1,45 +1,478 @@
|
|
|
1
|
-
# Unreal MCP
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
- `
|
|
34
|
-
- `
|
|
35
|
-
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
|
|
45
|
-
|
|
1
|
+
# Unreal MCP โ AI Agent Quick Guide (for AI coding agents)
|
|
2
|
+
|
|
3
|
+
**Two-process architecture**: Node.js MCP server (`src/`) โ Native C++ UE Editor plugin (`Plugins/McpAutomationBridge/Source/`)
|
|
4
|
+
|
|
5
|
+
**Data flow**: JSON payloads โ `sendAutomationRequest(action, params)` (TS) โ WebSocket โ `UMcpAutomationBridgeSubsystem::ProcessAutomationRequest()` (C++) โ Domain-specific `*Handlers.cpp` (native UE subsystems). Uses `FJsonObjectConverter::JsonObjectToUStruct()` + `FProperty` for typed marshaling.
|
|
6
|
+
|
|
7
|
+
## ๐ Quickstart Checklist
|
|
8
|
+
|
|
9
|
+
### Prerequisites
|
|
10
|
+
- **Enable UE Plugins**: MCP Automation Bridge, Editor Scripting Utilities
|
|
11
|
+
- **Required Plugins**: Sequencer, Level Sequence Editor, Control Rig, Subobject Data Interface (UE 5.7+)
|
|
12
|
+
|
|
13
|
+
### Setup Commands
|
|
14
|
+
```bash
|
|
15
|
+
# Sync plugin to Unreal project
|
|
16
|
+
npm run automation:sync -- --project "X:/MyProject/Plugins"
|
|
17
|
+
|
|
18
|
+
# Verify plugin installation
|
|
19
|
+
npm run automation:verify -- --project "X:/MyProject/Plugins"
|
|
20
|
+
|
|
21
|
+
# Start development server (auto-connects on demand)
|
|
22
|
+
npm run dev
|
|
23
|
+
|
|
24
|
+
# Build with WASM optimization (5-8x performance)
|
|
25
|
+
npm run build:wasm
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## ๐บ๏ธ Architecture Overview
|
|
29
|
+
|
|
30
|
+
### Core Components
|
|
31
|
+
|
|
32
|
+
**Node.js Server (`src/`)**
|
|
33
|
+
- `src/index.ts`: MCP server setup, tool registration, WASM initialization
|
|
34
|
+
- `src/unreal-bridge.ts`: Connection management, command throttling, safety validation
|
|
35
|
+
- `src/automation/bridge.ts`: WebSocket client with handshake/reconnect logic
|
|
36
|
+
- `src/tools/consolidated-*.ts`: 17 tool dispatchers with response validation
|
|
37
|
+
- `src/wasm/index.ts`: WebAssembly integration (JSON parsing, transform math)
|
|
38
|
+
|
|
39
|
+
**C++ Plugin (`Plugins/McpAutomationBridge/Source/McpAutomationBridge/`)**
|
|
40
|
+
- `Private/McpAutomationBridgeSubsystem.cpp`: WebSocket server, request routing
|
|
41
|
+
- `Private/McpBridgeWebSocket.cpp/h`: Custom WebSocket with protocol negotiation
|
|
42
|
+
- `Private/McpAutomationBridgeHelpers.h`: JSONโUStruct conversion, class resolution
|
|
43
|
+
- `Private/*Handlers.cpp` (18 files): Domain-specific implementations
|
|
44
|
+
|
|
45
|
+
### Communication Protocol
|
|
46
|
+
- **Transport**: WebSocket (`ws://127.0.0.1:8091`)
|
|
47
|
+
- **Message format**: `{type: "automation_request", requestId: string, action: string, payload: object}`
|
|
48
|
+
- **Response format**: `{success: boolean, message?: string, error?: string, data?: object}`
|
|
49
|
+
- **Handshake**: Capability token exchange with metadata
|
|
50
|
+
- **Heartbeat**: 15s interval for connection health
|
|
51
|
+
|
|
52
|
+
## ๐ ๏ธ Developer Workflows
|
|
53
|
+
|
|
54
|
+
### Build & Test
|
|
55
|
+
```bash
|
|
56
|
+
# Full build (TypeScript + WASM)
|
|
57
|
+
npm run build
|
|
58
|
+
|
|
59
|
+
# TypeScript only (faster iteration)
|
|
60
|
+
npm run build:core
|
|
61
|
+
|
|
62
|
+
# Run specific tool tests
|
|
63
|
+
npm run test:manage_asset
|
|
64
|
+
npm run test:control_actor
|
|
65
|
+
npm run test:blueprint
|
|
66
|
+
|
|
67
|
+
# Run all tests
|
|
68
|
+
npm run test
|
|
69
|
+
|
|
70
|
+
# Lint (TypeScript, C++, C#)
|
|
71
|
+
npm run lint
|
|
72
|
+
npm run lint:cpp
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Debugging
|
|
76
|
+
```bash
|
|
77
|
+
# Check WebSocket connections
|
|
78
|
+
netstat -ano | findstr :8091
|
|
79
|
+
|
|
80
|
+
# Clean plugin build artifacts
|
|
81
|
+
rm -r Plugins/McpAutomationBridge/{Binaries,Intermediate}
|
|
82
|
+
|
|
83
|
+
# Set debug logging
|
|
84
|
+
LOG_LEVEL=debug npm run dev
|
|
85
|
+
|
|
86
|
+
# View MCP resources in Unreal
|
|
87
|
+
ue://health # Metrics dashboard
|
|
88
|
+
ue://automation-bridge # Connection status
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## ๐ Critical Patterns & Conventions
|
|
92
|
+
|
|
93
|
+
### 1. Two-Step Tool Implementation
|
|
94
|
+
**C++ Handler** โ **TypeScript Wrapper** โ **Consolidated Router**
|
|
95
|
+
|
|
96
|
+
```cpp
|
|
97
|
+
// In McpAutomationBridgeSubsystem.cpp
|
|
98
|
+
if (Action == TEXT("create_material"))
|
|
99
|
+
{
|
|
100
|
+
return AssetWorkflowHandlers::CreateMaterial(Payload, Reply);
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
// In src/tools/assets.ts
|
|
106
|
+
const resp = await automationBridge.sendAutomationRequest('create_material', {name, path});
|
|
107
|
+
return responseValidator.wrapResponse('manage_asset', resp);
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### 2. Response Validation
|
|
111
|
+
All tools use `responseValidator.wrapResponse()` with Zod schemas defined in `consolidated-tool-definitions.ts`:
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
// Register schema in src/index.ts
|
|
115
|
+
responseValidator.registerSchema('manage_asset', toolDefs.find(t => t.name === 'manage_asset').outputSchema);
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### 3. Command Safety
|
|
119
|
+
- **Validation**: `CommandValidator.validate()` blocks dangerous commands
|
|
120
|
+
- **Throttling**: `executeThrottledCommand()` with priority queueing
|
|
121
|
+
- **Timeouts**: Default 30s, configurable via `timeoutMs`
|
|
122
|
+
- **Retry logic**: Exponential backoff with `ErrorHandler.retryWithBackoff()`
|
|
123
|
+
|
|
124
|
+
### 4. Path Normalization
|
|
125
|
+
- **UE paths**: `/Content` โ `/Game` (via `normalize.ts`)
|
|
126
|
+
- **Vectors**: `{x,y,z}` or `[x,y,z]` โ `toVec3Tuple()`
|
|
127
|
+
- **Asset references**: Use `ResolveClassByName()` in C++ helpers
|
|
128
|
+
|
|
129
|
+
### 5. WASM Optimization
|
|
130
|
+
Automatic fallback when WASM unavailable:
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
// In src/wasm/index.ts
|
|
134
|
+
try {
|
|
135
|
+
const result = wasmModule.PropertyParser.parse_properties(jsonStr);
|
|
136
|
+
// 5-8x faster
|
|
137
|
+
} catch (error) {
|
|
138
|
+
// Fallback to TypeScript
|
|
139
|
+
return JSON.parse(jsonStr);
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## ๐ง Adding New Tools
|
|
144
|
+
|
|
145
|
+
### Step-by-Step
|
|
146
|
+
|
|
147
|
+
1. **C++ Implementation**
|
|
148
|
+
- Add handler in appropriate `*Handlers.cpp` file
|
|
149
|
+
- Register in `McpAutomationBridgeSubsystem.cpp::ProcessAutomationRequest()`
|
|
150
|
+
- Return `FReply{Success=true, Data=JsonObject}`
|
|
151
|
+
|
|
152
|
+
2. **TypeScript Wrapper**
|
|
153
|
+
- Create or update `src/tools/<domain>.ts`
|
|
154
|
+
- Use `automationBridge.sendAutomationRequest(action, params)`
|
|
155
|
+
- Wrap response with `responseValidator.wrapResponse()`
|
|
156
|
+
|
|
157
|
+
3. **Consolidated Routing**
|
|
158
|
+
- Add to `consolidated-tool-definitions.ts` (input/output schemas)
|
|
159
|
+
- Route in `consolidated-tool-handlers.ts`
|
|
160
|
+
|
|
161
|
+
4. **Testing**
|
|
162
|
+
- Create `tests/test-<domain>.mjs` with Markdown test cases
|
|
163
|
+
- Run with `npm run test:<domain>`
|
|
164
|
+
|
|
165
|
+
### Example: New Material Action
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
// 1. Add to consolidated-tool-definitions.ts
|
|
169
|
+
actions: ['list', 'create_material', 'update_material_shader']
|
|
170
|
+
|
|
171
|
+
// 2. Add properties to inputSchema
|
|
172
|
+
shaderType: { type: 'string', enum: ['DefaultLit', 'Unlit', 'Subsurface'] }
|
|
173
|
+
|
|
174
|
+
// 3. Implement in src/tools/assets.ts
|
|
175
|
+
case 'update_material_shader':
|
|
176
|
+
return automationBridge.sendAutomationRequest('update_material_shader', params);
|
|
177
|
+
|
|
178
|
+
// 4. Add test case in tests/test-materials.mjs
|
|
179
|
+
{
|
|
180
|
+
scenario: "Update material shader type",
|
|
181
|
+
toolName: "manage_asset",
|
|
182
|
+
arguments: {
|
|
183
|
+
action: "update_material_shader",
|
|
184
|
+
assetPath: "/Game/M_MasterMaterial_Test",
|
|
185
|
+
shaderType: "Unlit"
|
|
186
|
+
},
|
|
187
|
+
expected: "success"
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## ๐ฏ Key Integration Points
|
|
192
|
+
|
|
193
|
+
### WebSocket Communication
|
|
194
|
+
- **Client**: `src/automation/bridge.ts` (Node.js)
|
|
195
|
+
- **Server**: `McpBridgeWebSocket.cpp` (Unreal Plugin)
|
|
196
|
+
- **Protocol**: Custom MCP automation protocol with handshake
|
|
197
|
+
- **Reconnect**: Exponential backoff with jitter
|
|
198
|
+
|
|
199
|
+
### Cross-Process Data Flow
|
|
200
|
+
```
|
|
201
|
+
TypeScript Tool Call
|
|
202
|
+
โ
|
|
203
|
+
UnrealBridge.tryConnect()
|
|
204
|
+
โ
|
|
205
|
+
AutomationBridge.sendAutomationRequest()
|
|
206
|
+
โ
|
|
207
|
+
WebSocket โ McpAutomationBridgeSubsystem
|
|
208
|
+
โ
|
|
209
|
+
ProcessAutomationRequest() โ Handler
|
|
210
|
+
โ
|
|
211
|
+
FReply โ JSON โ TypeScript Response
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### Error Handling
|
|
215
|
+
- **Timeouts**: 30s default, configurable per request
|
|
216
|
+
- **Retries**: 3 attempts with exponential backoff
|
|
217
|
+
- **Fallbacks**: Automatic TypeScript when WASM unavailable
|
|
218
|
+
- **Validation**: Zod schemas for all tool I/O
|
|
219
|
+
|
|
220
|
+
## ๐ Performance Optimization
|
|
221
|
+
|
|
222
|
+
### WASM Acceleration (5-8x faster)
|
|
223
|
+
- **JSON parsing**: Property parsing with depth limits
|
|
224
|
+
- **Transform math**: Vector/matrix operations
|
|
225
|
+
- **Dependency resolution**: Asset graph traversal
|
|
226
|
+
- **Topological sorting**: Build order calculation
|
|
227
|
+
|
|
228
|
+
### Command Throttling
|
|
229
|
+
- **Priority queue**: 1-10 priority levels
|
|
230
|
+
- **Minimum delay**: 100ms for stats, 300ms for operations
|
|
231
|
+
- **Concurrency limits**: Configurable max pending requests
|
|
232
|
+
|
|
233
|
+
### Caching
|
|
234
|
+
- **Asset lists**: 10-second TTL
|
|
235
|
+
- **Class resolution**: Memoized lookups
|
|
236
|
+
- **WebSocket connections**: Persistent with reconnect
|
|
237
|
+
|
|
238
|
+
## ๐งช Testing Strategy
|
|
239
|
+
|
|
240
|
+
### Test Structure
|
|
241
|
+
- **Markdown-based**: Human-readable test cases
|
|
242
|
+
- **Domain-specific**: 17 test files covering all tools
|
|
243
|
+
- **Integration-focused**: Real Unreal Engine operations
|
|
244
|
+
|
|
245
|
+
### Running Tests
|
|
246
|
+
```bash
|
|
247
|
+
# Single tool test
|
|
248
|
+
npm run test:manage_asset
|
|
249
|
+
|
|
250
|
+
# All tests
|
|
251
|
+
npm run test
|
|
252
|
+
|
|
253
|
+
# With debug output
|
|
254
|
+
LOG_LEVEL=debug npm run test:blueprint
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### Test Case Format
|
|
258
|
+
```javascript
|
|
259
|
+
{
|
|
260
|
+
scenario: "Descriptive test name",
|
|
261
|
+
toolName: "manage_asset",
|
|
262
|
+
arguments: { action: "create_material", name: "TestMaterial" },
|
|
263
|
+
expected: "success|not_found|error_message"
|
|
264
|
+
}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
## ๐จ Common Pitfalls
|
|
268
|
+
|
|
269
|
+
### 1. Plugin Not Enabled
|
|
270
|
+
**Symptom**: `Automation bridge not connected`
|
|
271
|
+
**Fix**: Enable "MCP Automation Bridge" in UE Editor Plugins
|
|
272
|
+
|
|
273
|
+
### 2. Port Conflicts
|
|
274
|
+
**Symptom**: Connection refused on :8091
|
|
275
|
+
**Fix**: Check `netstat -ano | findstr :8091` and kill conflicting process
|
|
276
|
+
|
|
277
|
+
### 3. WASM Missing
|
|
278
|
+
**Symptom**: Fallback to TypeScript warnings
|
|
279
|
+
**Fix**: Run `npm run build:wasm` or set `WASM_ENABLED=false`
|
|
280
|
+
|
|
281
|
+
### 4. Path Normalization
|
|
282
|
+
**Symptom**: Asset not found errors
|
|
283
|
+
**Fix**: Use `/Game` prefix, not `/Content`
|
|
284
|
+
|
|
285
|
+
### 5. Command Validation
|
|
286
|
+
**Symptom**: "Dangerous command blocked"
|
|
287
|
+
**Fix**: Use safe alternatives or whitelist in `CommandValidator`
|
|
288
|
+
|
|
289
|
+
## ๐ Essential References
|
|
290
|
+
|
|
291
|
+
### Key Files
|
|
292
|
+
- `src/constants.ts`: Configuration defaults and timeouts
|
|
293
|
+
- `src/utils/response-validator.ts`: Response schema validation
|
|
294
|
+
- `src/utils/command-validator.ts`: Safety rules and blocked commands
|
|
295
|
+
- `src/utils/unreal-command-queue.ts`: Throttling implementation
|
|
296
|
+
|
|
297
|
+
### Documentation
|
|
298
|
+
- `docs/handler-mapping.md`: TypeScript โ C++ handler mappings
|
|
299
|
+
- `docs/GraphQL-API.md`: Query interface specification
|
|
300
|
+
- `README.md`: Complete setup and usage guide
|
|
301
|
+
|
|
302
|
+
### Debug Resources
|
|
303
|
+
- `ue://health`: Real-time metrics dashboard
|
|
304
|
+
- `ue://automation-bridge`: Connection status and pending requests
|
|
305
|
+
- UE Output Log: Filter for `bridge_ack` and `automation_request`
|
|
306
|
+
|
|
307
|
+
## ๐ Learning Resources
|
|
308
|
+
|
|
309
|
+
### Understanding the Codebase
|
|
310
|
+
1. Start with `src/index.ts` โ `createServer()`
|
|
311
|
+
2. Follow WebSocket flow in `src/automation/bridge.ts`
|
|
312
|
+
3. Examine a simple handler: `McpAutomationBridge_AssetQueryHandlers.cpp`
|
|
313
|
+
4. Study tool implementation: `src/tools/assets.ts`
|
|
314
|
+
5. Review test patterns: `tests/test-manage-asset.mjs`
|
|
315
|
+
|
|
316
|
+
### Recommended Reading Order
|
|
317
|
+
```
|
|
318
|
+
README.md โ docs/handler-mapping.md โ src/index.ts
|
|
319
|
+
โ src/automation/bridge.ts โ src/tools/consolidated-*.ts
|
|
320
|
+
โ Plugins/.../McpAutomationBridgeSubsystem.cpp
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
## ๐ค Contribution Guidelines
|
|
324
|
+
|
|
325
|
+
### Pull Request Requirements
|
|
326
|
+
- **Scope**: Single tool/action per PR
|
|
327
|
+
- **Tests**: Add Markdown test cases
|
|
328
|
+
- **Documentation**: Update `handler-mapping.md` if adding handlers
|
|
329
|
+
- **Validation**: Ensure Zod schemas are comprehensive
|
|
330
|
+
|
|
331
|
+
### Code Style
|
|
332
|
+
- **TypeScript**: Follow ESLint rules (`npm run lint`)
|
|
333
|
+
- **C++**: Use Unreal coding standards
|
|
334
|
+
- **Comments**: Document non-obvious logic and safety considerations
|
|
335
|
+
- **Error handling**: Structured errors with context
|
|
336
|
+
|
|
337
|
+
### Review Checklist
|
|
338
|
+
- [ ] Tool works with and without WASM
|
|
339
|
+
- [ ] Response validation schema is complete
|
|
340
|
+
- [ ] Command throttling is appropriate
|
|
341
|
+
- [ ] Error messages are actionable
|
|
342
|
+
- [ ] Test cases cover success and failure paths
|
|
343
|
+
|
|
344
|
+
## ๐ Performance Tuning
|
|
345
|
+
|
|
346
|
+
### Configuration Variables
|
|
347
|
+
```env
|
|
348
|
+
# Connection
|
|
349
|
+
MCP_AUTOMATION_PORT=8091
|
|
350
|
+
MCP_AUTOMATION_REQUEST_TIMEOUT_MS=120000
|
|
351
|
+
|
|
352
|
+
# Performance
|
|
353
|
+
WASM_ENABLED=true
|
|
354
|
+
ASSET_LIST_TTL_MS=10000
|
|
355
|
+
|
|
356
|
+
# Logging
|
|
357
|
+
LOG_LEVEL=info
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
### Optimization Tips
|
|
361
|
+
- **Batch operations**: Use `delete_assets` instead of multiple `delete`
|
|
362
|
+
- **Caching**: Leverage 10s asset cache for repeated queries
|
|
363
|
+
- **Priority**: Set appropriate priority for time-sensitive operations
|
|
364
|
+
- **WASM**: Enable for JSON-heavy and math-intensive operations
|
|
365
|
+
|
|
366
|
+
## ๐ฏ Quick Reference
|
|
367
|
+
|
|
368
|
+
### Most Used Commands
|
|
369
|
+
```bash
|
|
370
|
+
# Development
|
|
371
|
+
npm run dev # Start server with auto-reload
|
|
372
|
+
npm run build # Build TypeScript + WASM
|
|
373
|
+
npm run lint # Check code style
|
|
374
|
+
|
|
375
|
+
# Testing
|
|
376
|
+
npm run test # All tests
|
|
377
|
+
npm run test:blueprint # Specific tool tests
|
|
378
|
+
|
|
379
|
+
# Plugin Management
|
|
380
|
+
npm run automation:sync # Sync to UE project
|
|
381
|
+
npm run automation:verify # Verify installation
|
|
382
|
+
|
|
383
|
+
# Debugging
|
|
384
|
+
LOG_LEVEL=debug npm run dev
|
|
385
|
+
netstat -ano | findstr :8091
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
### Common File Patterns
|
|
389
|
+
```
|
|
390
|
+
src/tools/<domain>.ts # Tool implementations
|
|
391
|
+
src/tools/consolidated-*.ts # Routing and validation
|
|
392
|
+
Plugins/.../*Handlers.cpp # Native C++ handlers
|
|
393
|
+
Tests/test-<domain>.mjs # Test cases
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
## ๐ Troubleshooting
|
|
397
|
+
|
|
398
|
+
### Connection Issues
|
|
399
|
+
```bash
|
|
400
|
+
# Check if plugin is listening
|
|
401
|
+
netstat -ano | findstr :8091
|
|
402
|
+
|
|
403
|
+
# Verify plugin files
|
|
404
|
+
npm run automation:verify -- --project "C:/Path/To/Project"
|
|
405
|
+
|
|
406
|
+
# Clean and rebuild
|
|
407
|
+
rm -r Plugins/McpAutomationBridge/{Binaries,Intermediate}
|
|
408
|
+
npm run build
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
### Performance Problems
|
|
412
|
+
```bash
|
|
413
|
+
# Check WASM status
|
|
414
|
+
curl http://localhost:8090/metrics | grep wasm
|
|
415
|
+
|
|
416
|
+
# Monitor command queue
|
|
417
|
+
LOG_LEVEL=debug npm run dev
|
|
418
|
+
|
|
419
|
+
# Disable WASM for testing
|
|
420
|
+
WASM_ENABLED=false npm run dev
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
### Test Failures
|
|
424
|
+
```bash
|
|
425
|
+
# Run single test with debug
|
|
426
|
+
LOG_LEVEL=debug npm run test:manage_asset
|
|
427
|
+
|
|
428
|
+
# Check Unreal Editor logs
|
|
429
|
+
# Filter for "automation_request" in Output Log
|
|
430
|
+
|
|
431
|
+
# Verify plugin capabilities
|
|
432
|
+
ue://automation-bridge
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
## ๐ Checklist for New Contributors
|
|
436
|
+
|
|
437
|
+
1. [ ] Read `README.md` and this guide
|
|
438
|
+
2. [ ] Set up Unreal Engine project with required plugins
|
|
439
|
+
3. [ ] Run `npm run automation:sync`
|
|
440
|
+
4. [ ] Start server with `npm run dev`
|
|
441
|
+
5. [ ] Verify connection in UE Output Log
|
|
442
|
+
6. [ ] Run tests with `npm run test`
|
|
443
|
+
7. [ ] Explore existing tools and handlers
|
|
444
|
+
8. [ ] Start with small, focused changes
|
|
445
|
+
9. [ ] Add comprehensive test cases
|
|
446
|
+
10. [ ] Document new features in `handler-mapping.md`
|
|
447
|
+
|
|
448
|
+
## ๐ค AI Agent Specifics
|
|
449
|
+
|
|
450
|
+
### Understanding the System
|
|
451
|
+
- **Dual-process**: Node.js โ Unreal Editor plugin communication
|
|
452
|
+
- **Protocol**: Custom WebSocket-based automation protocol
|
|
453
|
+
- **Safety**: Command validation and throttling are mandatory
|
|
454
|
+
- **Performance**: WASM optimization is automatic but optional
|
|
455
|
+
|
|
456
|
+
### Common AI Tasks
|
|
457
|
+
1. **Add new automation**: Follow the two-step implementation pattern
|
|
458
|
+
2. **Fix connection issues**: Check plugin status and ports
|
|
459
|
+
3. **Optimize performance**: Leverage WASM and caching
|
|
460
|
+
4. **Extend functionality**: Add new actions to existing tools
|
|
461
|
+
5. **Debug problems**: Use metrics endpoints and detailed logging
|
|
462
|
+
|
|
463
|
+
### When to Ask for Help
|
|
464
|
+
- Plugin installation issues
|
|
465
|
+
- C++ handler implementation questions
|
|
466
|
+
- WebSocket protocol details
|
|
467
|
+
- Performance optimization strategies
|
|
468
|
+
- Test case design for complex scenarios
|
|
469
|
+
|
|
470
|
+
## ๐ Feedback Request
|
|
471
|
+
|
|
472
|
+
Please provide feedback on:
|
|
473
|
+
1. **Clarity**: Are the workflows and patterns clear?
|
|
474
|
+
2. **Completeness**: Are any critical aspects missing?
|
|
475
|
+
3. **Accuracy**: Are the examples and commands correct?
|
|
476
|
+
4. **Organization**: Is the information easy to find?
|
|
477
|
+
|
|
478
|
+
Suggest improvements to make this guide more helpful for AI agents working on this codebase!
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
# Maintain dependencies for npm
|
|
4
|
+
- package-ecosystem: "npm"
|
|
5
|
+
directory: "/"
|
|
6
|
+
schedule:
|
|
7
|
+
interval: "daily"
|
|
8
|
+
open-pull-requests-limit: 10
|
|
9
|
+
groups:
|
|
10
|
+
dependencies:
|
|
11
|
+
patterns:
|
|
12
|
+
- "*"
|
|
13
|
+
|
|
14
|
+
# Maintain dependencies for GitHub Actions
|
|
15
|
+
- package-ecosystem: "github-actions"
|
|
16
|
+
directory: "/"
|
|
17
|
+
schedule:
|
|
18
|
+
interval: "daily"
|
|
19
|
+
open-pull-requests-limit: 10
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
area/plugin:
|
|
2
|
+
- changed-files:
|
|
3
|
+
- any-glob-to-any-file: 'Plugins/**/*'
|
|
4
|
+
|
|
5
|
+
area/server:
|
|
6
|
+
- changed-files:
|
|
7
|
+
- any-glob-to-any-file: 'src/**/*'
|
|
8
|
+
- any-glob-to-any-file: 'package.json'
|
|
9
|
+
- any-glob-to-any-file: 'tsconfig.json'
|
|
10
|
+
|
|
11
|
+
area/docs:
|
|
12
|
+
- changed-files:
|
|
13
|
+
- any-glob-to-any-file: '**/*.md'
|
|
14
|
+
- any-glob-to-any-file: 'docs/**/*'
|
|
15
|
+
|
|
16
|
+
area/tools:
|
|
17
|
+
- changed-files:
|
|
18
|
+
- any-glob-to-any-file: '.github/**/*'
|
|
19
|
+
- any-glob-to-any-file: 'scripts/**/*'
|
|
20
|
+
|
|
21
|
+
area/testing:
|
|
22
|
+
- changed-files:
|
|
23
|
+
- any-glob-to-any-file: 'tests/**/*'
|
|
24
|
+
- any-glob-to-any-file: 'test/**/*'
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Repository Labels
|
|
2
|
+
# Run: gh label create "label-name" --description "desc" --color "hex"
|
|
3
|
+
|
|
4
|
+
# Area labels (for issue triage)
|
|
5
|
+
- name: "area/plugin"
|
|
6
|
+
description: "C++ McpAutomationBridge plugin issues"
|
|
7
|
+
color: "1d76db"
|
|
8
|
+
|
|
9
|
+
- name: "area/server"
|
|
10
|
+
description: "Node.js MCP server issues"
|
|
11
|
+
color: "0e8a16"
|
|
12
|
+
|
|
13
|
+
- name: "area/tools"
|
|
14
|
+
description: "Tool implementation issues"
|
|
15
|
+
color: "5319e7"
|
|
16
|
+
|
|
17
|
+
- name: "area/testing"
|
|
18
|
+
description: "Test infrastructure issues"
|
|
19
|
+
color: "fbca04"
|
|
20
|
+
|
|
21
|
+
- name: "area/docs"
|
|
22
|
+
description: "Documentation issues"
|
|
23
|
+
color: "0075ca"
|
|
24
|
+
|
|
25
|
+
# Type labels
|
|
26
|
+
- name: "type/bug"
|
|
27
|
+
description: "Bug reports"
|
|
28
|
+
color: "d73a4a"
|
|
29
|
+
|
|
30
|
+
- name: "type/enhancement"
|
|
31
|
+
description: "Feature requests"
|
|
32
|
+
color: "a2eeef"
|
|
33
|
+
|
|
34
|
+
- name: "type/question"
|
|
35
|
+
description: "Questions or support"
|
|
36
|
+
color: "d876e3"
|
|
37
|
+
|
|
38
|
+
# Size labels (for PRs)
|
|
39
|
+
- name: "size/xs"
|
|
40
|
+
description: "Extra small PR (<10 lines)"
|
|
41
|
+
color: "3CBF00"
|
|
42
|
+
|
|
43
|
+
- name: "size/s"
|
|
44
|
+
description: "Small PR (10-50 lines)"
|
|
45
|
+
color: "5D9801"
|
|
46
|
+
|
|
47
|
+
- name: "size/m"
|
|
48
|
+
description: "Medium PR (51-200 lines)"
|
|
49
|
+
color: "7F7203"
|
|
50
|
+
|
|
51
|
+
- name: "size/l"
|
|
52
|
+
description: "Large PR (201-1000 lines)"
|
|
53
|
+
color: "A14C05"
|
|
54
|
+
|
|
55
|
+
- name: "size/xl"
|
|
56
|
+
description: "Extra large PR (1000+ lines)"
|
|
57
|
+
color: "C32607"
|
|
58
|
+
|
|
59
|
+
# Status labels
|
|
60
|
+
- name: "needs-triage"
|
|
61
|
+
description: "Needs triage by maintainers"
|
|
62
|
+
color: "ededed"
|
|
63
|
+
|
|
64
|
+
- name: "stale"
|
|
65
|
+
description: "Inactive issue/PR"
|
|
66
|
+
color: "fef2c0"
|
|
67
|
+
|
|
68
|
+
- name: "pinned"
|
|
69
|
+
description: "Exempt from stale bot"
|
|
70
|
+
color: "006b75"
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
## Summary
|
|
2
|
+
|
|
3
|
+
<!-- Concisely describe what this PR changes and why. Focus on impact. -->
|
|
4
|
+
|
|
5
|
+
## Changes
|
|
6
|
+
|
|
7
|
+
<!-- List the key changes made in this PR. -->
|
|
8
|
+
|
|
9
|
+
-
|
|
10
|
+
|
|
11
|
+
## Related Issues
|
|
12
|
+
|
|
13
|
+
<!-- Use keywords to auto-close issues (Closes #123, Fixes #456).
|
|
14
|
+
If only related, use: Related to #123 -->
|
|
15
|
+
|
|
16
|
+
## Type of Change
|
|
17
|
+
|
|
18
|
+
<!-- Check all that apply -->
|
|
19
|
+
|
|
20
|
+
- [ ] ๐ Bug fix (non-breaking change that fixes an issue)
|
|
21
|
+
- [ ] โจ New feature (non-breaking change that adds functionality)
|
|
22
|
+
- [ ] ๐ฅ Breaking change (fix or feature that would cause existing functionality to change)
|
|
23
|
+
- [ ] ๐ Documentation update
|
|
24
|
+
- [ ] ๐ง Configuration/build change
|
|
25
|
+
- [ ] โป๏ธ Refactoring (no functional changes)
|
|
26
|
+
- [ ] ๐งช Test addition/update
|
|
27
|
+
|
|
28
|
+
## Testing
|
|
29
|
+
|
|
30
|
+
<!-- Describe how to test these changes -->
|
|
31
|
+
|
|
32
|
+
- [ ] Tested with Unreal Engine (version: ___)
|
|
33
|
+
- [ ] Tested MCP client integration (client: ___)
|
|
34
|
+
- [ ] Added/updated tests
|
|
35
|
+
|
|
36
|
+
## Pre-Merge Checklist
|
|
37
|
+
|
|
38
|
+
- [ ] Code follows project style guidelines
|
|
39
|
+
- [ ] Self-reviewed the code
|
|
40
|
+
- [ ] Updated relevant documentation (if needed)
|
|
41
|
+
- [ ] Added/updated tests (if applicable)
|
|
42
|
+
- [ ] CI passes
|