unreal-engine-mcp-server 0.3.1 → 0.4.3

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 (144) hide show
  1. package/.env.production +1 -1
  2. package/.github/copilot-instructions.md +45 -0
  3. package/.github/workflows/publish-mcp.yml +1 -1
  4. package/README.md +22 -7
  5. package/dist/index.js +137 -46
  6. package/dist/prompts/index.d.ts +10 -3
  7. package/dist/prompts/index.js +186 -7
  8. package/dist/resources/actors.d.ts +19 -1
  9. package/dist/resources/actors.js +55 -64
  10. package/dist/resources/assets.d.ts +3 -2
  11. package/dist/resources/assets.js +117 -109
  12. package/dist/resources/levels.d.ts +21 -3
  13. package/dist/resources/levels.js +31 -56
  14. package/dist/tools/actors.d.ts +3 -14
  15. package/dist/tools/actors.js +246 -302
  16. package/dist/tools/animation.d.ts +57 -102
  17. package/dist/tools/animation.js +429 -450
  18. package/dist/tools/assets.d.ts +13 -2
  19. package/dist/tools/assets.js +58 -46
  20. package/dist/tools/audio.d.ts +22 -13
  21. package/dist/tools/audio.js +467 -121
  22. package/dist/tools/blueprint.d.ts +32 -13
  23. package/dist/tools/blueprint.js +699 -448
  24. package/dist/tools/build_environment_advanced.d.ts +0 -1
  25. package/dist/tools/build_environment_advanced.js +236 -87
  26. package/dist/tools/consolidated-tool-definitions.d.ts +232 -15
  27. package/dist/tools/consolidated-tool-definitions.js +124 -255
  28. package/dist/tools/consolidated-tool-handlers.js +749 -766
  29. package/dist/tools/debug.d.ts +72 -10
  30. package/dist/tools/debug.js +170 -36
  31. package/dist/tools/editor.d.ts +9 -2
  32. package/dist/tools/editor.js +30 -44
  33. package/dist/tools/foliage.d.ts +34 -15
  34. package/dist/tools/foliage.js +97 -107
  35. package/dist/tools/introspection.js +19 -21
  36. package/dist/tools/landscape.d.ts +1 -2
  37. package/dist/tools/landscape.js +311 -168
  38. package/dist/tools/level.d.ts +3 -28
  39. package/dist/tools/level.js +642 -192
  40. package/dist/tools/lighting.d.ts +14 -3
  41. package/dist/tools/lighting.js +236 -123
  42. package/dist/tools/materials.d.ts +25 -7
  43. package/dist/tools/materials.js +102 -79
  44. package/dist/tools/niagara.d.ts +10 -12
  45. package/dist/tools/niagara.js +74 -94
  46. package/dist/tools/performance.d.ts +12 -4
  47. package/dist/tools/performance.js +38 -79
  48. package/dist/tools/physics.d.ts +34 -10
  49. package/dist/tools/physics.js +364 -292
  50. package/dist/tools/rc.js +98 -24
  51. package/dist/tools/sequence.d.ts +1 -0
  52. package/dist/tools/sequence.js +146 -24
  53. package/dist/tools/ui.d.ts +31 -4
  54. package/dist/tools/ui.js +83 -66
  55. package/dist/tools/visual.d.ts +11 -0
  56. package/dist/tools/visual.js +245 -30
  57. package/dist/types/tool-types.d.ts +0 -6
  58. package/dist/types/tool-types.js +1 -8
  59. package/dist/unreal-bridge.d.ts +32 -2
  60. package/dist/unreal-bridge.js +621 -127
  61. package/dist/utils/elicitation.d.ts +57 -0
  62. package/dist/utils/elicitation.js +104 -0
  63. package/dist/utils/error-handler.d.ts +0 -33
  64. package/dist/utils/error-handler.js +4 -111
  65. package/dist/utils/http.d.ts +2 -22
  66. package/dist/utils/http.js +12 -75
  67. package/dist/utils/normalize.d.ts +4 -4
  68. package/dist/utils/normalize.js +15 -7
  69. package/dist/utils/python-output.d.ts +18 -0
  70. package/dist/utils/python-output.js +290 -0
  71. package/dist/utils/python.d.ts +2 -0
  72. package/dist/utils/python.js +4 -0
  73. package/dist/utils/response-validator.d.ts +6 -1
  74. package/dist/utils/response-validator.js +66 -13
  75. package/dist/utils/result-helpers.d.ts +27 -0
  76. package/dist/utils/result-helpers.js +147 -0
  77. package/dist/utils/safe-json.d.ts +0 -2
  78. package/dist/utils/safe-json.js +0 -43
  79. package/dist/utils/validation.d.ts +16 -0
  80. package/dist/utils/validation.js +70 -7
  81. package/mcp-config-example.json +2 -2
  82. package/package.json +11 -10
  83. package/server.json +37 -14
  84. package/src/index.ts +146 -50
  85. package/src/prompts/index.ts +211 -13
  86. package/src/resources/actors.ts +59 -44
  87. package/src/resources/assets.ts +123 -102
  88. package/src/resources/levels.ts +37 -47
  89. package/src/tools/actors.ts +269 -313
  90. package/src/tools/animation.ts +556 -539
  91. package/src/tools/assets.ts +59 -45
  92. package/src/tools/audio.ts +507 -113
  93. package/src/tools/blueprint.ts +778 -462
  94. package/src/tools/build_environment_advanced.ts +312 -106
  95. package/src/tools/consolidated-tool-definitions.ts +136 -267
  96. package/src/tools/consolidated-tool-handlers.ts +871 -795
  97. package/src/tools/debug.ts +179 -38
  98. package/src/tools/editor.ts +35 -37
  99. package/src/tools/foliage.ts +110 -104
  100. package/src/tools/introspection.ts +24 -22
  101. package/src/tools/landscape.ts +334 -181
  102. package/src/tools/level.ts +683 -182
  103. package/src/tools/lighting.ts +244 -123
  104. package/src/tools/materials.ts +114 -83
  105. package/src/tools/niagara.ts +87 -81
  106. package/src/tools/performance.ts +49 -88
  107. package/src/tools/physics.ts +393 -299
  108. package/src/tools/rc.ts +103 -25
  109. package/src/tools/sequence.ts +157 -30
  110. package/src/tools/ui.ts +101 -70
  111. package/src/tools/visual.ts +250 -29
  112. package/src/types/tool-types.ts +0 -9
  113. package/src/unreal-bridge.ts +658 -140
  114. package/src/utils/elicitation.ts +129 -0
  115. package/src/utils/error-handler.ts +4 -159
  116. package/src/utils/http.ts +16 -115
  117. package/src/utils/normalize.ts +20 -10
  118. package/src/utils/python-output.ts +351 -0
  119. package/src/utils/python.ts +3 -0
  120. package/src/utils/response-validator.ts +68 -17
  121. package/src/utils/result-helpers.ts +193 -0
  122. package/src/utils/safe-json.ts +0 -50
  123. package/src/utils/validation.ts +94 -7
  124. package/tests/run-unreal-tool-tests.mjs +720 -0
  125. package/tsconfig.json +2 -2
  126. package/dist/python-utils.d.ts +0 -29
  127. package/dist/python-utils.js +0 -54
  128. package/dist/tools/tool-definitions.d.ts +0 -4919
  129. package/dist/tools/tool-definitions.js +0 -1065
  130. package/dist/tools/tool-handlers.d.ts +0 -47
  131. package/dist/tools/tool-handlers.js +0 -863
  132. package/dist/types/index.d.ts +0 -323
  133. package/dist/types/index.js +0 -28
  134. package/dist/utils/cache-manager.d.ts +0 -64
  135. package/dist/utils/cache-manager.js +0 -176
  136. package/dist/utils/errors.d.ts +0 -133
  137. package/dist/utils/errors.js +0 -256
  138. package/src/python/editor_compat.py +0 -181
  139. package/src/python-utils.ts +0 -57
  140. package/src/tools/tool-definitions.ts +0 -1081
  141. package/src/tools/tool-handlers.ts +0 -973
  142. package/src/types/index.ts +0 -414
  143. package/src/utils/cache-manager.ts +0 -213
  144. package/src/utils/errors.ts +0 -312
@@ -4,26 +4,14 @@ export const consolidatedToolDefinitions = [
4
4
  // 1. ASSET MANAGER - Combines asset operations
5
5
  {
6
6
  name: 'manage_asset',
7
- description: `Search, browse, import, and create simple material assets.
8
-
9
- When to use this tool:
10
- - You want to list assets in the project Content directory (use /Game; /Content is auto-mapped).
11
- - You want to import files from disk into the project (e.g., FBX, PNG, WAV, EXR).
12
- - You want to generate a very basic Material asset by name at a path.
13
-
14
- Supported actions:
15
- - list: Returns assets in a folder (recursive behavior is auto-enabled for /Game).
16
- - import: Imports a file into the project at a destination path (e.g., /Game/Folder).
17
- - create_material: Creates a simple Material asset at a path.
18
-
19
- Tips:
20
- - Unreal uses /Game for project content; this server maps /Content → /Game automatically.
21
- - For large projects, listing /Game returns a sample subset for speed; refine to subfolders.
22
-
23
- Examples:
24
- - {"action":"list","directory":"/Game/ThirdPerson"}
25
- - {"action":"import","sourcePath":"C:/Temp/Tree.fbx","destinationPath":"/Game/Environment/Trees"}
26
- - {"action":"create_material","name":"M_Mask","path":"/Game/Materials"}`,
7
+ description: `Asset library utility for browsing, importing, and bootstrapping simple materials.
8
+
9
+ Use it when you need to:
10
+ - explore project content (\u002fContent automatically maps to \u002fGame).
11
+ - import FBX/PNG/WAV/EXR files into the project.
12
+ - spin up a minimal Material asset at a specific path.
13
+
14
+ Supported actions: list, import, create_material.`,
27
15
  inputSchema: {
28
16
  type: 'object',
29
17
  properties: {
@@ -71,35 +59,14 @@ Examples:
71
59
  // 2. ACTOR CONTROL - Combines actor operations
72
60
  {
73
61
  name: 'control_actor',
74
- description: `Spawn, delete, and apply physics to actors in the level.
75
-
76
- When to use this tool:
77
- - Place an actor/mesh, remove an actor, or nudge an actor with a physics force.
78
-
79
- Supported actions:
80
- - spawn
81
- - delete
82
- - apply_force
83
-
84
- Spawning:
85
- - classPath can be a class name (e.g., StaticMeshActor, CameraActor) OR an asset path (e.g., /Engine/BasicShapes/Cube, /Game/Meshes/SM_Rock).
86
- - Asset paths auto-spawn StaticMeshActor with the mesh assigned.
87
-
88
- Deleting:
89
- - Finds actors by label/name (case-insensitive) and deletes matches.
90
-
91
- Apply force:
92
- - Applies a world-space force vector to an actor with physics enabled.
62
+ description: `Viewport actor toolkit for spawning, removing, or nudging actors with physics forces.
93
63
 
94
- Tips:
95
- - classPath accepts classes or asset paths; simple names like Cube auto-resolve to engine assets.
96
- - location/rotation are optional; defaults are used if omitted.
97
- - For delete/apply_force, provide actorName.
64
+ Use it when you need to:
65
+ - drop a class or mesh into the level (classPath accepts names or asset paths).
66
+ - delete actors by label, case-insensitively.
67
+ - push a physics-enabled actor with a world-space force vector.
98
68
 
99
- Examples:
100
- - {"action":"spawn","classPath":"/Engine/BasicShapes/Cube","location":{"x":0,"y":0,"z":100}}
101
- - {"action":"delete","actorName":"Cube_1"}
102
- - {"action":"apply_force","actorName":"PhysicsBox","force":{"x":0,"y":0,"z":5000}}`,
69
+ Supported actions: spawn, delete, apply_force.`,
103
70
  inputSchema: {
104
71
  type: 'object',
105
72
  properties: {
@@ -159,26 +126,14 @@ Examples:
159
126
  // 3. EDITOR CONTROL - Combines editor operations
160
127
  {
161
128
  name: 'control_editor',
162
- description: `Play/Stop PIE, position the editor camera, and switch common view modes.
163
-
164
- When to use this tool:
165
- - Start/stop a PIE session, move the viewport camera, or change viewmode (Lit/Unlit/Wireframe/etc.).
166
-
167
- Supported actions:
168
- - play
169
- - stop
170
- - set_camera
171
- - set_view_mode
172
-
173
- Notes:
174
- - View modes are validated; unsafe modes are blocked.
175
- - Camera accepts location/rotation (optional); values normalized.
176
-
177
- Examples:
178
- - {"action":"play"}
179
- - {"action":"set_camera","location":{"x":0,"y":-600,"z":250},"rotation":{"pitch":0,"yaw":0,"roll":0}}
180
- - {"action":"set_view_mode","viewMode":"Wireframe"}
181
- - {"action":"stop"}`,
129
+ description: `Editor session controls for PIE playback, camera placement, and view modes.
130
+
131
+ Use it when you need to:
132
+ - start or stop Play In Editor.
133
+ - reposition the active viewport camera.
134
+ - switch between Lit/Unlit/Wireframe and other safe view modes.
135
+
136
+ Supported actions: play, stop, set_camera, set_view_mode (with validation).`,
182
137
  inputSchema: {
183
138
  type: 'object',
184
139
  properties: {
@@ -236,28 +191,15 @@ Examples:
236
191
  // 4. LEVEL MANAGER - Combines level and lighting operations
237
192
  {
238
193
  name: 'manage_level',
239
- description: `Load/save/stream levels, create lights, and trigger lighting builds.
240
-
241
- When to use this tool:
242
- - Switch to a level, save the current level, stream sublevels, add a light, or start a lighting build.
243
-
244
- Supported actions:
245
- - load
246
- - save
247
- - stream
248
- - create_light
249
- - build_lighting
250
-
251
- Tips:
252
- - Use /Game paths for levels (e.g., /Game/Maps/Level).
253
- - For streaming, set shouldBeLoaded and shouldBeVisible accordingly.
254
- - For lights, provide lightType and optional location/intensity.
255
-
256
- Examples:
257
- - {"action":"load","levelPath":"/Game/Maps/Lobby"}
258
- - {"action":"stream","levelName":"Sublevel_A","shouldBeLoaded":true,"shouldBeVisible":true}
259
- - {"action":"create_light","lightType":"Directional","name":"KeyLight","intensity":5.0}
260
- - {"action":"build_lighting","quality":"High"}`,
194
+ description: `Level management helper for loading/saving, streaming, light creation, and lighting builds.
195
+
196
+ Use it when you need to:
197
+ - open or save a level by path.
198
+ - toggle streaming sublevels on/off.
199
+ - spawn a light actor of a given type.
200
+ - kick off a lighting build at a chosen quality.
201
+
202
+ Supported actions: load, save, stream, create_light, build_lighting.`,
261
203
  inputSchema: {
262
204
  type: 'object',
263
205
  properties: {
@@ -313,25 +255,14 @@ Examples:
313
255
  // 5. ANIMATION SYSTEM - Combines animation and physics setup
314
256
  {
315
257
  name: 'animation_physics',
316
- description: `Create animation blueprints, play montages, and set up simple ragdolls.
317
-
318
- When to use this tool:
319
- - Generate an Anim Blueprint for a skeleton, play a Montage/Animation on an actor, or enable ragdoll.
320
-
321
- Supported actions:
322
- - create_animation_bp
323
- - play_montage
324
- - setup_ragdoll
258
+ description: `Animation and physics rigging helper covering Anim BPs, montage playback, and ragdoll setup.
325
259
 
326
- Tips:
327
- - Ensure the montage/animation is compatible with the target actor/skeleton.
328
- - setup_ragdoll requires a valid physicsAssetName on the skeleton.
329
- - Use savePath when creating new assets.
260
+ Use it when you need to:
261
+ - generate an Animation Blueprint for a skeleton.
262
+ - play a montage/animation on an actor at a chosen rate.
263
+ - enable a quick ragdoll using an existing physics asset.
330
264
 
331
- Examples:
332
- - {"action":"create_animation_bp","name":"ABP_Hero","skeletonPath":"/Game/Characters/Hero/SK_Hero_Skeleton","savePath":"/Game/Characters/Hero"}
333
- - {"action":"play_montage","actorName":"Hero","montagePath":"/Game/Anim/MT_Attack"}
334
- - {"action":"setup_ragdoll","skeletonPath":"/Game/Characters/Hero/SK_Hero_Skeleton","physicsAssetName":"PHYS_Hero"}`,
265
+ Supported actions: create_animation_bp, play_montage, setup_ragdoll.`,
335
266
  inputSchema: {
336
267
  type: 'object',
337
268
  properties: {
@@ -371,24 +302,14 @@ Examples:
371
302
  // 6. EFFECTS SYSTEM - Combines particles and visual effects
372
303
  {
373
304
  name: 'create_effect',
374
- description: `Create particles/FX and lightweight debug shapes for rapid iteration.
305
+ description: `FX sandbox for spawning Niagara systems, particle presets, or disposable debug shapes.
375
306
 
376
- When to use this tool:
377
- - Spawn a Niagara system at a location, create a particle effect by type tag, or draw debug geometry for planning.
307
+ Use it when you need to:
308
+ - fire a Niagara system at a specific location/scale.
309
+ - trigger a simple particle effect by tag/name.
310
+ - draw temporary debug primitives (box/sphere/line) for planning layouts.
378
311
 
379
- Supported actions:
380
- - particle
381
- - niagara
382
- - debug_shape
383
-
384
- Tips:
385
- - Set color as RGBA [r,g,b,a]; scale defaults to 1 if omitted.
386
- - Use debug shapes for quick layout planning and measurements.
387
-
388
- Examples:
389
- - {"action":"niagara","systemPath":"/Game/FX/NS_Explosion","location":{"x":0,"y":0,"z":200},"scale":1.0}
390
- - {"action":"particle","effectType":"Smoke","name":"SMK1","location":{"x":100,"y":0,"z":50}}
391
- - {"action":"debug_shape","shape":"Sphere","location":{"x":0,"y":0,"z":0},"size":100,"duration":5}`,
312
+ Supported actions: niagara, particle, debug_shape.`,
392
313
  inputSchema: {
393
314
  type: 'object',
394
315
  properties: {
@@ -449,22 +370,13 @@ Examples:
449
370
  // 7. BLUEPRINT MANAGER - Blueprint operations
450
371
  {
451
372
  name: 'manage_blueprint',
452
- description: `Create new Blueprints and add components programmatically.
453
-
454
- When to use this tool:
455
- - Quickly scaffold a Blueprint asset or add a component to an existing Blueprint.
456
-
457
- Supported actions:
458
- - create
459
- - add_component
373
+ description: `Blueprint scaffolding helper for creating assets and attaching components.
460
374
 
461
- Tips:
462
- - blueprintType can be Actor, Pawn, Character, etc.
463
- - Component names should be unique within the Blueprint.
375
+ Use it when you need to:
376
+ - create a new Blueprint of a specific base type (Actor, Pawn, Character, ...).
377
+ - add a component to an existing Blueprint asset with a unique name.
464
378
 
465
- Examples:
466
- - {"action":"create","name":"BP_Switch","blueprintType":"Actor","savePath":"/Game/Blueprints"}
467
- - {"action":"add_component","name":"BP_Switch","componentType":"PointLightComponent","componentName":"KeyLight"}`,
379
+ Supported actions: create, add_component.`,
468
380
  inputSchema: {
469
381
  type: 'object',
470
382
  properties: {
@@ -499,34 +411,21 @@ Examples:
499
411
  // 8. ENVIRONMENT BUILDER - Landscape and foliage
500
412
  {
501
413
  name: 'build_environment',
502
- description: `Environment authoring helpers (landscape, foliage).
503
-
504
- When to use this tool:
505
- - Create a procedural terrain alternative, add/paint foliage, or attempt a landscape workflow.
506
-
507
- Supported actions:
508
- - create_landscape
509
- - sculpt
510
- - add_foliage
511
- - paint_foliage
512
-
513
- Important:
514
- - Native Landscape creation via Python is limited and may return a helpful error suggesting Landscape Mode in the editor.
515
- - Foliage helpers create FoliageType assets and support simple placement.
414
+ description: `Environment authoring toolkit for landscapes and foliage, from sculpting to procedural scatters.
516
415
 
517
- Tips:
518
- - Adjust brushSize and strength to tune sculpting results.
416
+ Use it when you need to:
417
+ - create or sculpt a landscape actor.
418
+ - add foliage via types or paint strokes.
419
+ - drive procedural terrain/foliage generation with bounds, seeds, and density settings.
420
+ - spawn explicit foliage instances at transforms.
519
421
 
520
- Examples:
521
- - {"action":"create_landscape","name":"Landscape_Basic","sizeX":1024,"sizeY":1024}
522
- - {"action":"add_foliage","name":"FT_Grass","meshPath":"/Game/Foliage/SM_Grass","density":300}
523
- - {"action":"paint_foliage","foliageType":"/Game/Foliage/Types/FT_Grass","position":{"x":0,"y":0,"z":0},"brushSize":300}`,
422
+ Supported actions: create_landscape, sculpt, add_foliage, paint_foliage, create_procedural_terrain, create_procedural_foliage, add_foliage_instances, create_landscape_grass_type.`,
524
423
  inputSchema: {
525
424
  type: 'object',
526
425
  properties: {
527
426
  action: {
528
427
  type: 'string',
529
- enum: ['create_landscape', 'sculpt', 'add_foliage', 'paint_foliage'],
428
+ enum: ['create_landscape', 'sculpt', 'add_foliage', 'paint_foliage', 'create_procedural_terrain', 'create_procedural_foliage', 'add_foliage_instances', 'create_landscape_grass_type'],
530
429
  description: 'Environment action'
531
430
  },
532
431
  // Common
@@ -538,9 +437,52 @@ Examples:
538
437
  type: 'string',
539
438
  description: 'Sculpt tool (Sculpt, Smooth, Flatten, etc.)'
540
439
  },
541
- // Foliage
440
+ // Advanced: procedural terrain
441
+ location: {
442
+ type: 'object',
443
+ properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } }
444
+ },
445
+ subdivisions: { type: 'number' },
446
+ heightFunction: { type: 'string' },
447
+ materialPath: { type: 'string' },
448
+ // Advanced: procedural foliage
449
+ bounds: {
450
+ type: 'object',
451
+ properties: {
452
+ location: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } } },
453
+ size: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } } }
454
+ }
455
+ },
456
+ foliageTypes: {
457
+ type: 'array',
458
+ items: {
459
+ type: 'object',
460
+ properties: {
461
+ meshPath: { type: 'string' },
462
+ density: { type: 'number' },
463
+ minScale: { type: 'number' },
464
+ maxScale: { type: 'number' },
465
+ alignToNormal: { type: 'boolean' },
466
+ randomYaw: { type: 'boolean' }
467
+ }
468
+ }
469
+ },
470
+ seed: { type: 'number' },
471
+ // Advanced: direct foliage instances
472
+ foliageType: { type: 'string' },
473
+ transforms: {
474
+ type: 'array',
475
+ items: {
476
+ type: 'object',
477
+ properties: {
478
+ location: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } } },
479
+ rotation: { type: 'object', properties: { pitch: { type: 'number' }, yaw: { type: 'number' }, roll: { type: 'number' } } },
480
+ scale: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } } }
481
+ }
482
+ }
483
+ },
484
+ // Foliage (for add_foliage)
542
485
  meshPath: { type: 'string', description: 'Mesh path' },
543
- foliageType: { type: 'string', description: 'Foliage type' },
544
486
  density: { type: 'number', description: 'Density' },
545
487
  // Painting
546
488
  position: {
@@ -571,31 +513,16 @@ Examples:
571
513
  // 9. PERFORMANCE & AUDIO - System settings
572
514
  {
573
515
  name: 'system_control',
574
- description: `Performance toggles, quality settings, audio playback, simple UI helpers, screenshots, and engine lifecycle.
575
-
576
- When to use this tool:
577
- - Toggle profiling and FPS stats, adjust quality (sg.*), play a sound, create/show a basic widget, take a screenshot, or launch/quit the editor.
578
-
579
- Supported actions:
580
- - profile
581
- - show_fps
582
- - set_quality
583
- - play_sound
584
- - create_widget
585
- - show_widget
586
- - screenshot
587
- - engine_start
588
- - engine_quit
589
-
590
- Tips:
591
- - Screenshot resolution format: 1920x1080.
592
- - engine_start can read UE project path from env; provide editorExe/projectPath if needed.
593
-
594
- Examples:
595
- - {"action":"show_fps","enabled":true}
596
- - {"action":"set_quality","category":"Shadows","level":2}
597
- - {"action":"play_sound","soundPath":"/Game/Audio/SFX/Click","volume":0.5}
598
- - {"action":"screenshot","resolution":"1920x1080"}`,
516
+ description: `Runtime/system controls for profiling, quality tiers, audio/UI triggers, screenshots, and editor lifecycle.
517
+
518
+ Use it when you need to:
519
+ - toggle stat overlays or targeted profilers.
520
+ - adjust scalability categories (sg.*) or enable FPS display.
521
+ - play a one-shot sound and optionally position it.
522
+ - create/show lightweight widgets.
523
+ - capture a screenshot or start/quit the editor process.
524
+
525
+ Supported actions: profile, show_fps, set_quality, play_sound, create_widget, show_widget, screenshot, engine_start, engine_quit.`,
599
526
  inputSchema: {
600
527
  type: 'object',
601
528
  properties: {
@@ -665,22 +592,9 @@ Examples:
665
592
  // 10. CONSOLE COMMAND - Universal tool
666
593
  {
667
594
  name: 'console_command',
668
- description: `Execute an Unreal console command with built-in safety.
669
-
670
- When to use this tool:
671
- - Fire a specific command (e.g., stat fps, viewmode wireframe, r.ScreenPercentage 75).
672
-
673
- Safety:
674
- - Dangerous commands are blocked (quit/exit, GPU crash triggers, unsafe visualizebuffer modes, etc.).
675
- - Unknown commands will return a warning instead of crashing.
676
-
677
- Tips:
678
- - Prefer dedicated tools (system_control, control_editor) when available for structured control.
595
+ description: `Guarded console command executor for one-off \`stat\`, \`r.*\`, or viewmode commands.
679
596
 
680
- Examples:
681
- - {"command":"stat fps"}
682
- - {"command":"viewmode wireframe"}
683
- - {"command":"r.ScreenPercentage 75"}`,
597
+ Use it when higher-level tools don't cover the console tweak you need. Hazardous commands (quit/exit, crash triggers, unsafe viewmodes) are blocked, and unknown commands respond with a warning instead of executing blindly.`,
684
598
  inputSchema: {
685
599
  type: 'object',
686
600
  properties: {
@@ -704,29 +618,15 @@ Examples:
704
618
  // 11. REMOTE CONTROL PRESETS
705
619
  {
706
620
  name: 'manage_rc',
707
- description: `Create and manage Remote Control presets; expose actors/properties; set/get values.
708
-
709
- When to use this tool:
710
- - Automate Remote Control (RC) preset authoring and interaction from the assistant.
711
-
712
- Supported actions:
713
- - create_preset
714
- - expose_actor
715
- - expose_property
716
- - list_fields
717
- - set_property
718
- - get_property
719
-
720
- Tips:
721
- - value must be JSON-serializable.
722
- - Use objectPath/presetPath with full asset/object paths.
723
-
724
- Examples:
725
- - {"action":"create_preset","name":"LivePreset","path":"/Game/RCPresets"}
726
- - {"action":"expose_actor","presetPath":"/Game/RCPresets/LivePreset","actorName":"CameraActor"}
727
- - {"action":"expose_property","presetPath":"/Game/RCPresets/LivePreset","objectPath":"/Script/Engine.Default__Engine","propertyName":"GameUserSettings"}
728
- - {"action":"list_fields","presetPath":"/Game/RCPresets/LivePreset"}
729
- - {"action":"set_property","objectPath":"/Game/MyActor","propertyName":"CustomFloat","value":0.5}`,
621
+ description: `Remote Control preset helper for building, exposing, and mutating RC assets.
622
+
623
+ Use it when you need to:
624
+ - create a preset asset on disk.
625
+ - expose actors or object properties to the preset.
626
+ - list the exposed fields for inspection.
627
+ - get or set property values through RC with JSON-serializable payloads.
628
+
629
+ Supported actions: create_preset, expose_actor, expose_property, list_fields, set_property, get_property.`,
730
630
  inputSchema: {
731
631
  type: 'object',
732
632
  properties: {
@@ -761,37 +661,15 @@ Examples:
761
661
  // 12. SEQUENCER / CINEMATICS
762
662
  {
763
663
  name: 'manage_sequence',
764
- description: `Create/open Level Sequences, bind actors, add cameras, and control playback.
765
-
766
- When to use this tool:
767
- - Build quick cinematics: create/open a sequence, add a camera or actors, tweak properties, and play.
768
-
769
- Supported actions:
770
- - create
771
- - open
772
- - add_camera
773
- - add_actor
774
- - add_actors
775
- - remove_actors
776
- - get_bindings
777
- - add_spawnable_from_class
778
- - play
779
- - pause
780
- - stop
781
- - set_properties
782
- - get_properties
783
- - set_playback_speed
784
-
785
- Tips:
786
- - Set spawnable=true to auto-create a camera actor.
787
- - Use frameRate/lengthInFrames to define timing; use playbackStart/End to trim.
788
-
789
- Examples:
790
- - {"action":"create","name":"Intro","path":"/Game/Cinematics"}
791
- - {"action":"add_camera","spawnable":true}
792
- - {"action":"add_actor","actorName":"Hero"}
793
- - {"action":"play","loopMode":"once"}
794
- - {"action":"set_properties","path":"/Game/Cinematics/Intro","frameRate":24,"lengthInFrames":480}`,
664
+ description: `Sequencer automation helper for Level Sequences: asset management, bindings, and playback control.
665
+
666
+ Use it when you need to:
667
+ - create or open a sequence asset.
668
+ - add actors, spawnable cameras, or other bindings.
669
+ - adjust sequence metadata (frame rate, bounds, playback window).
670
+ - drive playback (play/pause/stop), adjust speed, or fetch binding info.
671
+
672
+ Supported actions: create, open, add_camera, add_actor, add_actors, remove_actors, get_bindings, add_spawnable_from_class, play, pause, stop, set_properties, get_properties, set_playback_speed.`,
795
673
  inputSchema: {
796
674
  type: 'object',
797
675
  properties: {
@@ -844,22 +722,13 @@ Examples:
844
722
  // 13. INTROSPECTION
845
723
  {
846
724
  name: 'inspect',
847
- description: `Read object info and set properties with validation.
848
-
849
- When to use this tool:
850
- - Inspect an object by path (class default object or actor/component) and optionally modify properties.
851
-
852
- Supported actions:
853
- - inspect_object
854
- - set_property
725
+ description: `Introspection utility for reading or mutating properties on actors, components, or CDOs.
855
726
 
856
- Tips:
857
- - propertyName is case-sensitive; ensure it exists on the target object.
858
- - For class default objects (CDOs), use the /Script/...Default__Class path.
727
+ Use it when you need to:
728
+ - inspect an object by path and retrieve its serialized properties.
729
+ - set a property value with built-in validation.
859
730
 
860
- Examples:
861
- - {"action":"inspect_object","objectPath":"/Script/Engine.Default__Engine"}
862
- - {"action":"set_property","objectPath":"/Game/MyActor","propertyName":"CustomBool","value":true}`,
731
+ Supported actions: inspect_object, set_property.`,
863
732
  inputSchema: {
864
733
  type: 'object',
865
734
  properties: {