unreal-engine-mcp-server 0.2.1 → 0.3.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.production +1 -1
- package/README.md +0 -17
- package/dist/index.js +4 -4
- package/dist/resources/assets.d.ts +1 -1
- package/dist/resources/assets.js +3 -3
- package/dist/tools/consolidated-tool-definitions.js +156 -14
- package/dist/tools/consolidated-tool-handlers.js +1 -1
- package/dist/tools/tool-definitions.js +141 -25
- package/dist/tools/tool-handlers.js +42 -9
- package/dist/unreal-bridge.js +2 -2
- package/dist/utils/response-validator.js +3 -3
- package/dist/utils/safe-json.js +1 -1
- package/package.json +3 -10
- package/server.json +2 -2
- package/src/index.ts +5 -5
- package/src/resources/assets.ts +3 -3
- package/src/tools/consolidated-tool-definitions.ts +156 -14
- package/src/tools/consolidated-tool-handlers.ts +1 -1
- package/src/tools/tool-definitions.ts +141 -25
- package/src/tools/tool-handlers.ts +41 -9
- package/src/unreal-bridge.ts +2 -2
- package/src/utils/response-validator.ts +3 -3
- package/src/utils/safe-json.ts +1 -1
|
@@ -1,10 +1,29 @@
|
|
|
1
|
-
// Consolidated tool definitions - reduced from 36 to
|
|
1
|
+
// Consolidated tool definitions - reduced from 36 to 13 multi-purpose tools
|
|
2
2
|
|
|
3
3
|
export const consolidatedToolDefinitions = [
|
|
4
4
|
// 1. ASSET MANAGER - Combines asset operations
|
|
5
5
|
{
|
|
6
6
|
name: 'manage_asset',
|
|
7
|
-
description:
|
|
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"}`,
|
|
8
27
|
inputSchema: {
|
|
9
28
|
type: 'object',
|
|
10
29
|
properties: {
|
|
@@ -52,7 +71,25 @@ export const consolidatedToolDefinitions = [
|
|
|
52
71
|
// 2. ACTOR CONTROL - Combines actor operations
|
|
53
72
|
{
|
|
54
73
|
name: 'control_actor',
|
|
55
|
-
description:
|
|
74
|
+
description: `Spawn, delete, and apply physics to actors in the level.
|
|
75
|
+
|
|
76
|
+
When to use this tool:
|
|
77
|
+
- You need to place an actor or mesh in the level, remove an actor, or nudge an actor with a physics force.
|
|
78
|
+
|
|
79
|
+
Spawning:
|
|
80
|
+
- classPath can be a class name (e.g., StaticMeshActor, CameraActor) OR an asset path (e.g., /Engine/BasicShapes/Cube, /Game/Meshes/SM_Rock).
|
|
81
|
+
- If an asset path is provided, a StaticMeshActor is auto-spawned with the mesh assigned.
|
|
82
|
+
|
|
83
|
+
Deleting:
|
|
84
|
+
- Finds actors by label/name (case-insensitive). Deletes matching actors.
|
|
85
|
+
|
|
86
|
+
Apply force:
|
|
87
|
+
- Applies a world-space force vector to an actor with physics enabled.
|
|
88
|
+
|
|
89
|
+
Examples:
|
|
90
|
+
- {"action":"spawn","classPath":"/Engine/BasicShapes/Cube","location":{"x":0,"y":0,"z":100}}
|
|
91
|
+
- {"action":"delete","actorName":"Cube_1"}
|
|
92
|
+
- {"action":"apply_force","actorName":"PhysicsBox","force":{"x":0,"y":0,"z":5000}}`,
|
|
56
93
|
inputSchema: {
|
|
57
94
|
type: 'object',
|
|
58
95
|
properties: {
|
|
@@ -112,7 +149,20 @@ export const consolidatedToolDefinitions = [
|
|
|
112
149
|
// 3. EDITOR CONTROL - Combines editor operations
|
|
113
150
|
{
|
|
114
151
|
name: 'control_editor',
|
|
115
|
-
description:
|
|
152
|
+
description: `Play/Stop PIE, position the editor camera, and switch common view modes.
|
|
153
|
+
|
|
154
|
+
When to use this tool:
|
|
155
|
+
- Start/stop a PIE session, move the viewport camera, or change viewmode (Lit/Unlit/Wireframe/etc.).
|
|
156
|
+
|
|
157
|
+
Notes:
|
|
158
|
+
- View modes are validated and unsafe modes are blocked.
|
|
159
|
+
- Camera accepts location and/or rotation (both optional). Values are normalized.
|
|
160
|
+
|
|
161
|
+
Examples:
|
|
162
|
+
- {"action":"play"}
|
|
163
|
+
- {"action":"set_camera","location":{"x":0,"y":-600,"z":250},"rotation":{"pitch":0,"yaw":0,"roll":0}}
|
|
164
|
+
- {"action":"set_view_mode","viewMode":"Wireframe"}
|
|
165
|
+
- {"action":"stop"}`,
|
|
116
166
|
inputSchema: {
|
|
117
167
|
type: 'object',
|
|
118
168
|
properties: {
|
|
@@ -170,7 +220,16 @@ export const consolidatedToolDefinitions = [
|
|
|
170
220
|
// 4. LEVEL MANAGER - Combines level and lighting operations
|
|
171
221
|
{
|
|
172
222
|
name: 'manage_level',
|
|
173
|
-
description:
|
|
223
|
+
description: `Load/save/stream levels, create lights, and trigger lighting builds.
|
|
224
|
+
|
|
225
|
+
When to use this tool:
|
|
226
|
+
- Switch to a level, save the current level, stream sublevels, add a light, or start a lighting build.
|
|
227
|
+
|
|
228
|
+
Examples:
|
|
229
|
+
- {"action":"load","levelPath":"/Game/Maps/Lobby"}
|
|
230
|
+
- {"action":"stream","levelName":"Sublevel_A","shouldBeLoaded":true,"shouldBeVisible":true}
|
|
231
|
+
- {"action":"create_light","lightType":"Directional","name":"KeyLight","intensity":5.0}
|
|
232
|
+
- {"action":"build_lighting","quality":"High"}`,
|
|
174
233
|
inputSchema: {
|
|
175
234
|
type: 'object',
|
|
176
235
|
properties: {
|
|
@@ -226,7 +285,15 @@ export const consolidatedToolDefinitions = [
|
|
|
226
285
|
// 5. ANIMATION SYSTEM - Combines animation and physics setup
|
|
227
286
|
{
|
|
228
287
|
name: 'animation_physics',
|
|
229
|
-
description:
|
|
288
|
+
description: `Create animation blueprints, play montages, and set up simple ragdolls.
|
|
289
|
+
|
|
290
|
+
When to use this tool:
|
|
291
|
+
- Generate an Anim Blueprint for a skeleton, play a Montage/Animation on an actor, or enable ragdoll.
|
|
292
|
+
|
|
293
|
+
Examples:
|
|
294
|
+
- {"action":"create_animation_bp","name":"ABP_Hero","skeletonPath":"/Game/Characters/Hero/SK_Hero_Skeleton","savePath":"/Game/Characters/Hero"}
|
|
295
|
+
- {"action":"play_montage","actorName":"Hero","montagePath":"/Game/Anim/MT_Attack"}
|
|
296
|
+
- {"action":"setup_ragdoll","skeletonPath":"/Game/Characters/Hero/SK_Hero_Skeleton","physicsAssetName":"PHYS_Hero"}`,
|
|
230
297
|
inputSchema: {
|
|
231
298
|
type: 'object',
|
|
232
299
|
properties: {
|
|
@@ -266,7 +333,15 @@ export const consolidatedToolDefinitions = [
|
|
|
266
333
|
// 6. EFFECTS SYSTEM - Combines particles and visual effects
|
|
267
334
|
{
|
|
268
335
|
name: 'create_effect',
|
|
269
|
-
description:
|
|
336
|
+
description: `Create particles/FX and lightweight debug shapes for rapid iteration.
|
|
337
|
+
|
|
338
|
+
When to use this tool:
|
|
339
|
+
- Spawn a Niagara system at a location, create a particle effect by type tag, or draw debug geometry for planning.
|
|
340
|
+
|
|
341
|
+
Examples:
|
|
342
|
+
- {"action":"niagara","systemPath":"/Game/FX/NS_Explosion","location":{"x":0,"y":0,"z":200},"scale":1.0}
|
|
343
|
+
- {"action":"particle","effectType":"Smoke","name":"SMK1","location":{"x":100,"y":0,"z":50}}
|
|
344
|
+
- {"action":"debug_shape","shape":"Sphere","location":{"x":0,"y":0,"z":0},"size":100,"duration":5}`,
|
|
270
345
|
inputSchema: {
|
|
271
346
|
type: 'object',
|
|
272
347
|
properties: {
|
|
@@ -327,7 +402,14 @@ export const consolidatedToolDefinitions = [
|
|
|
327
402
|
// 7. BLUEPRINT MANAGER - Blueprint operations
|
|
328
403
|
{
|
|
329
404
|
name: 'manage_blueprint',
|
|
330
|
-
description:
|
|
405
|
+
description: `Create new Blueprints and add components programmatically.
|
|
406
|
+
|
|
407
|
+
When to use this tool:
|
|
408
|
+
- Quickly scaffold a Blueprint asset or add a component to an existing Blueprint.
|
|
409
|
+
|
|
410
|
+
Examples:
|
|
411
|
+
- {"action":"create","name":"BP_Switch","blueprintType":"Actor","savePath":"/Game/Blueprints"}
|
|
412
|
+
- {"action":"add_component","name":"BP_Switch","componentType":"PointLightComponent","componentName":"KeyLight"}`,
|
|
331
413
|
inputSchema: {
|
|
332
414
|
type: 'object',
|
|
333
415
|
properties: {
|
|
@@ -362,7 +444,19 @@ export const consolidatedToolDefinitions = [
|
|
|
362
444
|
// 8. ENVIRONMENT BUILDER - Landscape and foliage
|
|
363
445
|
{
|
|
364
446
|
name: 'build_environment',
|
|
365
|
-
description:
|
|
447
|
+
description: `Environment authoring helpers (landscape, foliage).
|
|
448
|
+
|
|
449
|
+
When to use this tool:
|
|
450
|
+
- Create a procedural terrain alternative, add/paint foliage, or attempt a landscape workflow.
|
|
451
|
+
|
|
452
|
+
Important:
|
|
453
|
+
- Native Landscape creation via Python is limited and may return a helpful error suggesting Landscape Mode in the editor.
|
|
454
|
+
- Foliage helpers create FoliageType assets and support simple placement.
|
|
455
|
+
|
|
456
|
+
Examples:
|
|
457
|
+
- {"action":"create_landscape","name":"Landscape_Basic","sizeX":1024,"sizeY":1024}
|
|
458
|
+
- {"action":"add_foliage","name":"FT_Grass","meshPath":"/Game/Foliage/SM_Grass","density":300}
|
|
459
|
+
- {"action":"paint_foliage","foliageType":"/Game/Foliage/Types/FT_Grass","position":{"x":0,"y":0,"z":0},"brushSize":300}`,
|
|
366
460
|
inputSchema: {
|
|
367
461
|
type: 'object',
|
|
368
462
|
properties: {
|
|
@@ -413,7 +507,16 @@ export const consolidatedToolDefinitions = [
|
|
|
413
507
|
// 9. PERFORMANCE & AUDIO - System settings
|
|
414
508
|
{
|
|
415
509
|
name: 'system_control',
|
|
416
|
-
description:
|
|
510
|
+
description: `Performance toggles, quality settings, audio playback, simple UI helpers, screenshots, and engine lifecycle.
|
|
511
|
+
|
|
512
|
+
When to use this tool:
|
|
513
|
+
- Toggle profiling and FPS stats, adjust quality (sg.*), play a sound, create/show a basic widget, take a screenshot, or launch/quit the editor.
|
|
514
|
+
|
|
515
|
+
Examples:
|
|
516
|
+
- {"action":"show_fps","enabled":true}
|
|
517
|
+
- {"action":"set_quality","category":"Shadows","level":2}
|
|
518
|
+
- {"action":"play_sound","soundPath":"/Game/Audio/SFX/Click","volume":0.5}
|
|
519
|
+
- {"action":"screenshot","resolution":"1920x1080"}`,
|
|
417
520
|
inputSchema: {
|
|
418
521
|
type: 'object',
|
|
419
522
|
properties: {
|
|
@@ -483,7 +586,19 @@ export const consolidatedToolDefinitions = [
|
|
|
483
586
|
// 10. CONSOLE COMMAND - Universal tool
|
|
484
587
|
{
|
|
485
588
|
name: 'console_command',
|
|
486
|
-
description:
|
|
589
|
+
description: `Execute an Unreal console command with built-in safety.
|
|
590
|
+
|
|
591
|
+
When to use this tool:
|
|
592
|
+
- Fire a specific command (e.g., stat fps, viewmode wireframe, r.ScreenPercentage 75).
|
|
593
|
+
|
|
594
|
+
Safety:
|
|
595
|
+
- Dangerous commands are blocked (quit/exit, GPU crash triggers, unsafe visualizebuffer modes, etc.).
|
|
596
|
+
- Unknown commands will return a warning instead of crashing.
|
|
597
|
+
|
|
598
|
+
Examples:
|
|
599
|
+
- {"command":"stat fps"}
|
|
600
|
+
- {"command":"viewmode wireframe"}
|
|
601
|
+
- {"command":"r.ScreenPercentage 75"}`,
|
|
487
602
|
inputSchema: {
|
|
488
603
|
type: 'object',
|
|
489
604
|
properties: {
|
|
@@ -507,7 +622,17 @@ export const consolidatedToolDefinitions = [
|
|
|
507
622
|
// 11. REMOTE CONTROL PRESETS
|
|
508
623
|
{
|
|
509
624
|
name: 'manage_rc',
|
|
510
|
-
description:
|
|
625
|
+
description: `Create and manage Remote Control presets; expose actors/properties; set/get values.
|
|
626
|
+
|
|
627
|
+
When to use this tool:
|
|
628
|
+
- Automate Remote Control (RC) preset authoring and interaction from the assistant.
|
|
629
|
+
|
|
630
|
+
Examples:
|
|
631
|
+
- {"action":"create_preset","name":"LivePreset","path":"/Game/RCPresets"}
|
|
632
|
+
- {"action":"expose_actor","presetPath":"/Game/RCPresets/LivePreset","actorName":"CameraActor"}
|
|
633
|
+
- {"action":"expose_property","presetPath":"/Game/RCPresets/LivePreset","objectPath":"/Script/Engine.Default__Engine","propertyName":"GameUserSettings"}
|
|
634
|
+
- {"action":"list_fields","presetPath":"/Game/RCPresets/LivePreset"}
|
|
635
|
+
- {"action":"set_property","objectPath":"/Game/MyActor","propertyName":"CustomFloat","value":0.5}`,
|
|
511
636
|
inputSchema: {
|
|
512
637
|
type: 'object',
|
|
513
638
|
properties: {
|
|
@@ -542,7 +667,17 @@ export const consolidatedToolDefinitions = [
|
|
|
542
667
|
// 12. SEQUENCER / CINEMATICS
|
|
543
668
|
{
|
|
544
669
|
name: 'manage_sequence',
|
|
545
|
-
description:
|
|
670
|
+
description: `Create/open Level Sequences, bind actors, add cameras, and control playback.
|
|
671
|
+
|
|
672
|
+
When to use this tool:
|
|
673
|
+
- Build quick cinematics: create/open a sequence, add a camera or actors, tweak properties, and play.
|
|
674
|
+
|
|
675
|
+
Examples:
|
|
676
|
+
- {"action":"create","name":"Intro","path":"/Game/Cinematics"}
|
|
677
|
+
- {"action":"add_camera","spawnable":true}
|
|
678
|
+
- {"action":"add_actor","actorName":"Hero"}
|
|
679
|
+
- {"action":"play","loopMode":"once"}
|
|
680
|
+
- {"action":"set_properties","path":"/Game/Cinematics/Intro","frameRate":24,"lengthInFrames":480}`,
|
|
546
681
|
inputSchema: {
|
|
547
682
|
type: 'object',
|
|
548
683
|
properties: {
|
|
@@ -595,7 +730,14 @@ export const consolidatedToolDefinitions = [
|
|
|
595
730
|
// 13. INTROSPECTION
|
|
596
731
|
{
|
|
597
732
|
name: 'inspect',
|
|
598
|
-
description:
|
|
733
|
+
description: `Read object info and set properties with validation.
|
|
734
|
+
|
|
735
|
+
When to use this tool:
|
|
736
|
+
- Inspect an object by path (class default object or actor/component) and optionally modify properties.
|
|
737
|
+
|
|
738
|
+
Examples:
|
|
739
|
+
- {"action":"inspect_object","objectPath":"/Script/Engine.Default__Engine"}
|
|
740
|
+
- {"action":"set_property","objectPath":"/Game/MyActor","propertyName":"CustomBool","value":true}`,
|
|
599
741
|
inputSchema: {
|
|
600
742
|
type: 'object',
|
|
601
743
|
properties: {
|
|
@@ -4,7 +4,18 @@ export const toolDefinitions = [
|
|
|
4
4
|
// Asset Tools
|
|
5
5
|
{
|
|
6
6
|
name: 'list_assets',
|
|
7
|
-
description:
|
|
7
|
+
description: `List assets in a folder of the project.
|
|
8
|
+
|
|
9
|
+
When to use:
|
|
10
|
+
- Browse project content (use /Game; /Content is auto-mapped by the server).
|
|
11
|
+
- Get a quick inventory of assets in a subfolder to refine subsequent actions.
|
|
12
|
+
|
|
13
|
+
Notes:
|
|
14
|
+
- For /Game, the server may limit results for performance; prefer subfolders (e.g., /Game/ThirdPerson).
|
|
15
|
+
- Returns a structured list with Name/Path/Class/PackagePath when available.
|
|
16
|
+
|
|
17
|
+
Example:
|
|
18
|
+
- {"directory":"/Game/ThirdPerson","recursive":false}`,
|
|
8
19
|
inputSchema: {
|
|
9
20
|
type: 'object',
|
|
10
21
|
properties: {
|
|
@@ -35,7 +46,17 @@ export const toolDefinitions = [
|
|
|
35
46
|
},
|
|
36
47
|
{
|
|
37
48
|
name: 'import_asset',
|
|
38
|
-
description:
|
|
49
|
+
description: `Import a file from disk into the project (e.g., FBX, PNG, WAV, EXR).
|
|
50
|
+
|
|
51
|
+
When to use:
|
|
52
|
+
- Bring external content into /Game at a specific destination path.
|
|
53
|
+
|
|
54
|
+
Notes:
|
|
55
|
+
- destinationPath is a package path like /Game/Environment/Trees.
|
|
56
|
+
- Keep file names simple (avoid spaces and special characters).
|
|
57
|
+
|
|
58
|
+
Example:
|
|
59
|
+
- {"sourcePath":"C:/Temp/Tree.fbx","destinationPath":"/Game/Environment/Trees"}`,
|
|
39
60
|
inputSchema: {
|
|
40
61
|
type: 'object',
|
|
41
62
|
properties: {
|
|
@@ -58,7 +79,17 @@ export const toolDefinitions = [
|
|
|
58
79
|
// Actor Tools
|
|
59
80
|
{
|
|
60
81
|
name: 'spawn_actor',
|
|
61
|
-
description:
|
|
82
|
+
description: `Spawn a new actor in the current level.
|
|
83
|
+
|
|
84
|
+
When to use:
|
|
85
|
+
- Place a class (e.g., StaticMeshActor, CameraActor) or spawn from an asset path (e.g., /Engine/BasicShapes/Cube).
|
|
86
|
+
|
|
87
|
+
Notes:
|
|
88
|
+
- If an asset path is provided, a StaticMeshActor is auto-spawned with the mesh set.
|
|
89
|
+
- location/rotation are optional; defaults are used if omitted.
|
|
90
|
+
|
|
91
|
+
Example:
|
|
92
|
+
- {"classPath":"/Engine/BasicShapes/Cube","location":{"x":0,"y":0,"z":100}}`,
|
|
62
93
|
inputSchema: {
|
|
63
94
|
type: 'object',
|
|
64
95
|
properties: {
|
|
@@ -93,7 +124,13 @@ export const toolDefinitions = [
|
|
|
93
124
|
},
|
|
94
125
|
{
|
|
95
126
|
name: 'delete_actor',
|
|
96
|
-
description:
|
|
127
|
+
description: `Delete one or more actors by name/label.
|
|
128
|
+
|
|
129
|
+
When to use:
|
|
130
|
+
- Remove actors matching a label/name (case-insensitive).
|
|
131
|
+
|
|
132
|
+
Example:
|
|
133
|
+
- {"actorName":"Cube_1"}`,
|
|
97
134
|
inputSchema: {
|
|
98
135
|
type: 'object',
|
|
99
136
|
properties: {
|
|
@@ -114,7 +151,13 @@ export const toolDefinitions = [
|
|
|
114
151
|
// Material Tools
|
|
115
152
|
{
|
|
116
153
|
name: 'create_material',
|
|
117
|
-
description:
|
|
154
|
+
description: `Create a simple Material asset at a path.
|
|
155
|
+
|
|
156
|
+
When to use:
|
|
157
|
+
- Quickly scaffold a basic material you can edit later.
|
|
158
|
+
|
|
159
|
+
Example:
|
|
160
|
+
- {"name":"M_Mask","path":"/Game/Materials"}`,
|
|
118
161
|
inputSchema: {
|
|
119
162
|
type: 'object',
|
|
120
163
|
properties: {
|
|
@@ -135,7 +178,13 @@ export const toolDefinitions = [
|
|
|
135
178
|
},
|
|
136
179
|
{
|
|
137
180
|
name: 'apply_material_to_actor',
|
|
138
|
-
description:
|
|
181
|
+
description: `Assign a material to an actor's mesh component.
|
|
182
|
+
|
|
183
|
+
When to use:
|
|
184
|
+
- Swap an actor's material by path; slotIndex defaults to 0.
|
|
185
|
+
|
|
186
|
+
Example:
|
|
187
|
+
- {"actorPath":"/Game/LevelActors/Cube_1","materialPath":"/Game/Materials/M_Mask","slotIndex":0}`,
|
|
139
188
|
inputSchema: {
|
|
140
189
|
type: 'object',
|
|
141
190
|
properties: {
|
|
@@ -157,7 +206,10 @@ export const toolDefinitions = [
|
|
|
157
206
|
// Editor Tools
|
|
158
207
|
{
|
|
159
208
|
name: 'play_in_editor',
|
|
160
|
-
description:
|
|
209
|
+
description: `Start a Play-In-Editor (PIE) session.
|
|
210
|
+
|
|
211
|
+
When to use:
|
|
212
|
+
- Begin simulating the level in the editor.`,
|
|
161
213
|
inputSchema: {
|
|
162
214
|
type: 'object',
|
|
163
215
|
properties: {}
|
|
@@ -173,7 +225,10 @@ export const toolDefinitions = [
|
|
|
173
225
|
},
|
|
174
226
|
{
|
|
175
227
|
name: 'stop_play_in_editor',
|
|
176
|
-
description:
|
|
228
|
+
description: `Stop the active PIE session.
|
|
229
|
+
|
|
230
|
+
When to use:
|
|
231
|
+
- End simulation and return to the editor.`,
|
|
177
232
|
inputSchema: {
|
|
178
233
|
type: 'object',
|
|
179
234
|
properties: {}
|
|
@@ -189,7 +244,16 @@ export const toolDefinitions = [
|
|
|
189
244
|
},
|
|
190
245
|
{
|
|
191
246
|
name: 'set_camera',
|
|
192
|
-
description:
|
|
247
|
+
description: `Reposition the editor viewport camera.
|
|
248
|
+
|
|
249
|
+
When to use:
|
|
250
|
+
- Move/aim the camera in the editor for framing.
|
|
251
|
+
|
|
252
|
+
Notes:
|
|
253
|
+
- Accepts object or array formats; values are normalized.
|
|
254
|
+
|
|
255
|
+
Example:
|
|
256
|
+
- {"location":{"x":0,"y":-600,"z":250},"rotation":{"pitch":0,"yaw":0,"roll":0}}`,
|
|
193
257
|
inputSchema: {
|
|
194
258
|
type: 'object',
|
|
195
259
|
properties: {
|
|
@@ -225,7 +289,13 @@ export const toolDefinitions = [
|
|
|
225
289
|
// Animation Tools
|
|
226
290
|
{
|
|
227
291
|
name: 'create_animation_blueprint',
|
|
228
|
-
description:
|
|
292
|
+
description: `Create an Animation Blueprint for a skeleton.
|
|
293
|
+
|
|
294
|
+
When to use:
|
|
295
|
+
- Generate a starter Anim BP for a given skeleton.
|
|
296
|
+
|
|
297
|
+
Example:
|
|
298
|
+
- {"name":"ABP_Hero","skeletonPath":"/Game/Characters/Hero/SK_Hero_Skeleton","savePath":"/Game/Characters/Hero"}`,
|
|
229
299
|
inputSchema: {
|
|
230
300
|
type: 'object',
|
|
231
301
|
properties: {
|
|
@@ -246,7 +316,13 @@ export const toolDefinitions = [
|
|
|
246
316
|
},
|
|
247
317
|
{
|
|
248
318
|
name: 'play_animation_montage',
|
|
249
|
-
description:
|
|
319
|
+
description: `Play a Montage/Animation on an actor.
|
|
320
|
+
|
|
321
|
+
When to use:
|
|
322
|
+
- Trigger a montage on a possessed or editor actor.
|
|
323
|
+
|
|
324
|
+
Example:
|
|
325
|
+
- {"actorName":"Hero","montagePath":"/Game/Anim/MT_Attack","playRate":1.0}`,
|
|
250
326
|
inputSchema: {
|
|
251
327
|
type: 'object',
|
|
252
328
|
properties: {
|
|
@@ -269,7 +345,13 @@ export const toolDefinitions = [
|
|
|
269
345
|
// Physics Tools
|
|
270
346
|
{
|
|
271
347
|
name: 'setup_ragdoll',
|
|
272
|
-
description:
|
|
348
|
+
description: `Enable simple ragdoll using a physics asset.
|
|
349
|
+
|
|
350
|
+
When to use:
|
|
351
|
+
- Toggle ragdoll behavior on a character skeleton.
|
|
352
|
+
|
|
353
|
+
Example:
|
|
354
|
+
- {"skeletonPath":"/Game/Characters/Hero/SK_Hero_Skeleton","physicsAssetName":"PHYS_Hero","blendWeight":1.0}`,
|
|
273
355
|
inputSchema: {
|
|
274
356
|
type: 'object',
|
|
275
357
|
properties: {
|
|
@@ -290,7 +372,10 @@ export const toolDefinitions = [
|
|
|
290
372
|
},
|
|
291
373
|
{
|
|
292
374
|
name: 'apply_force',
|
|
293
|
-
description:
|
|
375
|
+
description: `Apply a world-space force vector to an actor with physics enabled.
|
|
376
|
+
|
|
377
|
+
Example:
|
|
378
|
+
- {"actorName":"PhysicsBox","force":{"x":0,"y":0,"z":5000}}`,
|
|
294
379
|
inputSchema: {
|
|
295
380
|
type: 'object',
|
|
296
381
|
properties: {
|
|
@@ -320,7 +405,13 @@ export const toolDefinitions = [
|
|
|
320
405
|
// Niagara Tools
|
|
321
406
|
{
|
|
322
407
|
name: 'create_particle_effect',
|
|
323
|
-
description:
|
|
408
|
+
description: `Create a simple particle/FX by tag.
|
|
409
|
+
|
|
410
|
+
When to use:
|
|
411
|
+
- Quickly drop a generic Fire/Smoke/Water effect for previews.
|
|
412
|
+
|
|
413
|
+
Example:
|
|
414
|
+
- {"effectType":"Smoke","name":"SMK1","location":{"x":100,"y":0,"z":50}}`,
|
|
324
415
|
inputSchema: {
|
|
325
416
|
type: 'object',
|
|
326
417
|
properties: {
|
|
@@ -349,7 +440,10 @@ export const toolDefinitions = [
|
|
|
349
440
|
},
|
|
350
441
|
{
|
|
351
442
|
name: 'spawn_niagara_system',
|
|
352
|
-
description:
|
|
443
|
+
description: `Spawn a Niagara system at a location.
|
|
444
|
+
|
|
445
|
+
Example:
|
|
446
|
+
- {"systemPath":"/Game/FX/NS_Explosion","location":{"x":0,"y":0,"z":200},"scale":1.0}`,
|
|
353
447
|
inputSchema: {
|
|
354
448
|
type: 'object',
|
|
355
449
|
properties: {
|
|
@@ -379,7 +473,10 @@ export const toolDefinitions = [
|
|
|
379
473
|
// Blueprint Tools
|
|
380
474
|
{
|
|
381
475
|
name: 'create_blueprint',
|
|
382
|
-
description:
|
|
476
|
+
description: `Create a new Blueprint asset at a path.
|
|
477
|
+
|
|
478
|
+
Example:
|
|
479
|
+
- {"name":"BP_Switch","blueprintType":"Actor","savePath":"/Game/Blueprints"}`,
|
|
383
480
|
inputSchema: {
|
|
384
481
|
type: 'object',
|
|
385
482
|
properties: {
|
|
@@ -400,7 +497,10 @@ export const toolDefinitions = [
|
|
|
400
497
|
},
|
|
401
498
|
{
|
|
402
499
|
name: 'add_blueprint_component',
|
|
403
|
-
description:
|
|
500
|
+
description: `Add a component to an existing Blueprint.
|
|
501
|
+
|
|
502
|
+
Example:
|
|
503
|
+
- {"blueprintName":"BP_Switch","componentType":"PointLightComponent","componentName":"KeyLight"}`,
|
|
404
504
|
inputSchema: {
|
|
405
505
|
type: 'object',
|
|
406
506
|
properties: {
|
|
@@ -424,7 +524,10 @@ export const toolDefinitions = [
|
|
|
424
524
|
// Level Tools
|
|
425
525
|
{
|
|
426
526
|
name: 'load_level',
|
|
427
|
-
description:
|
|
527
|
+
description: `Load a level by path (e.g., /Game/Maps/Lobby).
|
|
528
|
+
|
|
529
|
+
Example:
|
|
530
|
+
- {"levelPath":"/Game/Maps/Lobby","streaming":false}`,
|
|
428
531
|
inputSchema: {
|
|
429
532
|
type: 'object',
|
|
430
533
|
properties: {
|
|
@@ -444,7 +547,10 @@ export const toolDefinitions = [
|
|
|
444
547
|
},
|
|
445
548
|
{
|
|
446
549
|
name: 'save_level',
|
|
447
|
-
description:
|
|
550
|
+
description: `Save the current level to a path or by name.
|
|
551
|
+
|
|
552
|
+
Example:
|
|
553
|
+
- {"levelName":"Lobby","savePath":"/Game/Maps"}`,
|
|
448
554
|
inputSchema: {
|
|
449
555
|
type: 'object',
|
|
450
556
|
properties: {
|
|
@@ -463,7 +569,10 @@ export const toolDefinitions = [
|
|
|
463
569
|
},
|
|
464
570
|
{
|
|
465
571
|
name: 'stream_level',
|
|
466
|
-
description:
|
|
572
|
+
description: `Stream in/out a sublevel and set visibility.
|
|
573
|
+
|
|
574
|
+
Example:
|
|
575
|
+
- {'levelName':'Sublevel_A','shouldBeLoaded':true,'shouldBeVisible':true}`,
|
|
467
576
|
inputSchema: {
|
|
468
577
|
type: 'object',
|
|
469
578
|
properties: {
|
|
@@ -487,7 +596,11 @@ export const toolDefinitions = [
|
|
|
487
596
|
// Lighting Tools
|
|
488
597
|
{
|
|
489
598
|
name: 'create_light',
|
|
490
|
-
description:
|
|
599
|
+
description: `Create a light (Directional/Point/Spot/Rect/Sky) with optional transform/intensity.
|
|
600
|
+
|
|
601
|
+
Examples:
|
|
602
|
+
- {'lightType':'Directional','name':'KeyLight','intensity':5.0}
|
|
603
|
+
- {'lightType':'Point','name':'Fill','location':{'x':0,'y':100,'z':200},'intensity':2000}`,
|
|
491
604
|
inputSchema: {
|
|
492
605
|
type: 'object',
|
|
493
606
|
properties: {
|
|
@@ -516,7 +629,7 @@ export const toolDefinitions = [
|
|
|
516
629
|
},
|
|
517
630
|
{
|
|
518
631
|
name: 'build_lighting',
|
|
519
|
-
description: '
|
|
632
|
+
description: 'Start a lighting build at an optional quality level (Preview/Medium/High/Production).',
|
|
520
633
|
inputSchema: {
|
|
521
634
|
type: 'object',
|
|
522
635
|
properties: {
|
|
@@ -536,7 +649,7 @@ export const toolDefinitions = [
|
|
|
536
649
|
// Landscape Tools
|
|
537
650
|
{
|
|
538
651
|
name: 'create_landscape',
|
|
539
|
-
description: '
|
|
652
|
+
description: 'Attempt to create a landscape. Native Python APIs are limited; you may receive a guidance message to use Landscape Mode in the editor.',
|
|
540
653
|
inputSchema: {
|
|
541
654
|
type: 'object',
|
|
542
655
|
properties: {
|
|
@@ -558,7 +671,7 @@ export const toolDefinitions = [
|
|
|
558
671
|
},
|
|
559
672
|
{
|
|
560
673
|
name: 'sculpt_landscape',
|
|
561
|
-
description: 'Sculpt
|
|
674
|
+
description: 'Sculpt a landscape using editor tools (best-effort; some operations may require manual Landscape Mode).',
|
|
562
675
|
inputSchema: {
|
|
563
676
|
type: 'object',
|
|
564
677
|
properties: {
|
|
@@ -581,7 +694,10 @@ export const toolDefinitions = [
|
|
|
581
694
|
// Foliage Tools
|
|
582
695
|
{
|
|
583
696
|
name: 'add_foliage_type',
|
|
584
|
-
description:
|
|
697
|
+
description: `Create or load a FoliageType asset for instanced foliage workflows.
|
|
698
|
+
|
|
699
|
+
Example:
|
|
700
|
+
- {'name':'FT_Grass','meshPath':'/Game/Foliage/SM_Grass','density':300}`,
|
|
585
701
|
inputSchema: {
|
|
586
702
|
type: 'object',
|
|
587
703
|
properties: {
|