ue-mcp 0.7.1 → 0.7.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.
@@ -5,13 +5,16 @@ export function createFlowTool(registry, reloadConfig) {
5
5
  name: "flow",
6
6
  description: `Run or inspect named flows defined in ue-mcp.yml. Config is reloaded on every call — no restart needed.\n\n` +
7
7
  `Actions:\n` +
8
- `- run: Execute a flow. Params: flowName, skip?\n` +
8
+ `- run: Execute a flow. Params: flowName, skip?, params?\n` +
9
9
  `- plan: Show execution plan without running. Params: flowName\n` +
10
- `- list: List available flows`,
10
+ `- list: List available flows\n\n` +
11
+ `params: Runtime options merged into every step's options (highest priority). ` +
12
+ `Use to override YAML-hardcoded values like levelPath, directory, configuration, etc.`,
11
13
  schema: {
12
14
  action: z.enum(["run", "plan", "list"]).describe("Action to perform"),
13
15
  flowName: z.string().optional().describe("Flow name from ue-mcp.yml"),
14
16
  skip: z.array(z.string()).optional().describe("Step names or numbers to skip"),
17
+ params: z.record(z.unknown()).optional().describe("Runtime options merged into every step's options (highest priority)"),
15
18
  },
16
19
  actions: {
17
20
  run: { handler: async (ctx, params) => runFlow(registry, reloadConfig(), ctx, params) },
@@ -50,8 +53,9 @@ async function runFlow(registry, config, ctx, params) {
50
53
  if (!flowName)
51
54
  throw new Error("flowName is required");
52
55
  const skip = params.skip ?? [];
56
+ const flowParams = params.params;
53
57
  const runner = makeRunner(registry, config, ctx);
54
- const result = await runner.run({ flowName, skip });
58
+ const result = await runner.run({ flowName, skip, params: flowParams });
55
59
  return formatFlowResult(result);
56
60
  }
57
61
  function makeRunner(registry, config, ctx) {
@@ -1 +1 @@
1
- {"version":3,"file":"flow-tool.js","sourceRoot":"","sources":["../../src/flow/flow-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flow-tool.js","sourceRoot":"","sources":["../../src/flow/flow-tool.ts"],"names":[],"mappings":"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"}
@@ -31,187 +31,184 @@ export function buildDefaults(tools) {
31
31
  };
32
32
  return { tasks, flows: defaultFlows() };
33
33
  }
34
+ // Shorthand constants
35
+ const PKG = "/Game/Flows/Beacon";
36
+ const CUBE = "/Engine/BasicShapes/Cube.Cube";
37
+ const SPHERE = "/Engine/BasicShapes/Sphere.Sphere";
38
+ const CYLINDER = "/Engine/BasicShapes/Cylinder.Cylinder";
39
+ const M_FLOOR = `${PKG}/M_Floor`;
40
+ const M_PILLAR = `${PKG}/M_Pillar`;
41
+ const M_GLOW = `${PKG}/M_Glow`;
42
+ const M_PEDESTAL = `${PKG}/M_Pedestal`;
34
43
  /** Built-in flows that ship with ue-mcp. */
35
44
  function defaultFlows() {
45
+ let s = 0;
46
+ const steps = {};
47
+ const step = (task, options) => {
48
+ steps[String(++s)] = { task, options };
49
+ };
50
+ // ── 1. Create level & atmosphere ──────────────────────────────────
51
+ step("level.create", { levelPath: `${PKG}/BeaconLevel` });
52
+ step("level.place_actor", { actorClass: "SkyAtmosphere", label: "Sky" });
53
+ step("level.place_actor", { actorClass: "ExponentialHeightFog", label: "Fog" });
54
+ step("level.place_actor", { actorClass: "SkyLight", label: "Ambient" });
55
+ // ── 2. Materials ──────────────────────────────────────────────────
56
+ // M_Floor — dark stone
57
+ step("material.create", { name: "M_Floor", packagePath: PKG });
58
+ step("material.set_base_color", { assetPath: M_FLOOR, color: { r: 15, g: 15, b: 18 } });
59
+ step("material.recompile", { materialPath: M_FLOOR });
60
+ // M_Pillar — brushed metallic blue-grey
61
+ step("material.create", { name: "M_Pillar", packagePath: PKG });
62
+ step("material.set_base_color", { assetPath: M_PILLAR, color: { r: 60, g: 65, b: 80 } });
63
+ step("material.add_expression", {
64
+ materialPath: M_PILLAR, expressionType: "Constant", name: "Metallic",
65
+ });
66
+ step("material.set_expression_value", {
67
+ materialPath: M_PILLAR, expressionIndex: 0, value: 1.0,
68
+ });
69
+ step("material.connect_to_property", {
70
+ materialPath: M_PILLAR, expressionName: "Metallic", property: "Metallic",
71
+ });
72
+ step("material.add_expression", {
73
+ materialPath: M_PILLAR, expressionType: "Constant", name: "Roughness",
74
+ });
75
+ step("material.set_expression_value", {
76
+ materialPath: M_PILLAR, expressionIndex: 1, value: 0.3,
77
+ });
78
+ step("material.connect_to_property", {
79
+ materialPath: M_PILLAR, expressionName: "Roughness", property: "Roughness",
80
+ });
81
+ step("material.recompile", { materialPath: M_PILLAR });
82
+ // M_Pedestal — warm stone
83
+ step("material.create", { name: "M_Pedestal", packagePath: PKG });
84
+ step("material.set_base_color", { assetPath: M_PEDESTAL, color: { r: 90, g: 80, b: 65 } });
85
+ step("material.recompile", { materialPath: M_PEDESTAL });
86
+ // M_Glow — parameterized emissive (VectorParam × Strength → EmissiveColor)
87
+ step("material.create", { name: "M_Glow", packagePath: PKG });
88
+ step("material.add_expression", {
89
+ materialPath: M_GLOW, expressionType: "VectorParameter",
90
+ name: "GlowColor", parameterName: "GlowColor",
91
+ });
92
+ step("material.add_expression", {
93
+ materialPath: M_GLOW, expressionType: "Constant", name: "GlowStrength",
94
+ });
95
+ step("material.set_expression_value", {
96
+ materialPath: M_GLOW, expressionIndex: 1, value: 50,
97
+ });
98
+ step("material.add_expression", {
99
+ materialPath: M_GLOW, expressionType: "Multiply", name: "Multiply",
100
+ });
101
+ step("material.connect_expressions", {
102
+ materialPath: M_GLOW, sourceExpression: "GlowColor",
103
+ targetExpression: "Multiply", targetInput: "A",
104
+ });
105
+ step("material.connect_expressions", {
106
+ materialPath: M_GLOW, sourceExpression: "GlowStrength",
107
+ targetExpression: "Multiply", targetInput: "B",
108
+ });
109
+ step("material.connect_to_property", {
110
+ materialPath: M_GLOW, expressionName: "Multiply", property: "EmissiveColor",
111
+ });
112
+ step("material.recompile", { materialPath: M_GLOW });
113
+ // ── 3. Geometry ───────────────────────────────────────────────────
114
+ // Floor — large dark slab
115
+ step("level.place_actor", {
116
+ actorClass: "StaticMeshActor", label: "Floor",
117
+ staticMesh: CUBE, material: M_FLOOR,
118
+ location: { x: 0, y: 0, z: -5 },
119
+ scale: { x: 25, y: 25, z: 0.1 },
120
+ });
121
+ // Center pedestal — tall cylinder
122
+ step("level.place_actor", {
123
+ actorClass: "StaticMeshActor", label: "Pedestal",
124
+ staticMesh: CYLINDER, material: M_PEDESTAL,
125
+ location: { x: 0, y: 0, z: 0 },
126
+ scale: { x: 1.5, y: 1.5, z: 3 },
127
+ });
128
+ // Glowing orb on top of pedestal
129
+ step("level.place_actor", {
130
+ actorClass: "StaticMeshActor", label: "Orb",
131
+ staticMesh: SPHERE, material: M_GLOW,
132
+ location: { x: 0, y: 0, z: 350 },
133
+ scale: { x: 1.5, y: 1.5, z: 1.5 },
134
+ });
135
+ // 5 pillars in a pentagon (radius 600, z=0)
136
+ const pillarAngles = [0, 72, 144, 216, 288];
137
+ for (let i = 0; i < pillarAngles.length; i++) {
138
+ const rad = (pillarAngles[i] * Math.PI) / 180;
139
+ const x = Math.round(600 * Math.cos(rad));
140
+ const y = Math.round(600 * Math.sin(rad));
141
+ step("level.place_actor", {
142
+ actorClass: "StaticMeshActor", label: `Pillar_${i + 1}`,
143
+ staticMesh: CUBE, material: M_PILLAR,
144
+ location: { x, y, z: 0 },
145
+ scale: { x: 0.4, y: 0.4, z: 5 },
146
+ });
147
+ }
148
+ // ── 4. Lighting ───────────────────────────────────────────────────
149
+ // Sunset directional
150
+ step("level.spawn_light", { lightType: "directional", label: "Sun", intensity: 10 });
151
+ step("level.set_light_properties", {
152
+ actorLabel: "Sun", color: { r: 255, g: 160, b: 80 },
153
+ });
154
+ step("level.move_actor", {
155
+ actorLabel: "Sun", rotation: { pitch: -25, yaw: -135 },
156
+ });
157
+ // Colored point light at each pillar
158
+ const pillarColors = [
159
+ { r: 0, g: 200, b: 255 }, // cyan
160
+ { r: 255, g: 0, b: 200 }, // magenta
161
+ { r: 255, g: 200, b: 0 }, // gold
162
+ { r: 100, g: 255, b: 50 }, // green
163
+ { r: 120, g: 80, b: 255 }, // violet
164
+ ];
165
+ for (let i = 0; i < pillarAngles.length; i++) {
166
+ const rad = (pillarAngles[i] * Math.PI) / 180;
167
+ const x = Math.round(600 * Math.cos(rad));
168
+ const y = Math.round(600 * Math.sin(rad));
169
+ step("level.spawn_light", {
170
+ lightType: "point", label: `PillarLight_${i + 1}`,
171
+ location: { x, y, z: 550 }, intensity: 80000,
172
+ });
173
+ step("level.set_light_properties", {
174
+ actorLabel: `PillarLight_${i + 1}`, color: pillarColors[i],
175
+ });
176
+ }
177
+ // Center spotlight pointing down at the orb
178
+ step("level.spawn_light", {
179
+ lightType: "spot", label: "OrbSpot",
180
+ location: { x: 0, y: 0, z: 700 }, intensity: 300000,
181
+ });
182
+ step("level.move_actor", {
183
+ actorLabel: "OrbSpot", rotation: { pitch: -90, yaw: 0 },
184
+ });
185
+ // Warm fill light from below
186
+ step("level.spawn_light", {
187
+ lightType: "point", label: "FillWarm",
188
+ location: { x: -400, y: -300, z: 100 }, intensity: 20000,
189
+ });
190
+ step("level.set_light_properties", {
191
+ actorLabel: "FillWarm", color: { r: 255, g: 200, b: 150 },
192
+ });
193
+ // Cool fill light opposite side
194
+ step("level.spawn_light", {
195
+ lightType: "point", label: "FillCool",
196
+ location: { x: 400, y: 300, z: 100 }, intensity: 15000,
197
+ });
198
+ step("level.set_light_properties", {
199
+ actorLabel: "FillCool", color: { r: 150, g: 200, b: 255 },
200
+ });
201
+ // ── 5. Camera ─────────────────────────────────────────────────────
202
+ step("editor.set_viewport", {
203
+ location: { x: -900, y: -500, z: 400 },
204
+ rotation: { pitch: -15, yaw: 30 },
205
+ });
36
206
  return {
37
207
  beacon: {
38
- description: "Demo — create a dramatic light-sculpture scene with atmosphere, colored lights, and a material graph",
39
- steps: {
40
- // ── Scene foundation ──
41
- "1": {
42
- task: "level.create",
43
- options: { levelPath: "/Game/Flows/Beacon" },
44
- },
45
- "2": {
46
- task: "level.place_actor",
47
- options: { actorClass: "SkyAtmosphere", label: "Sky" },
48
- },
49
- "3": {
50
- task: "level.place_actor",
51
- options: { actorClass: "ExponentialHeightFog", label: "Fog" },
52
- },
53
- "4": {
54
- task: "level.place_actor",
55
- options: { actorClass: "SkyLight", label: "Ambient" },
56
- },
57
- // ── Sunset sun ──
58
- "5": {
59
- task: "level.spawn_light",
60
- options: { lightType: "directional", label: "Sun", intensity: 10 },
61
- },
62
- "6": {
63
- task: "level.set_light_properties",
64
- options: { actorLabel: "Sun", color: { r: 255, g: 160, b: 80 } },
65
- },
66
- "7": {
67
- task: "level.move_actor",
68
- options: { actorLabel: "Sun", rotation: { pitch: -25, yaw: -135 } },
69
- },
70
- // ── Light ring (3 colored point lights) ──
71
- "8": {
72
- task: "level.spawn_light",
73
- options: {
74
- lightType: "point",
75
- label: "Beacon_Cyan",
76
- location: { x: 200, y: 0, z: 300 },
77
- intensity: 80000,
78
- },
79
- },
80
- "9": {
81
- task: "level.set_light_properties",
82
- options: {
83
- actorLabel: "Beacon_Cyan",
84
- color: { r: 0, g: 200, b: 255 },
85
- },
86
- },
87
- "10": {
88
- task: "level.spawn_light",
89
- options: {
90
- lightType: "point",
91
- label: "Beacon_Magenta",
92
- location: { x: -100, y: 175, z: 300 },
93
- intensity: 80000,
94
- },
95
- },
96
- "11": {
97
- task: "level.set_light_properties",
98
- options: {
99
- actorLabel: "Beacon_Magenta",
100
- color: { r: 255, g: 0, b: 200 },
101
- },
102
- },
103
- "12": {
104
- task: "level.spawn_light",
105
- options: {
106
- lightType: "point",
107
- label: "Beacon_Gold",
108
- location: { x: -100, y: -175, z: 300 },
109
- intensity: 80000,
110
- },
111
- },
112
- "13": {
113
- task: "level.set_light_properties",
114
- options: {
115
- actorLabel: "Beacon_Gold",
116
- color: { r: 255, g: 200, b: 0 },
117
- },
118
- },
119
- // ── Center spotlight ──
120
- "14": {
121
- task: "level.spawn_light",
122
- options: {
123
- lightType: "spot",
124
- label: "CenterSpot",
125
- location: { x: 0, y: 0, z: 500 },
126
- intensity: 300000,
127
- },
128
- },
129
- "15": {
130
- task: "level.move_actor",
131
- options: {
132
- actorLabel: "CenterSpot",
133
- rotation: { pitch: -90, yaw: 0 },
134
- },
135
- },
136
- // ── Emissive material (demonstrates graph authoring) ──
137
- "16": {
138
- task: "material.create",
139
- options: { name: "M_Beacon_Glow", packagePath: "/Game/Flows/Beacon" },
140
- },
141
- "17": {
142
- task: "material.add_expression",
143
- options: {
144
- materialPath: "/Game/Flows/Beacon/M_Beacon_Glow",
145
- expressionType: "VectorParameter",
146
- name: "GlowColor",
147
- parameterName: "GlowColor",
148
- },
149
- },
150
- "18": {
151
- task: "material.add_expression",
152
- options: {
153
- materialPath: "/Game/Flows/Beacon/M_Beacon_Glow",
154
- expressionType: "Constant",
155
- name: "GlowStrength",
156
- },
157
- },
158
- "19": {
159
- task: "material.set_expression_value",
160
- options: {
161
- materialPath: "/Game/Flows/Beacon/M_Beacon_Glow",
162
- expressionIndex: 1,
163
- value: 25,
164
- },
165
- },
166
- "20": {
167
- task: "material.add_expression",
168
- options: {
169
- materialPath: "/Game/Flows/Beacon/M_Beacon_Glow",
170
- expressionType: "Multiply",
171
- name: "Multiply",
172
- },
173
- },
174
- "21": {
175
- task: "material.connect_expressions",
176
- options: {
177
- materialPath: "/Game/Flows/Beacon/M_Beacon_Glow",
178
- sourceExpression: "GlowColor",
179
- targetExpression: "Multiply",
180
- targetInput: "A",
181
- },
182
- },
183
- "22": {
184
- task: "material.connect_expressions",
185
- options: {
186
- materialPath: "/Game/Flows/Beacon/M_Beacon_Glow",
187
- sourceExpression: "GlowStrength",
188
- targetExpression: "Multiply",
189
- targetInput: "B",
190
- },
191
- },
192
- "23": {
193
- task: "material.connect_to_property",
194
- options: {
195
- materialPath: "/Game/Flows/Beacon/M_Beacon_Glow",
196
- expressionName: "Multiply",
197
- property: "EmissiveColor",
198
- },
199
- },
200
- "24": {
201
- task: "material.recompile",
202
- options: {
203
- materialPath: "/Game/Flows/Beacon/M_Beacon_Glow",
204
- },
205
- },
206
- // ── Camera ──
207
- "25": {
208
- task: "editor.set_viewport",
209
- options: {
210
- location: { x: -600, y: 0, z: 250 },
211
- rotation: { pitch: -10, yaw: 0 },
212
- },
213
- },
214
- },
208
+ description: "Demo — build a shrine scene from scratch: floor, pedestal, orb, five pillars, " +
209
+ "four materials (dark stone, brushed metal, warm stone, parameterized emissive), " +
210
+ "colored lights, and atmosphere",
211
+ steps,
215
212
  },
216
213
  };
217
214
  }
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/flow/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/flow/loader.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { categoryTool, bp } from "../types.js";
3
3
  import { Vec3, Rotator, Color } from "../schemas.js";
4
4
  export const levelTool = categoryTool("level", "Level actors, selection, components, level management, volumes, lights, and splines.", {
5
5
  get_outliner: bp("List actors. Params: classFilter?, nameFilter?", "get_world_outliner"),
6
- place_actor: bp("Spawn actor. Params: actorClass, label?, location?, rotation?, scale?, properties?", "place_actor"),
6
+ place_actor: bp("Spawn actor. Params: actorClass, label?, location?, rotation?, scale?, staticMesh?, material?", "place_actor"),
7
7
  delete_actor: bp("Remove actor. Params: actorLabel", "delete_actor"),
8
8
  get_actor_details: bp("Inspect actor. Params: actorLabel", "get_actor_details"),
9
9
  move_actor: bp("Transform actor. Params: actorLabel, location?, rotation?, scale?", "move_actor"),
@@ -24,6 +24,7 @@ export const levelTool = categoryTool("level", "Level actors, selection, compone
24
24
  build_lighting: bp("Build lights. Params: quality?", "build_lighting"),
25
25
  get_spline_info: bp("Read spline. Params: actorLabel", "get_spline_info"),
26
26
  set_spline_points: bp("Set spline points. Params: actorLabel, points[], closedLoop?", "set_spline_points"),
27
+ set_actor_material: bp("Set material on actor. Params: actorLabel, materialPath, slotIndex?", "set_actor_material"),
27
28
  get_world_settings: bp("Read world settings (GameMode, KillZ, gravity, etc.)", "get_world_settings"),
28
29
  set_world_settings: bp("Set world settings. Params: defaultGameMode?, killZ?, globalGravityZ?, enableWorldBoundsChecks?", "set_world_settings"),
29
30
  }, undefined, // actionDocs auto-generated from descriptions
@@ -49,6 +50,10 @@ export const levelTool = categoryTool("level", "Level actors, selection, compone
49
50
  quality: z.string().optional(),
50
51
  points: z.array(Vec3).optional(),
51
52
  closedLoop: z.boolean().optional(),
53
+ staticMesh: z.string().optional().describe("Asset path for static mesh (e.g. /Engine/BasicShapes/Cube.Cube)"),
54
+ material: z.string().optional().describe("Asset path for material to apply at slot 0"),
55
+ materialPath: z.string().optional().describe("Material asset path for set_actor_material"),
56
+ slotIndex: z.number().optional().describe("Material slot index (default 0)"),
52
57
  defaultGameMode: z.string().optional(),
53
58
  killZ: z.number().optional(),
54
59
  globalGravityZ: z.number().optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"level.js","sourceRoot":"","sources":["../../src/tools/level.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"level.js","sourceRoot":"","sources":["../../src/tools/level.ts"],"names":[],"mappings":"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"}
@@ -406,7 +406,7 @@ tasks:
406
406
  level.place_actor:
407
407
  class_path: ue-mcp.bridge
408
408
  group: level
409
- description: "Spawn actor. Params: actorClass, label?, location?, rotation?, scale?, properties?"
409
+ description: "Spawn actor. Params: actorClass, label?, location?, rotation?, scale?, staticMesh?, material?"
410
410
  options:
411
411
  method: place_actor
412
412
  level.delete_actor:
@@ -529,6 +529,12 @@ tasks:
529
529
  description: "Set spline points. Params: actorLabel, points[], closedLoop?"
530
530
  options:
531
531
  method: set_spline_points
532
+ level.set_actor_material:
533
+ class_path: ue-mcp.bridge
534
+ group: level
535
+ description: "Set material on actor. Params: actorLabel, materialPath, slotIndex?"
536
+ options:
537
+ method: set_actor_material
532
538
  level.get_world_settings:
533
539
  class_path: ue-mcp.bridge
534
540
  group: level
@@ -1849,12 +1855,12 @@ tasks:
1849
1855
  flows:
1850
1856
 
1851
1857
  beacon:
1852
- description: "Demo — create a dramatic light-sculpture scene with atmosphere, colored lights, and a material graph"
1858
+ description: "Demo — build a shrine scene from scratch: floor, pedestal, orb, five pillars, four materials (dark stone, brushed metal, warm stone, parameterized emissive), colored lights, and atmosphere"
1853
1859
  steps:
1854
1860
  1:
1855
1861
  task: level.create
1856
1862
  options:
1857
- levelPath: /Game/Flows/Beacon
1863
+ levelPath: /Game/Flows/Beacon/BeaconLevel
1858
1864
  2:
1859
1865
  task: level.place_actor
1860
1866
  options:
@@ -1870,131 +1876,324 @@ flows:
1870
1876
  options:
1871
1877
  actorClass: SkyLight
1872
1878
  label: Ambient
1873
- # ── Sunset sun ──
1874
1879
  5:
1875
- task: level.spawn_light
1880
+ task: material.create
1876
1881
  options:
1877
- lightType: directional
1878
- label: Sun
1879
- intensity: 10
1882
+ name: M_Floor
1883
+ packagePath: /Game/Flows/Beacon
1880
1884
  6:
1881
- task: level.set_light_properties
1885
+ task: material.set_base_color
1882
1886
  options:
1883
- actorLabel: Sun
1884
- color: { r: 255, g: 160, b: 80 }
1887
+ assetPath: /Game/Flows/Beacon/M_Floor
1888
+ color: { r: 15, g: 15, b: 18 }
1885
1889
  7:
1886
- task: level.move_actor
1890
+ task: material.recompile
1887
1891
  options:
1888
- actorLabel: Sun
1889
- rotation: { pitch: -25, yaw: -135 }
1890
- # ── Light ring ──
1892
+ materialPath: /Game/Flows/Beacon/M_Floor
1891
1893
  8:
1892
- task: level.spawn_light
1894
+ task: material.create
1893
1895
  options:
1894
- lightType: point
1895
- label: Beacon_Cyan
1896
- location: { x: 200, y: 0, z: 300 }
1897
- intensity: 80000
1896
+ name: M_Pillar
1897
+ packagePath: /Game/Flows/Beacon
1898
1898
  9:
1899
- task: level.set_light_properties
1899
+ task: material.set_base_color
1900
1900
  options:
1901
- actorLabel: Beacon_Cyan
1902
- color: { r: 0, g: 200, b: 255 }
1901
+ assetPath: /Game/Flows/Beacon/M_Pillar
1902
+ color: { r: 60, g: 65, b: 80 }
1903
1903
  10:
1904
- task: level.spawn_light
1904
+ task: material.add_expression
1905
1905
  options:
1906
- lightType: point
1907
- label: Beacon_Magenta
1908
- location: { x: -100, y: 175, z: 300 }
1909
- intensity: 80000
1906
+ materialPath: /Game/Flows/Beacon/M_Pillar
1907
+ expressionType: Constant
1908
+ name: Metallic
1910
1909
  11:
1911
- task: level.set_light_properties
1910
+ task: material.set_expression_value
1912
1911
  options:
1913
- actorLabel: Beacon_Magenta
1914
- color: { r: 255, g: 0, b: 200 }
1912
+ materialPath: /Game/Flows/Beacon/M_Pillar
1913
+ expressionIndex: 0
1914
+ value: 1
1915
1915
  12:
1916
- task: level.spawn_light
1916
+ task: material.connect_to_property
1917
1917
  options:
1918
- lightType: point
1919
- label: Beacon_Gold
1920
- location: { x: -100, y: -175, z: 300 }
1921
- intensity: 80000
1918
+ materialPath: /Game/Flows/Beacon/M_Pillar
1919
+ expressionName: Metallic
1920
+ property: Metallic
1922
1921
  13:
1923
- task: level.set_light_properties
1922
+ task: material.add_expression
1924
1923
  options:
1925
- actorLabel: Beacon_Gold
1926
- color: { r: 255, g: 200, b: 0 }
1927
- # ── Center spotlight ──
1924
+ materialPath: /Game/Flows/Beacon/M_Pillar
1925
+ expressionType: Constant
1926
+ name: Roughness
1928
1927
  14:
1929
- task: level.spawn_light
1928
+ task: material.set_expression_value
1930
1929
  options:
1931
- lightType: spot
1932
- label: CenterSpot
1933
- location: { x: 0, y: 0, z: 500 }
1934
- intensity: 300000
1930
+ materialPath: /Game/Flows/Beacon/M_Pillar
1931
+ expressionIndex: 1
1932
+ value: 0.3
1935
1933
  15:
1936
- task: level.move_actor
1934
+ task: material.connect_to_property
1937
1935
  options:
1938
- actorLabel: CenterSpot
1939
- rotation: { pitch: -90, yaw: 0 }
1940
- # ── Emissive material ──
1936
+ materialPath: /Game/Flows/Beacon/M_Pillar
1937
+ expressionName: Roughness
1938
+ property: Roughness
1941
1939
  16:
1940
+ task: material.recompile
1941
+ options:
1942
+ materialPath: /Game/Flows/Beacon/M_Pillar
1943
+ 17:
1942
1944
  task: material.create
1943
1945
  options:
1944
- name: M_Beacon_Glow
1946
+ name: M_Pedestal
1945
1947
  packagePath: /Game/Flows/Beacon
1946
- 17:
1948
+ 18:
1949
+ task: material.set_base_color
1950
+ options:
1951
+ assetPath: /Game/Flows/Beacon/M_Pedestal
1952
+ color: { r: 90, g: 80, b: 65 }
1953
+ 19:
1954
+ task: material.recompile
1955
+ options:
1956
+ materialPath: /Game/Flows/Beacon/M_Pedestal
1957
+ 20:
1958
+ task: material.create
1959
+ options:
1960
+ name: M_Glow
1961
+ packagePath: /Game/Flows/Beacon
1962
+ 21:
1947
1963
  task: material.add_expression
1948
1964
  options:
1949
- materialPath: /Game/Flows/Beacon/M_Beacon_Glow
1965
+ materialPath: /Game/Flows/Beacon/M_Glow
1950
1966
  expressionType: VectorParameter
1951
1967
  name: GlowColor
1952
1968
  parameterName: GlowColor
1953
- 18:
1969
+ 22:
1954
1970
  task: material.add_expression
1955
1971
  options:
1956
- materialPath: /Game/Flows/Beacon/M_Beacon_Glow
1972
+ materialPath: /Game/Flows/Beacon/M_Glow
1957
1973
  expressionType: Constant
1958
1974
  name: GlowStrength
1959
- 19:
1975
+ 23:
1960
1976
  task: material.set_expression_value
1961
1977
  options:
1962
- materialPath: /Game/Flows/Beacon/M_Beacon_Glow
1978
+ materialPath: /Game/Flows/Beacon/M_Glow
1963
1979
  expressionIndex: 1
1964
- value: 25
1965
- 20:
1980
+ value: 50
1981
+ 24:
1966
1982
  task: material.add_expression
1967
1983
  options:
1968
- materialPath: /Game/Flows/Beacon/M_Beacon_Glow
1984
+ materialPath: /Game/Flows/Beacon/M_Glow
1969
1985
  expressionType: Multiply
1970
1986
  name: Multiply
1971
- 21:
1987
+ 25:
1972
1988
  task: material.connect_expressions
1973
1989
  options:
1974
- materialPath: /Game/Flows/Beacon/M_Beacon_Glow
1990
+ materialPath: /Game/Flows/Beacon/M_Glow
1975
1991
  sourceExpression: GlowColor
1976
1992
  targetExpression: Multiply
1977
1993
  targetInput: A
1978
- 22:
1994
+ 26:
1979
1995
  task: material.connect_expressions
1980
1996
  options:
1981
- materialPath: /Game/Flows/Beacon/M_Beacon_Glow
1997
+ materialPath: /Game/Flows/Beacon/M_Glow
1982
1998
  sourceExpression: GlowStrength
1983
1999
  targetExpression: Multiply
1984
2000
  targetInput: B
1985
- 23:
2001
+ 27:
1986
2002
  task: material.connect_to_property
1987
2003
  options:
1988
- materialPath: /Game/Flows/Beacon/M_Beacon_Glow
2004
+ materialPath: /Game/Flows/Beacon/M_Glow
1989
2005
  expressionName: Multiply
1990
2006
  property: EmissiveColor
1991
- 24:
2007
+ 28:
1992
2008
  task: material.recompile
1993
2009
  options:
1994
- materialPath: /Game/Flows/Beacon/M_Beacon_Glow
1995
- # ── Camera ──
1996
- 25:
2010
+ materialPath: /Game/Flows/Beacon/M_Glow
2011
+ 29:
2012
+ task: level.place_actor
2013
+ options:
2014
+ actorClass: StaticMeshActor
2015
+ label: Floor
2016
+ staticMesh: /Engine/BasicShapes/Cube.Cube
2017
+ material: /Game/Flows/Beacon/M_Floor
2018
+ location: { x: 0, y: 0, z: -5 }
2019
+ scale: { x: 25, y: 25, z: 0.1 }
2020
+ 30:
2021
+ task: level.place_actor
2022
+ options:
2023
+ actorClass: StaticMeshActor
2024
+ label: Pedestal
2025
+ staticMesh: /Engine/BasicShapes/Cylinder.Cylinder
2026
+ material: /Game/Flows/Beacon/M_Pedestal
2027
+ location: { x: 0, y: 0, z: 0 }
2028
+ scale: { x: 1.5, y: 1.5, z: 3 }
2029
+ 31:
2030
+ task: level.place_actor
2031
+ options:
2032
+ actorClass: StaticMeshActor
2033
+ label: Orb
2034
+ staticMesh: /Engine/BasicShapes/Sphere.Sphere
2035
+ material: /Game/Flows/Beacon/M_Glow
2036
+ location: { x: 0, y: 0, z: 350 }
2037
+ scale: { x: 1.5, y: 1.5, z: 1.5 }
2038
+ 32:
2039
+ task: level.place_actor
2040
+ options:
2041
+ actorClass: StaticMeshActor
2042
+ label: Pillar_1
2043
+ staticMesh: /Engine/BasicShapes/Cube.Cube
2044
+ material: /Game/Flows/Beacon/M_Pillar
2045
+ location: { x: 600, y: 0, z: 0 }
2046
+ scale: { x: 0.4, y: 0.4, z: 5 }
2047
+ 33:
2048
+ task: level.place_actor
2049
+ options:
2050
+ actorClass: StaticMeshActor
2051
+ label: Pillar_2
2052
+ staticMesh: /Engine/BasicShapes/Cube.Cube
2053
+ material: /Game/Flows/Beacon/M_Pillar
2054
+ location: { x: 185, y: 571, z: 0 }
2055
+ scale: { x: 0.4, y: 0.4, z: 5 }
2056
+ 34:
2057
+ task: level.place_actor
2058
+ options:
2059
+ actorClass: StaticMeshActor
2060
+ label: Pillar_3
2061
+ staticMesh: /Engine/BasicShapes/Cube.Cube
2062
+ material: /Game/Flows/Beacon/M_Pillar
2063
+ location: { x: -485, y: 353, z: 0 }
2064
+ scale: { x: 0.4, y: 0.4, z: 5 }
2065
+ 35:
2066
+ task: level.place_actor
2067
+ options:
2068
+ actorClass: StaticMeshActor
2069
+ label: Pillar_4
2070
+ staticMesh: /Engine/BasicShapes/Cube.Cube
2071
+ material: /Game/Flows/Beacon/M_Pillar
2072
+ location: { x: -485, y: -353, z: 0 }
2073
+ scale: { x: 0.4, y: 0.4, z: 5 }
2074
+ 36:
2075
+ task: level.place_actor
2076
+ options:
2077
+ actorClass: StaticMeshActor
2078
+ label: Pillar_5
2079
+ staticMesh: /Engine/BasicShapes/Cube.Cube
2080
+ material: /Game/Flows/Beacon/M_Pillar
2081
+ location: { x: 185, y: -571, z: 0 }
2082
+ scale: { x: 0.4, y: 0.4, z: 5 }
2083
+ 37:
2084
+ task: level.spawn_light
2085
+ options:
2086
+ lightType: directional
2087
+ label: Sun
2088
+ intensity: 10
2089
+ 38:
2090
+ task: level.set_light_properties
2091
+ options:
2092
+ actorLabel: Sun
2093
+ color: { r: 255, g: 160, b: 80 }
2094
+ 39:
2095
+ task: level.move_actor
2096
+ options:
2097
+ actorLabel: Sun
2098
+ rotation: { pitch: -25, yaw: -135 }
2099
+ 40:
2100
+ task: level.spawn_light
2101
+ options:
2102
+ lightType: point
2103
+ label: PillarLight_1
2104
+ location: { x: 600, y: 0, z: 550 }
2105
+ intensity: 80000
2106
+ 41:
2107
+ task: level.set_light_properties
2108
+ options:
2109
+ actorLabel: PillarLight_1
2110
+ color: { r: 0, g: 200, b: 255 }
2111
+ 42:
2112
+ task: level.spawn_light
2113
+ options:
2114
+ lightType: point
2115
+ label: PillarLight_2
2116
+ location: { x: 185, y: 571, z: 550 }
2117
+ intensity: 80000
2118
+ 43:
2119
+ task: level.set_light_properties
2120
+ options:
2121
+ actorLabel: PillarLight_2
2122
+ color: { r: 255, g: 0, b: 200 }
2123
+ 44:
2124
+ task: level.spawn_light
2125
+ options:
2126
+ lightType: point
2127
+ label: PillarLight_3
2128
+ location: { x: -485, y: 353, z: 550 }
2129
+ intensity: 80000
2130
+ 45:
2131
+ task: level.set_light_properties
2132
+ options:
2133
+ actorLabel: PillarLight_3
2134
+ color: { r: 255, g: 200, b: 0 }
2135
+ 46:
2136
+ task: level.spawn_light
2137
+ options:
2138
+ lightType: point
2139
+ label: PillarLight_4
2140
+ location: { x: -485, y: -353, z: 550 }
2141
+ intensity: 80000
2142
+ 47:
2143
+ task: level.set_light_properties
2144
+ options:
2145
+ actorLabel: PillarLight_4
2146
+ color: { r: 100, g: 255, b: 50 }
2147
+ 48:
2148
+ task: level.spawn_light
2149
+ options:
2150
+ lightType: point
2151
+ label: PillarLight_5
2152
+ location: { x: 185, y: -571, z: 550 }
2153
+ intensity: 80000
2154
+ 49:
2155
+ task: level.set_light_properties
2156
+ options:
2157
+ actorLabel: PillarLight_5
2158
+ color: { r: 120, g: 80, b: 255 }
2159
+ 50:
2160
+ task: level.spawn_light
2161
+ options:
2162
+ lightType: spot
2163
+ label: OrbSpot
2164
+ location: { x: 0, y: 0, z: 700 }
2165
+ intensity: 300000
2166
+ 51:
2167
+ task: level.move_actor
2168
+ options:
2169
+ actorLabel: OrbSpot
2170
+ rotation: { pitch: -90, yaw: 0 }
2171
+ 52:
2172
+ task: level.spawn_light
2173
+ options:
2174
+ lightType: point
2175
+ label: FillWarm
2176
+ location: { x: -400, y: -300, z: 100 }
2177
+ intensity: 20000
2178
+ 53:
2179
+ task: level.set_light_properties
2180
+ options:
2181
+ actorLabel: FillWarm
2182
+ color: { r: 255, g: 200, b: 150 }
2183
+ 54:
2184
+ task: level.spawn_light
2185
+ options:
2186
+ lightType: point
2187
+ label: FillCool
2188
+ location: { x: 400, y: 300, z: 100 }
2189
+ intensity: 15000
2190
+ 55:
2191
+ task: level.set_light_properties
2192
+ options:
2193
+ actorLabel: FillCool
2194
+ color: { r: 150, g: 200, b: 255 }
2195
+ 56:
1997
2196
  task: editor.set_viewport
1998
2197
  options:
1999
- location: { x: -600, y: 0, z: 250 }
2000
- rotation: { pitch: -10, yaw: 0 }
2198
+ location: { x: -900, y: -500, z: 400 }
2199
+ rotation: { pitch: -15, yaw: 30 }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ue-mcp",
3
- "version": "0.7.1",
3
+ "version": "0.7.3",
4
4
  "description": "Unreal Engine MCP server — 19 tools, 300+ actions for AI-driven editor control",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -64,7 +64,7 @@
64
64
  "prepublishOnly": "npx tsc && tsx scripts/generate-default-config.ts"
65
65
  },
66
66
  "dependencies": {
67
- "@db-lyon/flowkit": "^0.4.0",
67
+ "@db-lyon/flowkit": "^0.5.0",
68
68
  "@modelcontextprotocol/sdk": "^1.12.1",
69
69
  "ws": "^8.18.0",
70
70
  "zod": "^3.24.0"
@@ -38,6 +38,10 @@
38
38
  #include "FileHelpers.h"
39
39
  #include "GameFramework/WorldSettings.h"
40
40
  #include "GameFramework/GameModeBase.h"
41
+ #include "Engine/StaticMeshActor.h"
42
+ #include "Components/StaticMeshComponent.h"
43
+ #include "Engine/StaticMesh.h"
44
+ #include "Materials/MaterialInterface.h"
41
45
 
42
46
  void FLevelHandlers::RegisterHandlers(FMCPHandlerRegistry& Registry)
43
47
  {
@@ -59,6 +63,7 @@ void FLevelHandlers::RegisterHandlers(FMCPHandlerRegistry& Registry)
59
63
  Registry.RegisterHandler(TEXT("save_level"), &SaveLevel);
60
64
  Registry.RegisterHandler(TEXT("list_sublevels"), &ListSublevels);
61
65
  Registry.RegisterHandler(TEXT("set_component_property"), &SetComponentProperty);
66
+ Registry.RegisterHandler(TEXT("set_actor_material"), &SetActorMaterial);
62
67
  Registry.RegisterHandler(TEXT("set_volume_properties"), &SetVolumeProperties);
63
68
  Registry.RegisterHandler(TEXT("get_world_settings"), &GetWorldSettings);
64
69
  Registry.RegisterHandler(TEXT("set_world_settings"), &SetWorldSettings);
@@ -159,7 +164,7 @@ TSharedPtr<FJsonValue> FLevelHandlers::PlaceActor(const TSharedPtr<FJsonObject>&
159
164
  return MCPError(FString::Printf(TEXT("Actor class not found: %s"), *ActorClass));
160
165
  }
161
166
 
162
- // Get location
167
+ // Location
163
168
  FVector Location = FVector::ZeroVector;
164
169
  const TSharedPtr<FJsonObject>* LocationObj = nullptr;
165
170
  if (Params->TryGetObjectField(TEXT("location"), LocationObj))
@@ -169,14 +174,72 @@ TSharedPtr<FJsonValue> FLevelHandlers::PlaceActor(const TSharedPtr<FJsonObject>&
169
174
  (*LocationObj)->TryGetNumberField(TEXT("z"), Location.Z);
170
175
  }
171
176
 
172
- // Spawn actor
173
- FTransform SpawnTransform(FRotator::ZeroRotator, Location);
177
+ // Rotation
178
+ FRotator Rotation = FRotator::ZeroRotator;
179
+ const TSharedPtr<FJsonObject>* RotObj = nullptr;
180
+ if (Params->TryGetObjectField(TEXT("rotation"), RotObj))
181
+ {
182
+ (*RotObj)->TryGetNumberField(TEXT("pitch"), Rotation.Pitch);
183
+ (*RotObj)->TryGetNumberField(TEXT("yaw"), Rotation.Yaw);
184
+ (*RotObj)->TryGetNumberField(TEXT("roll"), Rotation.Roll);
185
+ }
186
+
187
+ // Spawn
188
+ FTransform SpawnTransform(Rotation, Location);
174
189
  AActor* NewActor = World->SpawnActor<AActor>(Class, SpawnTransform);
175
190
  if (!NewActor)
176
191
  {
177
192
  return MCPError(TEXT("Failed to spawn actor"));
178
193
  }
179
194
 
195
+ // Label
196
+ FString Label = OptionalString(Params, TEXT("label"));
197
+ if (!Label.IsEmpty())
198
+ {
199
+ NewActor->SetActorLabel(Label);
200
+ }
201
+
202
+ // Scale
203
+ const TSharedPtr<FJsonObject>* ScaleObj = nullptr;
204
+ if (Params->TryGetObjectField(TEXT("scale"), ScaleObj))
205
+ {
206
+ FVector Scale = FVector::OneVector;
207
+ (*ScaleObj)->TryGetNumberField(TEXT("x"), Scale.X);
208
+ (*ScaleObj)->TryGetNumberField(TEXT("y"), Scale.Y);
209
+ (*ScaleObj)->TryGetNumberField(TEXT("z"), Scale.Z);
210
+ NewActor->SetActorScale3D(Scale);
211
+ }
212
+
213
+ // Static mesh shorthand — set mesh on StaticMeshActor
214
+ FString StaticMeshPath = OptionalString(Params, TEXT("staticMesh"));
215
+ if (!StaticMeshPath.IsEmpty())
216
+ {
217
+ AStaticMeshActor* MeshActor = Cast<AStaticMeshActor>(NewActor);
218
+ if (MeshActor && MeshActor->GetStaticMeshComponent())
219
+ {
220
+ UStaticMesh* Mesh = LoadObject<UStaticMesh>(nullptr, *StaticMeshPath);
221
+ if (Mesh)
222
+ {
223
+ MeshActor->GetStaticMeshComponent()->SetStaticMesh(Mesh);
224
+ }
225
+ }
226
+ }
227
+
228
+ // Material shorthand — apply to first primitive component, slot 0
229
+ FString MaterialPath = OptionalString(Params, TEXT("material"));
230
+ if (!MaterialPath.IsEmpty())
231
+ {
232
+ UMaterialInterface* Material = LoadObject<UMaterialInterface>(nullptr, *MaterialPath);
233
+ if (Material)
234
+ {
235
+ UPrimitiveComponent* PrimComp = NewActor->FindComponentByClass<UPrimitiveComponent>();
236
+ if (PrimComp)
237
+ {
238
+ PrimComp->SetMaterial(0, Material);
239
+ }
240
+ }
241
+ }
242
+
180
243
  auto Result = MCPSuccess();
181
244
  Result->SetStringField(TEXT("actorLabel"), NewActor->GetActorLabel());
182
245
  Result->SetStringField(TEXT("actorClass"), ActorClass);
@@ -1178,3 +1241,53 @@ TSharedPtr<FJsonValue> FLevelHandlers::SetWorldSettings(const TSharedPtr<FJsonOb
1178
1241
 
1179
1242
  return MCPResult(Result);
1180
1243
  }
1244
+
1245
+ TSharedPtr<FJsonValue> FLevelHandlers::SetActorMaterial(const TSharedPtr<FJsonObject>& Params)
1246
+ {
1247
+ FString ActorLabel;
1248
+ if (auto Err = RequireString(Params, TEXT("actorLabel"), ActorLabel)) return Err;
1249
+
1250
+ FString MaterialPath;
1251
+ if (auto Err = RequireString(Params, TEXT("materialPath"), MaterialPath)) return Err;
1252
+
1253
+ int32 SlotIndex = OptionalInt(Params, TEXT("slotIndex"), 0);
1254
+
1255
+ REQUIRE_EDITOR_WORLD(World);
1256
+
1257
+ AActor* Actor = nullptr;
1258
+ for (TActorIterator<AActor> It(World); It; ++It)
1259
+ {
1260
+ if (It->GetActorLabel() == ActorLabel)
1261
+ {
1262
+ Actor = *It;
1263
+ break;
1264
+ }
1265
+ }
1266
+
1267
+ if (!Actor)
1268
+ {
1269
+ return MCPError(FString::Printf(TEXT("Actor not found: %s"), *ActorLabel));
1270
+ }
1271
+
1272
+ UMaterialInterface* Material = LoadObject<UMaterialInterface>(nullptr, *MaterialPath);
1273
+ if (!Material)
1274
+ {
1275
+ return MCPError(FString::Printf(TEXT("Material not found: %s"), *MaterialPath));
1276
+ }
1277
+
1278
+ UPrimitiveComponent* PrimComp = Actor->FindComponentByClass<UPrimitiveComponent>();
1279
+ if (!PrimComp)
1280
+ {
1281
+ return MCPError(FString::Printf(TEXT("Actor '%s' has no primitive component"), *ActorLabel));
1282
+ }
1283
+
1284
+ PrimComp->SetMaterial(SlotIndex, Material);
1285
+ PrimComp->MarkRenderStateDirty();
1286
+
1287
+ auto Result = MCPSuccess();
1288
+ Result->SetStringField(TEXT("actorLabel"), ActorLabel);
1289
+ Result->SetStringField(TEXT("materialPath"), MaterialPath);
1290
+ Result->SetNumberField(TEXT("slotIndex"), SlotIndex);
1291
+
1292
+ return MCPResult(Result);
1293
+ }
@@ -33,4 +33,5 @@ private:
33
33
  static TSharedPtr<FJsonValue> SetVolumeProperties(const TSharedPtr<FJsonObject>& Params);
34
34
  static TSharedPtr<FJsonValue> GetWorldSettings(const TSharedPtr<FJsonObject>& Params);
35
35
  static TSharedPtr<FJsonValue> SetWorldSettings(const TSharedPtr<FJsonObject>& Params);
36
+ static TSharedPtr<FJsonValue> SetActorMaterial(const TSharedPtr<FJsonObject>& Params);
36
37
  };