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
@@ -3,26 +3,14 @@ export const consolidatedToolDefinitions = [
3
3
  // 1. ASSET MANAGER - Combines asset operations
4
4
  {
5
5
  name: 'manage_asset',
6
- description: `Search, browse, import, and create simple material assets.
6
+ description: `Asset library utility for browsing, importing, and bootstrapping simple materials.
7
7
 
8
- When to use this tool:
9
- - You want to list assets in the project Content directory (use /Game; /Content is auto-mapped).
10
- - You want to import files from disk into the project (e.g., FBX, PNG, WAV, EXR).
11
- - You want to generate a very basic Material asset by name at a path.
8
+ Use it when you need to:
9
+ - explore project content (\u002fContent automatically maps to \u002fGame).
10
+ - import FBX/PNG/WAV/EXR files into the project.
11
+ - spin up a minimal Material asset at a specific path.
12
12
 
13
- Supported actions:
14
- - list: Returns assets in a folder (recursive behavior is auto-enabled for /Game).
15
- - import: Imports a file into the project at a destination path (e.g., /Game/Folder).
16
- - create_material: Creates a simple Material asset at a path.
17
-
18
- Tips:
19
- - Unreal uses /Game for project content; this server maps /Content → /Game automatically.
20
- - For large projects, listing /Game returns a sample subset for speed; refine to subfolders.
21
-
22
- Examples:
23
- - {"action":"list","directory":"/Game/ThirdPerson"}
24
- - {"action":"import","sourcePath":"C:/Temp/Tree.fbx","destinationPath":"/Game/Environment/Trees"}
25
- - {"action":"create_material","name":"M_Mask","path":"/Game/Materials"}`,
13
+ Supported actions: list, import, create_material.`,
26
14
  inputSchema: {
27
15
  type: 'object',
28
16
  properties: {
@@ -69,35 +57,14 @@ Examples:
69
57
  // 2. ACTOR CONTROL - Combines actor operations
70
58
  {
71
59
  name: 'control_actor',
72
- description: `Spawn, delete, and apply physics to actors in the level.
73
-
74
- When to use this tool:
75
- - Place an actor/mesh, remove an actor, or nudge an actor with a physics force.
76
-
77
- Supported actions:
78
- - spawn
79
- - delete
80
- - apply_force
81
-
82
- Spawning:
83
- - classPath can be a class name (e.g., StaticMeshActor, CameraActor) OR an asset path (e.g., /Engine/BasicShapes/Cube, /Game/Meshes/SM_Rock).
84
- - Asset paths auto-spawn StaticMeshActor with the mesh assigned.
85
-
86
- Deleting:
87
- - Finds actors by label/name (case-insensitive) and deletes matches.
88
-
89
- Apply force:
90
- - Applies a world-space force vector to an actor with physics enabled.
60
+ description: `Viewport actor toolkit for spawning, removing, or nudging actors with physics forces.
91
61
 
92
- Tips:
93
- - classPath accepts classes or asset paths; simple names like Cube auto-resolve to engine assets.
94
- - location/rotation are optional; defaults are used if omitted.
95
- - For delete/apply_force, provide actorName.
62
+ Use it when you need to:
63
+ - drop a class or mesh into the level (classPath accepts names or asset paths).
64
+ - delete actors by label, case-insensitively.
65
+ - push a physics-enabled actor with a world-space force vector.
96
66
 
97
- Examples:
98
- - {"action":"spawn","classPath":"/Engine/BasicShapes/Cube","location":{"x":0,"y":0,"z":100}}
99
- - {"action":"delete","actorName":"Cube_1"}
100
- - {"action":"apply_force","actorName":"PhysicsBox","force":{"x":0,"y":0,"z":5000}}`,
67
+ Supported actions: spawn, delete, apply_force.`,
101
68
  inputSchema: {
102
69
  type: 'object',
103
70
  properties: {
@@ -156,26 +123,14 @@ Examples:
156
123
  // 3. EDITOR CONTROL - Combines editor operations
157
124
  {
158
125
  name: 'control_editor',
159
- description: `Play/Stop PIE, position the editor camera, and switch common view modes.
126
+ description: `Editor session controls for PIE playback, camera placement, and view modes.
160
127
 
161
- When to use this tool:
162
- - Start/stop a PIE session, move the viewport camera, or change viewmode (Lit/Unlit/Wireframe/etc.).
128
+ Use it when you need to:
129
+ - start or stop Play In Editor.
130
+ - reposition the active viewport camera.
131
+ - switch between Lit/Unlit/Wireframe and other safe view modes.
163
132
 
164
- Supported actions:
165
- - play
166
- - stop
167
- - set_camera
168
- - set_view_mode
169
-
170
- Notes:
171
- - View modes are validated; unsafe modes are blocked.
172
- - Camera accepts location/rotation (optional); values normalized.
173
-
174
- Examples:
175
- - {"action":"play"}
176
- - {"action":"set_camera","location":{"x":0,"y":-600,"z":250},"rotation":{"pitch":0,"yaw":0,"roll":0}}
177
- - {"action":"set_view_mode","viewMode":"Wireframe"}
178
- - {"action":"stop"}`,
133
+ Supported actions: play, stop, set_camera, set_view_mode (with validation).`,
179
134
  inputSchema: {
180
135
  type: 'object',
181
136
  properties: {
@@ -232,28 +187,15 @@ Examples:
232
187
  // 4. LEVEL MANAGER - Combines level and lighting operations
233
188
  {
234
189
  name: 'manage_level',
235
- description: `Load/save/stream levels, create lights, and trigger lighting builds.
236
-
237
- When to use this tool:
238
- - Switch to a level, save the current level, stream sublevels, add a light, or start a lighting build.
190
+ description: `Level management helper for loading/saving, streaming, light creation, and lighting builds.
239
191
 
240
- Supported actions:
241
- - load
242
- - save
243
- - stream
244
- - create_light
245
- - build_lighting
192
+ Use it when you need to:
193
+ - open or save a level by path.
194
+ - toggle streaming sublevels on/off.
195
+ - spawn a light actor of a given type.
196
+ - kick off a lighting build at a chosen quality.
246
197
 
247
- Tips:
248
- - Use /Game paths for levels (e.g., /Game/Maps/Level).
249
- - For streaming, set shouldBeLoaded and shouldBeVisible accordingly.
250
- - For lights, provide lightType and optional location/intensity.
251
-
252
- Examples:
253
- - {"action":"load","levelPath":"/Game/Maps/Lobby"}
254
- - {"action":"stream","levelName":"Sublevel_A","shouldBeLoaded":true,"shouldBeVisible":true}
255
- - {"action":"create_light","lightType":"Directional","name":"KeyLight","intensity":5.0}
256
- - {"action":"build_lighting","quality":"High"}`,
198
+ Supported actions: load, save, stream, create_light, build_lighting.`,
257
199
  inputSchema: {
258
200
  type: 'object',
259
201
  properties: {
@@ -308,25 +250,14 @@ Examples:
308
250
  // 5. ANIMATION SYSTEM - Combines animation and physics setup
309
251
  {
310
252
  name: 'animation_physics',
311
- description: `Create animation blueprints, play montages, and set up simple ragdolls.
312
-
313
- When to use this tool:
314
- - Generate an Anim Blueprint for a skeleton, play a Montage/Animation on an actor, or enable ragdoll.
315
-
316
- Supported actions:
317
- - create_animation_bp
318
- - play_montage
319
- - setup_ragdoll
253
+ description: `Animation and physics rigging helper covering Anim BPs, montage playback, and ragdoll setup.
320
254
 
321
- Tips:
322
- - Ensure the montage/animation is compatible with the target actor/skeleton.
323
- - setup_ragdoll requires a valid physicsAssetName on the skeleton.
324
- - Use savePath when creating new assets.
255
+ Use it when you need to:
256
+ - generate an Animation Blueprint for a skeleton.
257
+ - play a montage/animation on an actor at a chosen rate.
258
+ - enable a quick ragdoll using an existing physics asset.
325
259
 
326
- Examples:
327
- - {"action":"create_animation_bp","name":"ABP_Hero","skeletonPath":"/Game/Characters/Hero/SK_Hero_Skeleton","savePath":"/Game/Characters/Hero"}
328
- - {"action":"play_montage","actorName":"Hero","montagePath":"/Game/Anim/MT_Attack"}
329
- - {"action":"setup_ragdoll","skeletonPath":"/Game/Characters/Hero/SK_Hero_Skeleton","physicsAssetName":"PHYS_Hero"}`,
260
+ Supported actions: create_animation_bp, play_montage, setup_ragdoll.`,
330
261
  inputSchema: {
331
262
  type: 'object',
332
263
  properties: {
@@ -365,24 +296,14 @@ Examples:
365
296
  // 6. EFFECTS SYSTEM - Combines particles and visual effects
366
297
  {
367
298
  name: 'create_effect',
368
- description: `Create particles/FX and lightweight debug shapes for rapid iteration.
299
+ description: `FX sandbox for spawning Niagara systems, particle presets, or disposable debug shapes.
369
300
 
370
- When to use this tool:
371
- - Spawn a Niagara system at a location, create a particle effect by type tag, or draw debug geometry for planning.
301
+ Use it when you need to:
302
+ - fire a Niagara system at a specific location/scale.
303
+ - trigger a simple particle effect by tag/name.
304
+ - draw temporary debug primitives (box/sphere/line) for planning layouts.
372
305
 
373
- Supported actions:
374
- - particle
375
- - niagara
376
- - debug_shape
377
-
378
- Tips:
379
- - Set color as RGBA [r,g,b,a]; scale defaults to 1 if omitted.
380
- - Use debug shapes for quick layout planning and measurements.
381
-
382
- Examples:
383
- - {"action":"niagara","systemPath":"/Game/FX/NS_Explosion","location":{"x":0,"y":0,"z":200},"scale":1.0}
384
- - {"action":"particle","effectType":"Smoke","name":"SMK1","location":{"x":100,"y":0,"z":50}}
385
- - {"action":"debug_shape","shape":"Sphere","location":{"x":0,"y":0,"z":0},"size":100,"duration":5}`,
306
+ Supported actions: niagara, particle, debug_shape.`,
386
307
  inputSchema: {
387
308
  type: 'object',
388
309
  properties: {
@@ -442,22 +363,13 @@ Examples:
442
363
  // 7. BLUEPRINT MANAGER - Blueprint operations
443
364
  {
444
365
  name: 'manage_blueprint',
445
- description: `Create new Blueprints and add components programmatically.
446
-
447
- When to use this tool:
448
- - Quickly scaffold a Blueprint asset or add a component to an existing Blueprint.
449
-
450
- Supported actions:
451
- - create
452
- - add_component
366
+ description: `Blueprint scaffolding helper for creating assets and attaching components.
453
367
 
454
- Tips:
455
- - blueprintType can be Actor, Pawn, Character, etc.
456
- - Component names should be unique within the Blueprint.
368
+ Use it when you need to:
369
+ - create a new Blueprint of a specific base type (Actor, Pawn, Character, ...).
370
+ - add a component to an existing Blueprint asset with a unique name.
457
371
 
458
- Examples:
459
- - {"action":"create","name":"BP_Switch","blueprintType":"Actor","savePath":"/Game/Blueprints"}
460
- - {"action":"add_component","name":"BP_Switch","componentType":"PointLightComponent","componentName":"KeyLight"}`,
372
+ Supported actions: create, add_component.`,
461
373
  inputSchema: {
462
374
  type: 'object',
463
375
  properties: {
@@ -491,34 +403,21 @@ Examples:
491
403
  // 8. ENVIRONMENT BUILDER - Landscape and foliage
492
404
  {
493
405
  name: 'build_environment',
494
- description: `Environment authoring helpers (landscape, foliage).
495
-
496
- When to use this tool:
497
- - Create a procedural terrain alternative, add/paint foliage, or attempt a landscape workflow.
498
-
499
- Supported actions:
500
- - create_landscape
501
- - sculpt
502
- - add_foliage
503
- - paint_foliage
504
-
505
- Important:
506
- - Native Landscape creation via Python is limited and may return a helpful error suggesting Landscape Mode in the editor.
507
- - Foliage helpers create FoliageType assets and support simple placement.
406
+ description: `Environment authoring toolkit for landscapes and foliage, from sculpting to procedural scatters.
508
407
 
509
- Tips:
510
- - Adjust brushSize and strength to tune sculpting results.
408
+ Use it when you need to:
409
+ - create or sculpt a landscape actor.
410
+ - add foliage via types or paint strokes.
411
+ - drive procedural terrain/foliage generation with bounds, seeds, and density settings.
412
+ - spawn explicit foliage instances at transforms.
511
413
 
512
- Examples:
513
- - {"action":"create_landscape","name":"Landscape_Basic","sizeX":1024,"sizeY":1024}
514
- - {"action":"add_foliage","name":"FT_Grass","meshPath":"/Game/Foliage/SM_Grass","density":300}
515
- - {"action":"paint_foliage","foliageType":"/Game/Foliage/Types/FT_Grass","position":{"x":0,"y":0,"z":0},"brushSize":300}`,
414
+ Supported actions: create_landscape, sculpt, add_foliage, paint_foliage, create_procedural_terrain, create_procedural_foliage, add_foliage_instances, create_landscape_grass_type.`,
516
415
  inputSchema: {
517
416
  type: 'object',
518
417
  properties: {
519
418
  action: {
520
419
  type: 'string',
521
- enum: ['create_landscape', 'sculpt', 'add_foliage', 'paint_foliage'],
420
+ enum: ['create_landscape', 'sculpt', 'add_foliage', 'paint_foliage', 'create_procedural_terrain', 'create_procedural_foliage', 'add_foliage_instances', 'create_landscape_grass_type'],
522
421
  description: 'Environment action'
523
422
  },
524
423
  // Common
@@ -530,9 +429,52 @@ Examples:
530
429
  type: 'string',
531
430
  description: 'Sculpt tool (Sculpt, Smooth, Flatten, etc.)'
532
431
  },
533
- // Foliage
432
+ // Advanced: procedural terrain
433
+ location: {
434
+ type: 'object',
435
+ properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } }
436
+ },
437
+ subdivisions: { type: 'number' },
438
+ heightFunction: { type: 'string' },
439
+ materialPath: { type: 'string' },
440
+ // Advanced: procedural foliage
441
+ bounds: {
442
+ type: 'object',
443
+ properties: {
444
+ location: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } } },
445
+ size: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } } }
446
+ }
447
+ },
448
+ foliageTypes: {
449
+ type: 'array',
450
+ items: {
451
+ type: 'object',
452
+ properties: {
453
+ meshPath: { type: 'string' },
454
+ density: { type: 'number' },
455
+ minScale: { type: 'number' },
456
+ maxScale: { type: 'number' },
457
+ alignToNormal: { type: 'boolean' },
458
+ randomYaw: { type: 'boolean' }
459
+ }
460
+ }
461
+ },
462
+ seed: { type: 'number' },
463
+ // Advanced: direct foliage instances
464
+ foliageType: { type: 'string' },
465
+ transforms: {
466
+ type: 'array',
467
+ items: {
468
+ type: 'object',
469
+ properties: {
470
+ location: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } } },
471
+ rotation: { type: 'object', properties: { pitch: { type: 'number' }, yaw: { type: 'number' }, roll: { type: 'number' } } },
472
+ scale: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } } }
473
+ }
474
+ }
475
+ },
476
+ // Foliage (for add_foliage)
534
477
  meshPath: { type: 'string', description: 'Mesh path' },
535
- foliageType: { type: 'string', description: 'Foliage type' },
536
478
  density: { type: 'number', description: 'Density' },
537
479
  // Painting
538
480
  position: {
@@ -562,31 +504,16 @@ Examples:
562
504
  // 9. PERFORMANCE & AUDIO - System settings
563
505
  {
564
506
  name: 'system_control',
565
- description: `Performance toggles, quality settings, audio playback, simple UI helpers, screenshots, and engine lifecycle.
566
-
567
- When to use this tool:
568
- - Toggle profiling and FPS stats, adjust quality (sg.*), play a sound, create/show a basic widget, take a screenshot, or launch/quit the editor.
569
-
570
- Supported actions:
571
- - profile
572
- - show_fps
573
- - set_quality
574
- - play_sound
575
- - create_widget
576
- - show_widget
577
- - screenshot
578
- - engine_start
579
- - engine_quit
507
+ description: `Runtime/system controls for profiling, quality tiers, audio/UI triggers, screenshots, and editor lifecycle.
580
508
 
581
- Tips:
582
- - Screenshot resolution format: 1920x1080.
583
- - engine_start can read UE project path from env; provide editorExe/projectPath if needed.
509
+ Use it when you need to:
510
+ - toggle stat overlays or targeted profilers.
511
+ - adjust scalability categories (sg.*) or enable FPS display.
512
+ - play a one-shot sound and optionally position it.
513
+ - create/show lightweight widgets.
514
+ - capture a screenshot or start/quit the editor process.
584
515
 
585
- Examples:
586
- - {"action":"show_fps","enabled":true}
587
- - {"action":"set_quality","category":"Shadows","level":2}
588
- - {"action":"play_sound","soundPath":"/Game/Audio/SFX/Click","volume":0.5}
589
- - {"action":"screenshot","resolution":"1920x1080"}`,
516
+ Supported actions: profile, show_fps, set_quality, play_sound, create_widget, show_widget, screenshot, engine_start, engine_quit.`,
590
517
  inputSchema: {
591
518
  type: 'object',
592
519
  properties: {
@@ -655,22 +582,9 @@ Examples:
655
582
  // 10. CONSOLE COMMAND - Universal tool
656
583
  {
657
584
  name: 'console_command',
658
- description: `Execute an Unreal console command with built-in safety.
659
-
660
- When to use this tool:
661
- - Fire a specific command (e.g., stat fps, viewmode wireframe, r.ScreenPercentage 75).
662
-
663
- Safety:
664
- - Dangerous commands are blocked (quit/exit, GPU crash triggers, unsafe visualizebuffer modes, etc.).
665
- - Unknown commands will return a warning instead of crashing.
666
-
667
- Tips:
668
- - Prefer dedicated tools (system_control, control_editor) when available for structured control.
585
+ description: `Guarded console command executor for one-off \`stat\`, \`r.*\`, or viewmode commands.
669
586
 
670
- Examples:
671
- - {"command":"stat fps"}
672
- - {"command":"viewmode wireframe"}
673
- - {"command":"r.ScreenPercentage 75"}`,
587
+ 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.`,
674
588
  inputSchema: {
675
589
  type: 'object',
676
590
  properties: {
@@ -693,29 +607,15 @@ Examples:
693
607
  // 11. REMOTE CONTROL PRESETS
694
608
  {
695
609
  name: 'manage_rc',
696
- description: `Create and manage Remote Control presets; expose actors/properties; set/get values.
610
+ description: `Remote Control preset helper for building, exposing, and mutating RC assets.
697
611
 
698
- When to use this tool:
699
- - Automate Remote Control (RC) preset authoring and interaction from the assistant.
612
+ Use it when you need to:
613
+ - create a preset asset on disk.
614
+ - expose actors or object properties to the preset.
615
+ - list the exposed fields for inspection.
616
+ - get or set property values through RC with JSON-serializable payloads.
700
617
 
701
- Supported actions:
702
- - create_preset
703
- - expose_actor
704
- - expose_property
705
- - list_fields
706
- - set_property
707
- - get_property
708
-
709
- Tips:
710
- - value must be JSON-serializable.
711
- - Use objectPath/presetPath with full asset/object paths.
712
-
713
- Examples:
714
- - {"action":"create_preset","name":"LivePreset","path":"/Game/RCPresets"}
715
- - {"action":"expose_actor","presetPath":"/Game/RCPresets/LivePreset","actorName":"CameraActor"}
716
- - {"action":"expose_property","presetPath":"/Game/RCPresets/LivePreset","objectPath":"/Script/Engine.Default__Engine","propertyName":"GameUserSettings"}
717
- - {"action":"list_fields","presetPath":"/Game/RCPresets/LivePreset"}
718
- - {"action":"set_property","objectPath":"/Game/MyActor","propertyName":"CustomFloat","value":0.5}`,
618
+ Supported actions: create_preset, expose_actor, expose_property, list_fields, set_property, get_property.`,
719
619
  inputSchema: {
720
620
  type: 'object',
721
621
  properties: {
@@ -749,37 +649,15 @@ Examples:
749
649
  // 12. SEQUENCER / CINEMATICS
750
650
  {
751
651
  name: 'manage_sequence',
752
- description: `Create/open Level Sequences, bind actors, add cameras, and control playback.
753
-
754
- When to use this tool:
755
- - Build quick cinematics: create/open a sequence, add a camera or actors, tweak properties, and play.
652
+ description: `Sequencer automation helper for Level Sequences: asset management, bindings, and playback control.
756
653
 
757
- Supported actions:
758
- - create
759
- - open
760
- - add_camera
761
- - add_actor
762
- - add_actors
763
- - remove_actors
764
- - get_bindings
765
- - add_spawnable_from_class
766
- - play
767
- - pause
768
- - stop
769
- - set_properties
770
- - get_properties
771
- - set_playback_speed
654
+ Use it when you need to:
655
+ - create or open a sequence asset.
656
+ - add actors, spawnable cameras, or other bindings.
657
+ - adjust sequence metadata (frame rate, bounds, playback window).
658
+ - drive playback (play/pause/stop), adjust speed, or fetch binding info.
772
659
 
773
- Tips:
774
- - Set spawnable=true to auto-create a camera actor.
775
- - Use frameRate/lengthInFrames to define timing; use playbackStart/End to trim.
776
-
777
- Examples:
778
- - {"action":"create","name":"Intro","path":"/Game/Cinematics"}
779
- - {"action":"add_camera","spawnable":true}
780
- - {"action":"add_actor","actorName":"Hero"}
781
- - {"action":"play","loopMode":"once"}
782
- - {"action":"set_properties","path":"/Game/Cinematics/Intro","frameRate":24,"lengthInFrames":480}`,
660
+ 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.`,
783
661
  inputSchema: {
784
662
  type: 'object',
785
663
  properties: {
@@ -831,22 +709,13 @@ Examples:
831
709
  // 13. INTROSPECTION
832
710
  {
833
711
  name: 'inspect',
834
- description: `Read object info and set properties with validation.
835
-
836
- When to use this tool:
837
- - Inspect an object by path (class default object or actor/component) and optionally modify properties.
838
-
839
- Supported actions:
840
- - inspect_object
841
- - set_property
712
+ description: `Introspection utility for reading or mutating properties on actors, components, or CDOs.
842
713
 
843
- Tips:
844
- - propertyName is case-sensitive; ensure it exists on the target object.
845
- - For class default objects (CDOs), use the /Script/...Default__Class path.
714
+ Use it when you need to:
715
+ - inspect an object by path and retrieve its serialized properties.
716
+ - set a property value with built-in validation.
846
717
 
847
- Examples:
848
- - {"action":"inspect_object","objectPath":"/Script/Engine.Default__Engine"}
849
- - {"action":"set_property","objectPath":"/Game/MyActor","propertyName":"CustomBool","value":true}`,
718
+ Supported actions: inspect_object, set_property.`,
850
719
  inputSchema: {
851
720
  type: 'object',
852
721
  properties: {