unreal-engine-mcp-server 0.2.1
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/.dockerignore +57 -0
- package/.env.production +25 -0
- package/.eslintrc.json +54 -0
- package/.github/workflows/publish-mcp.yml +75 -0
- package/Dockerfile +54 -0
- package/LICENSE +21 -0
- package/Public/icon.png +0 -0
- package/README.md +209 -0
- package/claude_desktop_config_example.json +13 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.js +7 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.js +484 -0
- package/dist/prompts/index.d.ts +14 -0
- package/dist/prompts/index.js +38 -0
- package/dist/python-utils.d.ts +29 -0
- package/dist/python-utils.js +54 -0
- package/dist/resources/actors.d.ts +13 -0
- package/dist/resources/actors.js +83 -0
- package/dist/resources/assets.d.ts +23 -0
- package/dist/resources/assets.js +245 -0
- package/dist/resources/levels.d.ts +17 -0
- package/dist/resources/levels.js +94 -0
- package/dist/tools/actors.d.ts +51 -0
- package/dist/tools/actors.js +459 -0
- package/dist/tools/animation.d.ts +196 -0
- package/dist/tools/animation.js +579 -0
- package/dist/tools/assets.d.ts +21 -0
- package/dist/tools/assets.js +304 -0
- package/dist/tools/audio.d.ts +170 -0
- package/dist/tools/audio.js +416 -0
- package/dist/tools/blueprint.d.ts +144 -0
- package/dist/tools/blueprint.js +652 -0
- package/dist/tools/build_environment_advanced.d.ts +66 -0
- package/dist/tools/build_environment_advanced.js +484 -0
- package/dist/tools/consolidated-tool-definitions.d.ts +2598 -0
- package/dist/tools/consolidated-tool-definitions.js +607 -0
- package/dist/tools/consolidated-tool-handlers.d.ts +2 -0
- package/dist/tools/consolidated-tool-handlers.js +1050 -0
- package/dist/tools/debug.d.ts +185 -0
- package/dist/tools/debug.js +265 -0
- package/dist/tools/editor.d.ts +88 -0
- package/dist/tools/editor.js +365 -0
- package/dist/tools/engine.d.ts +30 -0
- package/dist/tools/engine.js +36 -0
- package/dist/tools/foliage.d.ts +155 -0
- package/dist/tools/foliage.js +525 -0
- package/dist/tools/introspection.d.ts +98 -0
- package/dist/tools/introspection.js +683 -0
- package/dist/tools/landscape.d.ts +158 -0
- package/dist/tools/landscape.js +375 -0
- package/dist/tools/level.d.ts +110 -0
- package/dist/tools/level.js +362 -0
- package/dist/tools/lighting.d.ts +159 -0
- package/dist/tools/lighting.js +1179 -0
- package/dist/tools/materials.d.ts +34 -0
- package/dist/tools/materials.js +146 -0
- package/dist/tools/niagara.d.ts +145 -0
- package/dist/tools/niagara.js +289 -0
- package/dist/tools/performance.d.ts +163 -0
- package/dist/tools/performance.js +412 -0
- package/dist/tools/physics.d.ts +189 -0
- package/dist/tools/physics.js +784 -0
- package/dist/tools/rc.d.ts +110 -0
- package/dist/tools/rc.js +363 -0
- package/dist/tools/sequence.d.ts +112 -0
- package/dist/tools/sequence.js +675 -0
- package/dist/tools/tool-definitions.d.ts +4919 -0
- package/dist/tools/tool-definitions.js +891 -0
- package/dist/tools/tool-handlers.d.ts +47 -0
- package/dist/tools/tool-handlers.js +830 -0
- package/dist/tools/ui.d.ts +171 -0
- package/dist/tools/ui.js +337 -0
- package/dist/tools/visual.d.ts +29 -0
- package/dist/tools/visual.js +67 -0
- package/dist/types/env.d.ts +10 -0
- package/dist/types/env.js +18 -0
- package/dist/types/index.d.ts +323 -0
- package/dist/types/index.js +28 -0
- package/dist/types/tool-types.d.ts +274 -0
- package/dist/types/tool-types.js +13 -0
- package/dist/unreal-bridge.d.ts +126 -0
- package/dist/unreal-bridge.js +992 -0
- package/dist/utils/cache-manager.d.ts +64 -0
- package/dist/utils/cache-manager.js +176 -0
- package/dist/utils/error-handler.d.ts +66 -0
- package/dist/utils/error-handler.js +243 -0
- package/dist/utils/errors.d.ts +133 -0
- package/dist/utils/errors.js +256 -0
- package/dist/utils/http.d.ts +26 -0
- package/dist/utils/http.js +135 -0
- package/dist/utils/logger.d.ts +12 -0
- package/dist/utils/logger.js +32 -0
- package/dist/utils/normalize.d.ts +17 -0
- package/dist/utils/normalize.js +49 -0
- package/dist/utils/response-validator.d.ts +34 -0
- package/dist/utils/response-validator.js +121 -0
- package/dist/utils/safe-json.d.ts +4 -0
- package/dist/utils/safe-json.js +97 -0
- package/dist/utils/stdio-redirect.d.ts +2 -0
- package/dist/utils/stdio-redirect.js +20 -0
- package/dist/utils/validation.d.ts +50 -0
- package/dist/utils/validation.js +173 -0
- package/mcp-config-example.json +14 -0
- package/package.json +63 -0
- package/server.json +60 -0
- package/src/cli.ts +7 -0
- package/src/index.ts +543 -0
- package/src/prompts/index.ts +51 -0
- package/src/python/editor_compat.py +181 -0
- package/src/python-utils.ts +57 -0
- package/src/resources/actors.ts +92 -0
- package/src/resources/assets.ts +251 -0
- package/src/resources/levels.ts +83 -0
- package/src/tools/actors.ts +480 -0
- package/src/tools/animation.ts +713 -0
- package/src/tools/assets.ts +305 -0
- package/src/tools/audio.ts +548 -0
- package/src/tools/blueprint.ts +736 -0
- package/src/tools/build_environment_advanced.ts +526 -0
- package/src/tools/consolidated-tool-definitions.ts +619 -0
- package/src/tools/consolidated-tool-handlers.ts +1093 -0
- package/src/tools/debug.ts +368 -0
- package/src/tools/editor.ts +360 -0
- package/src/tools/engine.ts +32 -0
- package/src/tools/foliage.ts +652 -0
- package/src/tools/introspection.ts +778 -0
- package/src/tools/landscape.ts +523 -0
- package/src/tools/level.ts +410 -0
- package/src/tools/lighting.ts +1316 -0
- package/src/tools/materials.ts +148 -0
- package/src/tools/niagara.ts +312 -0
- package/src/tools/performance.ts +549 -0
- package/src/tools/physics.ts +924 -0
- package/src/tools/rc.ts +437 -0
- package/src/tools/sequence.ts +791 -0
- package/src/tools/tool-definitions.ts +907 -0
- package/src/tools/tool-handlers.ts +941 -0
- package/src/tools/ui.ts +499 -0
- package/src/tools/visual.ts +60 -0
- package/src/types/env.ts +27 -0
- package/src/types/index.ts +414 -0
- package/src/types/tool-types.ts +343 -0
- package/src/unreal-bridge.ts +1118 -0
- package/src/utils/cache-manager.ts +213 -0
- package/src/utils/error-handler.ts +320 -0
- package/src/utils/errors.ts +312 -0
- package/src/utils/http.ts +184 -0
- package/src/utils/logger.ts +30 -0
- package/src/utils/normalize.ts +54 -0
- package/src/utils/response-validator.ts +145 -0
- package/src/utils/safe-json.ts +112 -0
- package/src/utils/stdio-redirect.ts +18 -0
- package/src/utils/validation.ts +212 -0
- package/tsconfig.json +33 -0
|
@@ -0,0 +1,607 @@
|
|
|
1
|
+
// Consolidated tool definitions - reduced from 36 to 10 multi-purpose tools
|
|
2
|
+
export const consolidatedToolDefinitions = [
|
|
3
|
+
// 1. ASSET MANAGER - Combines asset operations
|
|
4
|
+
{
|
|
5
|
+
name: 'manage_asset',
|
|
6
|
+
description: 'Manage assets - list, import, create materials',
|
|
7
|
+
inputSchema: {
|
|
8
|
+
type: 'object',
|
|
9
|
+
properties: {
|
|
10
|
+
action: {
|
|
11
|
+
type: 'string',
|
|
12
|
+
enum: ['list', 'import', 'create_material'],
|
|
13
|
+
description: 'Action to perform'
|
|
14
|
+
},
|
|
15
|
+
// For list
|
|
16
|
+
directory: { type: 'string', description: 'Directory path to list (shows immediate children only)' },
|
|
17
|
+
// For import
|
|
18
|
+
sourcePath: { type: 'string', description: 'Source file path' },
|
|
19
|
+
destinationPath: { type: 'string', description: 'Destination path' },
|
|
20
|
+
// For create_material
|
|
21
|
+
name: { type: 'string', description: 'Asset name' },
|
|
22
|
+
path: { type: 'string', description: 'Save path' }
|
|
23
|
+
},
|
|
24
|
+
required: ['action']
|
|
25
|
+
},
|
|
26
|
+
outputSchema: {
|
|
27
|
+
type: 'object',
|
|
28
|
+
properties: {
|
|
29
|
+
success: { type: 'boolean', description: 'Whether the operation succeeded' },
|
|
30
|
+
assets: {
|
|
31
|
+
type: 'array',
|
|
32
|
+
description: 'List of assets (for list action)',
|
|
33
|
+
items: {
|
|
34
|
+
type: 'object',
|
|
35
|
+
properties: {
|
|
36
|
+
Name: { type: 'string' },
|
|
37
|
+
Path: { type: 'string' },
|
|
38
|
+
Class: { type: 'string' },
|
|
39
|
+
PackagePath: { type: 'string' }
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
paths: { type: 'array', items: { type: 'string' }, description: 'Imported asset paths (for import)' },
|
|
44
|
+
materialPath: { type: 'string', description: 'Created material path (for create_material)' },
|
|
45
|
+
message: { type: 'string', description: 'Status message' },
|
|
46
|
+
error: { type: 'string', description: 'Error message if failed' }
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
// 2. ACTOR CONTROL - Combines actor operations
|
|
51
|
+
{
|
|
52
|
+
name: 'control_actor',
|
|
53
|
+
description: 'Control actors - spawn, delete, apply physics. For spawning, supports both actor classes (e.g., StaticMeshActor, CameraActor) and asset paths (e.g., /Engine/BasicShapes/Cube) which will auto-spawn as StaticMeshActor',
|
|
54
|
+
inputSchema: {
|
|
55
|
+
type: 'object',
|
|
56
|
+
properties: {
|
|
57
|
+
action: {
|
|
58
|
+
type: 'string',
|
|
59
|
+
enum: ['spawn', 'delete', 'apply_force'],
|
|
60
|
+
description: 'Action to perform'
|
|
61
|
+
},
|
|
62
|
+
// Common
|
|
63
|
+
actorName: { type: 'string', description: 'Actor name (optional for spawn, auto-generated if not provided)' },
|
|
64
|
+
classPath: {
|
|
65
|
+
type: 'string',
|
|
66
|
+
description: 'Actor class (e.g., "StaticMeshActor", "CameraActor") OR asset path (e.g., "/Engine/BasicShapes/Cube", "/Game/MyMesh"). Asset paths will automatically spawn as StaticMeshActor with the mesh applied'
|
|
67
|
+
},
|
|
68
|
+
// Transform
|
|
69
|
+
location: {
|
|
70
|
+
type: 'object',
|
|
71
|
+
properties: {
|
|
72
|
+
x: { type: 'number' },
|
|
73
|
+
y: { type: 'number' },
|
|
74
|
+
z: { type: 'number' }
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
rotation: {
|
|
78
|
+
type: 'object',
|
|
79
|
+
properties: {
|
|
80
|
+
pitch: { type: 'number' },
|
|
81
|
+
yaw: { type: 'number' },
|
|
82
|
+
roll: { type: 'number' }
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
// Physics
|
|
86
|
+
force: {
|
|
87
|
+
type: 'object',
|
|
88
|
+
properties: {
|
|
89
|
+
x: { type: 'number' },
|
|
90
|
+
y: { type: 'number' },
|
|
91
|
+
z: { type: 'number' }
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
required: ['action']
|
|
96
|
+
},
|
|
97
|
+
outputSchema: {
|
|
98
|
+
type: 'object',
|
|
99
|
+
properties: {
|
|
100
|
+
success: { type: 'boolean', description: 'Whether the operation succeeded' },
|
|
101
|
+
actor: { type: 'string', description: 'Spawned actor name (for spawn)' },
|
|
102
|
+
deleted: { type: 'string', description: 'Deleted actor name (for delete)' },
|
|
103
|
+
physicsEnabled: { type: 'boolean', description: 'Physics state (for apply_force)' },
|
|
104
|
+
message: { type: 'string', description: 'Status message' },
|
|
105
|
+
error: { type: 'string', description: 'Error message if failed' }
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
// 3. EDITOR CONTROL - Combines editor operations
|
|
110
|
+
{
|
|
111
|
+
name: 'control_editor',
|
|
112
|
+
description: 'Control editor - PIE mode, camera, viewport',
|
|
113
|
+
inputSchema: {
|
|
114
|
+
type: 'object',
|
|
115
|
+
properties: {
|
|
116
|
+
action: {
|
|
117
|
+
type: 'string',
|
|
118
|
+
enum: ['play', 'stop', 'set_camera', 'set_view_mode'],
|
|
119
|
+
description: 'Editor action'
|
|
120
|
+
},
|
|
121
|
+
// Camera
|
|
122
|
+
location: {
|
|
123
|
+
type: 'object',
|
|
124
|
+
properties: {
|
|
125
|
+
x: { type: 'number' },
|
|
126
|
+
y: { type: 'number' },
|
|
127
|
+
z: { type: 'number' }
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
rotation: {
|
|
131
|
+
type: 'object',
|
|
132
|
+
properties: {
|
|
133
|
+
pitch: { type: 'number' },
|
|
134
|
+
yaw: { type: 'number' },
|
|
135
|
+
roll: { type: 'number' }
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
// View mode
|
|
139
|
+
viewMode: {
|
|
140
|
+
type: 'string',
|
|
141
|
+
description: 'View mode (Lit, Unlit, Wireframe, etc.)'
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
required: ['action']
|
|
145
|
+
},
|
|
146
|
+
outputSchema: {
|
|
147
|
+
type: 'object',
|
|
148
|
+
properties: {
|
|
149
|
+
success: { type: 'boolean', description: 'Whether the operation succeeded' },
|
|
150
|
+
playing: { type: 'boolean', description: 'PIE play state' },
|
|
151
|
+
location: {
|
|
152
|
+
type: 'array',
|
|
153
|
+
items: { type: 'number' },
|
|
154
|
+
description: 'Camera location [x, y, z]'
|
|
155
|
+
},
|
|
156
|
+
rotation: {
|
|
157
|
+
type: 'array',
|
|
158
|
+
items: { type: 'number' },
|
|
159
|
+
description: 'Camera rotation [pitch, yaw, roll]'
|
|
160
|
+
},
|
|
161
|
+
viewMode: { type: 'string', description: 'Current view mode' },
|
|
162
|
+
message: { type: 'string', description: 'Status message' }
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
// 4. LEVEL MANAGER - Combines level and lighting operations
|
|
167
|
+
{
|
|
168
|
+
name: 'manage_level',
|
|
169
|
+
description: 'Manage levels and lighting',
|
|
170
|
+
inputSchema: {
|
|
171
|
+
type: 'object',
|
|
172
|
+
properties: {
|
|
173
|
+
action: {
|
|
174
|
+
type: 'string',
|
|
175
|
+
enum: ['load', 'save', 'stream', 'create_light', 'build_lighting'],
|
|
176
|
+
description: 'Level action'
|
|
177
|
+
},
|
|
178
|
+
// Level
|
|
179
|
+
levelPath: { type: 'string', description: 'Level path' },
|
|
180
|
+
levelName: { type: 'string', description: 'Level name' },
|
|
181
|
+
streaming: { type: 'boolean', description: 'Use streaming' },
|
|
182
|
+
shouldBeLoaded: { type: 'boolean', description: 'Load or unload' },
|
|
183
|
+
shouldBeVisible: { type: 'boolean', description: 'Visibility' },
|
|
184
|
+
// Lighting
|
|
185
|
+
lightType: {
|
|
186
|
+
type: 'string',
|
|
187
|
+
enum: ['Directional', 'Point', 'Spot', 'Rect'],
|
|
188
|
+
description: 'Light type'
|
|
189
|
+
},
|
|
190
|
+
name: { type: 'string', description: 'Object name' },
|
|
191
|
+
location: {
|
|
192
|
+
type: 'object',
|
|
193
|
+
properties: {
|
|
194
|
+
x: { type: 'number' },
|
|
195
|
+
y: { type: 'number' },
|
|
196
|
+
z: { type: 'number' }
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
intensity: { type: 'number', description: 'Light intensity' },
|
|
200
|
+
quality: {
|
|
201
|
+
type: 'string',
|
|
202
|
+
enum: ['Preview', 'Medium', 'High', 'Production'],
|
|
203
|
+
description: 'Build quality'
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
required: ['action']
|
|
207
|
+
},
|
|
208
|
+
outputSchema: {
|
|
209
|
+
type: 'object',
|
|
210
|
+
properties: {
|
|
211
|
+
success: { type: 'boolean', description: 'Whether the operation succeeded' },
|
|
212
|
+
levelName: { type: 'string', description: 'Level name' },
|
|
213
|
+
loaded: { type: 'boolean', description: 'Level loaded state' },
|
|
214
|
+
visible: { type: 'boolean', description: 'Level visibility' },
|
|
215
|
+
lightName: { type: 'string', description: 'Created light name' },
|
|
216
|
+
buildQuality: { type: 'string', description: 'Lighting build quality used' },
|
|
217
|
+
message: { type: 'string', description: 'Status message' }
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
// 5. ANIMATION SYSTEM - Combines animation and physics setup
|
|
222
|
+
{
|
|
223
|
+
name: 'animation_physics',
|
|
224
|
+
description: 'Animation and physics systems',
|
|
225
|
+
inputSchema: {
|
|
226
|
+
type: 'object',
|
|
227
|
+
properties: {
|
|
228
|
+
action: {
|
|
229
|
+
type: 'string',
|
|
230
|
+
enum: ['create_animation_bp', 'play_montage', 'setup_ragdoll'],
|
|
231
|
+
description: 'Action type'
|
|
232
|
+
},
|
|
233
|
+
// Common
|
|
234
|
+
name: { type: 'string', description: 'Asset name' },
|
|
235
|
+
actorName: { type: 'string', description: 'Actor name' },
|
|
236
|
+
// Animation
|
|
237
|
+
skeletonPath: { type: 'string', description: 'Skeleton path' },
|
|
238
|
+
montagePath: { type: 'string', description: 'Montage path' },
|
|
239
|
+
animationPath: { type: 'string', description: 'Animation path' },
|
|
240
|
+
playRate: { type: 'number', description: 'Play rate' },
|
|
241
|
+
// Physics
|
|
242
|
+
physicsAssetName: { type: 'string', description: 'Physics asset' },
|
|
243
|
+
blendWeight: { type: 'number', description: 'Blend weight' },
|
|
244
|
+
savePath: { type: 'string', description: 'Save location' }
|
|
245
|
+
},
|
|
246
|
+
required: ['action']
|
|
247
|
+
},
|
|
248
|
+
outputSchema: {
|
|
249
|
+
type: 'object',
|
|
250
|
+
properties: {
|
|
251
|
+
success: { type: 'boolean', description: 'Whether the operation succeeded' },
|
|
252
|
+
blueprintPath: { type: 'string', description: 'Created animation blueprint path' },
|
|
253
|
+
playing: { type: 'boolean', description: 'Montage playing state' },
|
|
254
|
+
playRate: { type: 'number', description: 'Current play rate' },
|
|
255
|
+
ragdollActive: { type: 'boolean', description: 'Ragdoll activation state' },
|
|
256
|
+
message: { type: 'string', description: 'Status message' }
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
// 6. EFFECTS SYSTEM - Combines particles and visual effects
|
|
261
|
+
{
|
|
262
|
+
name: 'create_effect',
|
|
263
|
+
description: 'Create visual effects - particles, Niagara',
|
|
264
|
+
inputSchema: {
|
|
265
|
+
type: 'object',
|
|
266
|
+
properties: {
|
|
267
|
+
action: {
|
|
268
|
+
type: 'string',
|
|
269
|
+
enum: ['particle', 'niagara', 'debug_shape'],
|
|
270
|
+
description: 'Effect type'
|
|
271
|
+
},
|
|
272
|
+
// Common
|
|
273
|
+
name: { type: 'string', description: 'Effect name' },
|
|
274
|
+
location: {
|
|
275
|
+
type: 'object',
|
|
276
|
+
properties: {
|
|
277
|
+
x: { type: 'number' },
|
|
278
|
+
y: { type: 'number' },
|
|
279
|
+
z: { type: 'number' }
|
|
280
|
+
}
|
|
281
|
+
},
|
|
282
|
+
// Particles
|
|
283
|
+
effectType: {
|
|
284
|
+
type: 'string',
|
|
285
|
+
description: 'Effect type (Fire, Smoke, Water, etc.)'
|
|
286
|
+
},
|
|
287
|
+
systemPath: { type: 'string', description: 'Niagara system path' },
|
|
288
|
+
scale: { type: 'number', description: 'Scale factor' },
|
|
289
|
+
// Debug
|
|
290
|
+
shape: {
|
|
291
|
+
type: 'string',
|
|
292
|
+
description: 'Debug shape (Line, Box, Sphere, etc.)'
|
|
293
|
+
},
|
|
294
|
+
size: { type: 'number', description: 'Size/radius' },
|
|
295
|
+
color: {
|
|
296
|
+
type: 'array',
|
|
297
|
+
items: { type: 'number' },
|
|
298
|
+
description: 'RGBA color'
|
|
299
|
+
},
|
|
300
|
+
duration: { type: 'number', description: 'Duration' }
|
|
301
|
+
},
|
|
302
|
+
required: ['action']
|
|
303
|
+
},
|
|
304
|
+
outputSchema: {
|
|
305
|
+
type: 'object',
|
|
306
|
+
properties: {
|
|
307
|
+
success: { type: 'boolean', description: 'Whether the operation succeeded' },
|
|
308
|
+
effectName: { type: 'string', description: 'Created effect name' },
|
|
309
|
+
effectPath: { type: 'string', description: 'Effect asset path' },
|
|
310
|
+
spawned: { type: 'boolean', description: 'Whether effect was spawned in level' },
|
|
311
|
+
location: {
|
|
312
|
+
type: 'array',
|
|
313
|
+
items: { type: 'number' },
|
|
314
|
+
description: 'Effect location [x, y, z]'
|
|
315
|
+
},
|
|
316
|
+
message: { type: 'string', description: 'Status message' }
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
},
|
|
320
|
+
// 7. BLUEPRINT MANAGER - Blueprint operations
|
|
321
|
+
{
|
|
322
|
+
name: 'manage_blueprint',
|
|
323
|
+
description: 'Create and modify blueprints',
|
|
324
|
+
inputSchema: {
|
|
325
|
+
type: 'object',
|
|
326
|
+
properties: {
|
|
327
|
+
action: {
|
|
328
|
+
type: 'string',
|
|
329
|
+
enum: ['create', 'add_component'],
|
|
330
|
+
description: 'Blueprint action'
|
|
331
|
+
},
|
|
332
|
+
name: { type: 'string', description: 'Blueprint name' },
|
|
333
|
+
blueprintType: {
|
|
334
|
+
type: 'string',
|
|
335
|
+
description: 'Type (Actor, Pawn, Character, etc.)'
|
|
336
|
+
},
|
|
337
|
+
componentType: { type: 'string', description: 'Component type' },
|
|
338
|
+
componentName: { type: 'string', description: 'Component name' },
|
|
339
|
+
savePath: { type: 'string', description: 'Save location' }
|
|
340
|
+
},
|
|
341
|
+
required: ['action', 'name']
|
|
342
|
+
},
|
|
343
|
+
outputSchema: {
|
|
344
|
+
type: 'object',
|
|
345
|
+
properties: {
|
|
346
|
+
success: { type: 'boolean', description: 'Whether the operation succeeded' },
|
|
347
|
+
blueprintPath: { type: 'string', description: 'Blueprint asset path' },
|
|
348
|
+
componentAdded: { type: 'string', description: 'Added component name' },
|
|
349
|
+
message: { type: 'string', description: 'Status message' },
|
|
350
|
+
warning: { type: 'string', description: 'Warning if manual steps needed' }
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
// 8. ENVIRONMENT BUILDER - Landscape and foliage
|
|
355
|
+
{
|
|
356
|
+
name: 'build_environment',
|
|
357
|
+
description: 'Build environment - landscape, foliage',
|
|
358
|
+
inputSchema: {
|
|
359
|
+
type: 'object',
|
|
360
|
+
properties: {
|
|
361
|
+
action: {
|
|
362
|
+
type: 'string',
|
|
363
|
+
enum: ['create_landscape', 'sculpt', 'add_foliage', 'paint_foliage'],
|
|
364
|
+
description: 'Environment action'
|
|
365
|
+
},
|
|
366
|
+
// Common
|
|
367
|
+
name: { type: 'string', description: 'Object name' },
|
|
368
|
+
// Landscape
|
|
369
|
+
sizeX: { type: 'number', description: 'Landscape size X' },
|
|
370
|
+
sizeY: { type: 'number', description: 'Landscape size Y' },
|
|
371
|
+
tool: {
|
|
372
|
+
type: 'string',
|
|
373
|
+
description: 'Sculpt tool (Sculpt, Smooth, Flatten, etc.)'
|
|
374
|
+
},
|
|
375
|
+
// Foliage
|
|
376
|
+
meshPath: { type: 'string', description: 'Mesh path' },
|
|
377
|
+
foliageType: { type: 'string', description: 'Foliage type' },
|
|
378
|
+
density: { type: 'number', description: 'Density' },
|
|
379
|
+
// Painting
|
|
380
|
+
position: {
|
|
381
|
+
type: 'object',
|
|
382
|
+
properties: {
|
|
383
|
+
x: { type: 'number' },
|
|
384
|
+
y: { type: 'number' },
|
|
385
|
+
z: { type: 'number' }
|
|
386
|
+
}
|
|
387
|
+
},
|
|
388
|
+
brushSize: { type: 'number', description: 'Brush size' },
|
|
389
|
+
strength: { type: 'number', description: 'Tool strength' }
|
|
390
|
+
},
|
|
391
|
+
required: ['action']
|
|
392
|
+
},
|
|
393
|
+
outputSchema: {
|
|
394
|
+
type: 'object',
|
|
395
|
+
properties: {
|
|
396
|
+
success: { type: 'boolean', description: 'Whether the operation succeeded' },
|
|
397
|
+
landscapeName: { type: 'string', description: 'Landscape actor name' },
|
|
398
|
+
foliageTypeName: { type: 'string', description: 'Foliage type name' },
|
|
399
|
+
instancesPlaced: { type: 'number', description: 'Number of foliage instances placed' },
|
|
400
|
+
message: { type: 'string', description: 'Status message' }
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
},
|
|
404
|
+
// 9. PERFORMANCE & AUDIO - System settings
|
|
405
|
+
{
|
|
406
|
+
name: 'system_control',
|
|
407
|
+
description: 'Control performance, audio, UI, screenshots, and engine lifecycle',
|
|
408
|
+
inputSchema: {
|
|
409
|
+
type: 'object',
|
|
410
|
+
properties: {
|
|
411
|
+
action: {
|
|
412
|
+
type: 'string',
|
|
413
|
+
enum: ['profile', 'show_fps', 'set_quality', 'play_sound', 'create_widget', 'show_widget', 'screenshot', 'engine_start', 'engine_quit'],
|
|
414
|
+
description: 'System action'
|
|
415
|
+
},
|
|
416
|
+
// Performance
|
|
417
|
+
profileType: {
|
|
418
|
+
type: 'string',
|
|
419
|
+
description: 'Profile type (CPU, GPU, Memory)'
|
|
420
|
+
},
|
|
421
|
+
category: {
|
|
422
|
+
type: 'string',
|
|
423
|
+
description: 'Quality category (Shadows, Textures, etc.)'
|
|
424
|
+
},
|
|
425
|
+
level: { type: 'number', description: 'Quality level (0-4)' },
|
|
426
|
+
enabled: { type: 'boolean', description: 'Enable/disable' },
|
|
427
|
+
verbose: { type: 'boolean', description: 'Verbose output' },
|
|
428
|
+
// Audio
|
|
429
|
+
soundPath: { type: 'string', description: 'Sound asset path' },
|
|
430
|
+
location: {
|
|
431
|
+
type: 'object',
|
|
432
|
+
properties: {
|
|
433
|
+
x: { type: 'number' },
|
|
434
|
+
y: { type: 'number' },
|
|
435
|
+
z: { type: 'number' }
|
|
436
|
+
}
|
|
437
|
+
},
|
|
438
|
+
volume: { type: 'number', description: 'Volume (0-1)' },
|
|
439
|
+
is3D: { type: 'boolean', description: '3D sound' },
|
|
440
|
+
// UI
|
|
441
|
+
widgetName: { type: 'string', description: 'Widget name' },
|
|
442
|
+
widgetType: {
|
|
443
|
+
type: 'string',
|
|
444
|
+
description: 'Widget type (HUD, Menu, etc.)'
|
|
445
|
+
},
|
|
446
|
+
visible: { type: 'boolean', description: 'Visibility' },
|
|
447
|
+
// Screenshot
|
|
448
|
+
resolution: { type: 'string', description: 'e.g. 1920x1080' },
|
|
449
|
+
// Engine lifecycle
|
|
450
|
+
projectPath: { type: 'string', description: 'Path to .uproject (for engine_start, optional if UE_PROJECT_PATH env set)' },
|
|
451
|
+
editorExe: { type: 'string', description: 'Path to UE Editor executable (optional if UE_EDITOR_EXE env set)' }
|
|
452
|
+
},
|
|
453
|
+
required: ['action']
|
|
454
|
+
},
|
|
455
|
+
outputSchema: {
|
|
456
|
+
type: 'object',
|
|
457
|
+
properties: {
|
|
458
|
+
success: { type: 'boolean', description: 'Whether the operation succeeded' },
|
|
459
|
+
profiling: { type: 'boolean', description: 'Profiling active state' },
|
|
460
|
+
fpsVisible: { type: 'boolean', description: 'FPS display state' },
|
|
461
|
+
qualityLevel: { type: 'number', description: 'Current quality level' },
|
|
462
|
+
soundPlaying: { type: 'boolean', description: 'Sound playback state' },
|
|
463
|
+
widgetPath: { type: 'string', description: 'Created widget path' },
|
|
464
|
+
widgetVisible: { type: 'boolean', description: 'Widget visibility state' },
|
|
465
|
+
imagePath: { type: 'string', description: 'Saved screenshot path' },
|
|
466
|
+
imageBase64: { type: 'string', description: 'Screenshot image base64 (truncated)' },
|
|
467
|
+
pid: { type: 'number', description: 'Process ID for launched editor' },
|
|
468
|
+
message: { type: 'string', description: 'Status message' },
|
|
469
|
+
error: { type: 'string', description: 'Error message if failed' }
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
},
|
|
473
|
+
// 10. CONSOLE COMMAND - Universal tool
|
|
474
|
+
{
|
|
475
|
+
name: 'console_command',
|
|
476
|
+
description: 'Execute any console command in Unreal Engine',
|
|
477
|
+
inputSchema: {
|
|
478
|
+
type: 'object',
|
|
479
|
+
properties: {
|
|
480
|
+
command: { type: 'string', description: 'Console command to execute' }
|
|
481
|
+
},
|
|
482
|
+
required: ['command']
|
|
483
|
+
},
|
|
484
|
+
outputSchema: {
|
|
485
|
+
type: 'object',
|
|
486
|
+
properties: {
|
|
487
|
+
success: { type: 'boolean', description: 'Whether the command executed' },
|
|
488
|
+
command: { type: 'string', description: 'The command that was executed' },
|
|
489
|
+
result: { type: 'object', description: 'Command execution result' },
|
|
490
|
+
warning: { type: 'string', description: 'Warning if command may be unrecognized' },
|
|
491
|
+
info: { type: 'string', description: 'Additional information' },
|
|
492
|
+
error: { type: 'string', description: 'Error message if failed' }
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
},
|
|
496
|
+
// 11. REMOTE CONTROL PRESETS
|
|
497
|
+
{
|
|
498
|
+
name: 'manage_rc',
|
|
499
|
+
description: 'Manage Remote Control presets: create, expose, list fields, set/get values',
|
|
500
|
+
inputSchema: {
|
|
501
|
+
type: 'object',
|
|
502
|
+
properties: {
|
|
503
|
+
action: {
|
|
504
|
+
type: 'string',
|
|
505
|
+
enum: ['create_preset', 'expose_actor', 'expose_property', 'list_fields', 'set_property', 'get_property'],
|
|
506
|
+
description: 'RC action'
|
|
507
|
+
},
|
|
508
|
+
name: { type: 'string', description: 'Preset or entity name' },
|
|
509
|
+
path: { type: 'string', description: 'Preset save path (e.g. /Game/RCPresets)' },
|
|
510
|
+
presetPath: { type: 'string', description: 'Preset asset path (e.g. /Game/RCPresets/MyPreset)' },
|
|
511
|
+
actorName: { type: 'string', description: 'Actor label/name to expose' },
|
|
512
|
+
objectPath: { type: 'string', description: 'Object path for property get/set' },
|
|
513
|
+
propertyName: { type: 'string', description: 'Property name for remote property set/get' },
|
|
514
|
+
value: { description: 'Value for property set (JSON-serializable)' }
|
|
515
|
+
},
|
|
516
|
+
required: ['action']
|
|
517
|
+
},
|
|
518
|
+
outputSchema: {
|
|
519
|
+
type: 'object',
|
|
520
|
+
properties: {
|
|
521
|
+
success: { type: 'boolean' },
|
|
522
|
+
message: { type: 'string' },
|
|
523
|
+
presetPath: { type: 'string' },
|
|
524
|
+
fields: { type: 'array', items: { type: 'object' } },
|
|
525
|
+
value: {},
|
|
526
|
+
error: { type: 'string' }
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
},
|
|
530
|
+
// 12. SEQUENCER / CINEMATICS
|
|
531
|
+
{
|
|
532
|
+
name: 'manage_sequence',
|
|
533
|
+
description: 'Create/open sequences, add cameras/actors, manage bindings, control playback, and set properties',
|
|
534
|
+
inputSchema: {
|
|
535
|
+
type: 'object',
|
|
536
|
+
properties: {
|
|
537
|
+
action: {
|
|
538
|
+
type: 'string',
|
|
539
|
+
enum: [
|
|
540
|
+
'create', 'open', 'add_camera', 'add_actor', 'add_actors',
|
|
541
|
+
'remove_actors', 'get_bindings', 'add_spawnable_from_class',
|
|
542
|
+
'play', 'pause', 'stop', 'set_properties', 'get_properties', 'set_playback_speed'
|
|
543
|
+
],
|
|
544
|
+
description: 'Sequence action'
|
|
545
|
+
},
|
|
546
|
+
name: { type: 'string', description: 'Sequence name (for create)' },
|
|
547
|
+
path: { type: 'string', description: 'Save path (for create), or asset path (for open/operations)' },
|
|
548
|
+
actorName: { type: 'string', description: 'Actor name to add as possessable' },
|
|
549
|
+
actorNames: { type: 'array', items: { type: 'string' }, description: 'Multiple actor names for batch operations' },
|
|
550
|
+
className: { type: 'string', description: 'Class name for spawnable (e.g. StaticMeshActor, CineCameraActor)' },
|
|
551
|
+
spawnable: { type: 'boolean', description: 'If true, camera is spawnable' },
|
|
552
|
+
frameRate: { type: 'number', description: 'Frame rate for sequence' },
|
|
553
|
+
lengthInFrames: { type: 'number', description: 'Total length in frames' },
|
|
554
|
+
playbackStart: { type: 'number', description: 'Playback start frame' },
|
|
555
|
+
playbackEnd: { type: 'number', description: 'Playback end frame' },
|
|
556
|
+
speed: { type: 'number', description: 'Playback speed multiplier' },
|
|
557
|
+
loopMode: { type: 'string', enum: ['once', 'loop', 'pingpong'], description: 'Playback loop mode' }
|
|
558
|
+
},
|
|
559
|
+
required: ['action']
|
|
560
|
+
},
|
|
561
|
+
outputSchema: {
|
|
562
|
+
type: 'object',
|
|
563
|
+
properties: {
|
|
564
|
+
success: { type: 'boolean' },
|
|
565
|
+
sequencePath: { type: 'string' },
|
|
566
|
+
cameraBindingId: { type: 'string' },
|
|
567
|
+
bindings: { type: 'array', items: { type: 'object' } },
|
|
568
|
+
actorsAdded: { type: 'array', items: { type: 'string' } },
|
|
569
|
+
removedActors: { type: 'array', items: { type: 'string' } },
|
|
570
|
+
notFound: { type: 'array', items: { type: 'string' } },
|
|
571
|
+
spawnableId: { type: 'string' },
|
|
572
|
+
frameRate: { type: 'object' },
|
|
573
|
+
playbackStart: { type: 'number' },
|
|
574
|
+
playbackEnd: { type: 'number' },
|
|
575
|
+
duration: { type: 'number' },
|
|
576
|
+
playbackSpeed: { type: 'number' },
|
|
577
|
+
message: { type: 'string' },
|
|
578
|
+
error: { type: 'string' }
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
},
|
|
582
|
+
// 13. INTROSPECTION
|
|
583
|
+
{
|
|
584
|
+
name: 'inspect',
|
|
585
|
+
description: 'Inspect objects and set properties safely',
|
|
586
|
+
inputSchema: {
|
|
587
|
+
type: 'object',
|
|
588
|
+
properties: {
|
|
589
|
+
action: { type: 'string', enum: ['inspect_object', 'set_property'], description: 'Inspection action' },
|
|
590
|
+
objectPath: { type: 'string', description: 'Object path' },
|
|
591
|
+
propertyName: { type: 'string', description: 'Property to set/get' },
|
|
592
|
+
value: { description: 'Value to set (JSON-serializable)' }
|
|
593
|
+
},
|
|
594
|
+
required: ['action']
|
|
595
|
+
},
|
|
596
|
+
outputSchema: {
|
|
597
|
+
type: 'object',
|
|
598
|
+
properties: {
|
|
599
|
+
success: { type: 'boolean' },
|
|
600
|
+
info: { type: 'object' },
|
|
601
|
+
message: { type: 'string' },
|
|
602
|
+
error: { type: 'string' }
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
];
|
|
607
|
+
//# sourceMappingURL=consolidated-tool-definitions.js.map
|