ue-mcp 1.0.68 → 1.0.70
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/README.md +2 -2
- package/dist/plugin/loader.d.ts +30 -14
- package/dist/plugin/loader.js +83 -42
- package/dist/plugin/loader.js.map +1 -1
- package/dist/plugin/manifest.d.ts +8 -0
- package/dist/plugin/manifest.js +10 -4
- package/dist/plugin/manifest.js.map +1 -1
- package/dist/tool-counts.json +5 -5
- package/dist/tools/gas.js +10 -0
- package/dist/tools/gas.js.map +1 -1
- package/dist/ue-mcp.default.yml +18 -0
- package/package.json +2 -2
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers.cpp +3 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers.h +6 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers_Runtime.cpp +300 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# UE-MCP
|
|
2
2
|
|
|
3
|
-
**Unreal Engine Model Context Protocol Server** - gives AI assistants deep read/write access to the Unreal Editor through <!-- count:tools -->21<!-- /count --> category tools covering <!-- count:actions -->
|
|
3
|
+
**Unreal Engine Model Context Protocol Server** - gives AI assistants deep read/write access to the Unreal Editor through <!-- count:tools -->21<!-- /count --> category tools covering <!-- count:actions -->545+<!-- /count --> actions, plus a YAML flow engine for multi-step workflows.
|
|
4
4
|
|
|
5
5
|
```mermaid
|
|
6
6
|
flowchart LR
|
|
@@ -57,7 +57,7 @@ If you prefer to configure manually, add to your MCP client config:
|
|
|
57
57
|
|
|
58
58
|
- [Getting Started](https://db-lyon.github.io/ue-mcp/getting-started/) — Installation, configuration, first run
|
|
59
59
|
- [Architecture](https://db-lyon.github.io/ue-mcp/architecture/) — How the pieces fit together
|
|
60
|
-
- [Tool Reference](https://db-lyon.github.io/ue-mcp/tool-reference/) - All <!-- count:tools -->21<!-- /count --> tools with <!-- count:actions -->
|
|
60
|
+
- [Tool Reference](https://db-lyon.github.io/ue-mcp/tool-reference/) - All <!-- count:tools -->21<!-- /count --> tools with <!-- count:actions -->545+<!-- /count --> actions
|
|
61
61
|
- [Flows](https://db-lyon.github.io/ue-mcp/flows/) - YAML flow engine, custom tasks, rollback, hooks
|
|
62
62
|
- [Configuration](https://db-lyon.github.io/ue-mcp/configuration/) — `.ue-mcp.json` and MCP client config
|
|
63
63
|
- [Neon Shrine Demo](https://db-lyon.github.io/ue-mcp/neon-shrine-demo/) — Interactive guided demo
|
package/dist/plugin/loader.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { ToolDef } from "../types.js";
|
|
|
3
3
|
import type { PluginEntry } from "../flow/schema.js";
|
|
4
4
|
import { type PluginManifest } from "./manifest.js";
|
|
5
5
|
import { type InjectionPlan } from "./injection.js";
|
|
6
|
+
import { type ProvisionPlan } from "./provision.js";
|
|
6
7
|
/** Per-plugin record surfaced to the `plugins` introspection category. */
|
|
7
8
|
export interface PluginRecord {
|
|
8
9
|
name: string;
|
|
@@ -58,23 +59,37 @@ export interface PluginLoadResult {
|
|
|
58
59
|
* warning, never partially injected.
|
|
59
60
|
*/
|
|
60
61
|
export declare function loadPlugins(tools: ToolDef[], entries: PluginEntry[], projectDir: string | undefined, serverVersion: string): Promise<PluginLoadResult>;
|
|
62
|
+
type TaskReg = {
|
|
63
|
+
name: string;
|
|
64
|
+
ctor: TaskConstructor;
|
|
65
|
+
};
|
|
61
66
|
/**
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
* Each handler `h` maps to action `<actionPrefix>_h` in the target category,
|
|
67
|
-
* dispatching to the bare bridge method `h` via a generic BridgeTask. The
|
|
68
|
-
* handler's `schema` becomes the action's params and `timeoutSeconds` its
|
|
69
|
-
* bridge-call timeout. Pure and disk-free so it can be unit-tested directly.
|
|
67
|
+
* What a native module's handlers surface into. `inject` merges into an
|
|
68
|
+
* existing built-in category (actions prefixed with `actionPrefix`); `provide`
|
|
69
|
+
* provisions a new top-level category the plugin owns (actions unprefixed - the
|
|
70
|
+
* category is the namespace).
|
|
70
71
|
*/
|
|
71
|
-
export
|
|
72
|
+
export type NativeHandlerSurface = {
|
|
73
|
+
kind: "inject";
|
|
72
74
|
plan: InjectionPlan;
|
|
73
|
-
taskRegistrations:
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
taskRegistrations: TaskReg[];
|
|
76
|
+
} | {
|
|
77
|
+
kind: "provide";
|
|
78
|
+
plan: ProvisionPlan;
|
|
79
|
+
taskRegistrations: TaskReg[];
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Surface a native module's handlers as MCP actions. Returns null when the
|
|
83
|
+
* manifest declares no `nativeModule.category` (handlers stay bridge-only).
|
|
84
|
+
*
|
|
85
|
+
* When `category` is a built-in (per `builtInCategories`) the result is an
|
|
86
|
+
* `inject` plan: each handler `h` becomes `<category>(action="<prefix>_h")`.
|
|
87
|
+
* Otherwise it's a `provide` plan that owns a new `<category>` tool with
|
|
88
|
+
* unprefixed actions `<category>(action="h")`. Either way `h` dispatches to the
|
|
89
|
+
* bare bridge method `h` via a generic BridgeTask, carrying the handler's
|
|
90
|
+
* `timeoutSeconds`. Pure and disk-free so it can be unit-tested directly.
|
|
91
|
+
*/
|
|
92
|
+
export declare function nativeHandlerSurface(manifest: PluginManifest, pluginName: string, builtInCategories: Set<string>): NativeHandlerSurface | null;
|
|
78
93
|
/**
|
|
79
94
|
* Duck-type check that a class behaves like a BaseTask subclass. We can't use
|
|
80
95
|
* `instanceof BaseTask` here because npm 7+ installs peerDependencies into
|
|
@@ -85,3 +100,4 @@ export declare function nativeHandlerInjection(manifest: PluginManifest, pluginN
|
|
|
85
100
|
* only invokes `.run()` on instances.
|
|
86
101
|
*/
|
|
87
102
|
export declare function looksLikeBaseTask(TaskClass: unknown): boolean;
|
|
103
|
+
export {};
|
package/dist/plugin/loader.js
CHANGED
|
@@ -2,7 +2,7 @@ import * as fs from "node:fs";
|
|
|
2
2
|
import * as path from "node:path";
|
|
3
3
|
import { pathToFileURL } from "node:url";
|
|
4
4
|
import { warn, info } from "../log.js";
|
|
5
|
-
import { loadManifest } from "./manifest.js";
|
|
5
|
+
import { loadManifest, } from "./manifest.js";
|
|
6
6
|
import { bridgeTaskClass } from "../flow/task-factory.js";
|
|
7
7
|
import { resolvePackage } from "./resolver.js";
|
|
8
8
|
import { satisfiesMinimum } from "./version.js";
|
|
@@ -103,18 +103,29 @@ export async function loadPlugins(tools, entries, projectDir, serverVersion) {
|
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
// Native handler auto-surfacing: when `nativeModule.category` is set, every
|
|
106
|
-
// declared handler becomes
|
|
107
|
-
//
|
|
108
|
-
//
|
|
109
|
-
//
|
|
110
|
-
//
|
|
111
|
-
const nativeSurface =
|
|
112
|
-
if (nativeSurface) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
106
|
+
// declared handler becomes an MCP action dispatching to the bare bridge
|
|
107
|
+
// method the C++ module registers. No TS task class is needed — a generic
|
|
108
|
+
// BridgeTask carries the method. A built-in category is injected into;
|
|
109
|
+
// a new category is provisioned as a tool the plugin owns. Without
|
|
110
|
+
// `category`, handlers stay bridge-only (back-compat).
|
|
111
|
+
const nativeSurface = nativeHandlerSurface(manifest, pkg.name, builtInCategories);
|
|
112
|
+
if (nativeSurface?.kind === "inject") {
|
|
113
|
+
taskRegistrations.push(...nativeSurface.taskRegistrations);
|
|
114
|
+
const list = plansByCategory.get(nativeSurface.plan.category) ?? [];
|
|
115
|
+
list.push(nativeSurface.plan);
|
|
116
|
+
plansByCategory.set(nativeSurface.plan.category, list);
|
|
117
|
+
}
|
|
118
|
+
else if (nativeSurface?.kind === "provide") {
|
|
119
|
+
const cat = nativeSurface.plan.category;
|
|
120
|
+
const existing = provisionByCategory.get(cat);
|
|
121
|
+
if (existing) {
|
|
122
|
+
warn("plugin", `${pkg.name}: nativeModule.category '${cat}' already claimed by '${existing.pluginName}'; skipping this provider`);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
provisionByCategory.set(cat, nativeSurface.plan);
|
|
126
|
+
taskRegistrations.push(...nativeSurface.taskRegistrations);
|
|
127
|
+
record.record.provided[cat] = Object.keys(nativeSurface.plan.spec.actions);
|
|
128
|
+
}
|
|
118
129
|
}
|
|
119
130
|
// Provided categories: claim each name (first writer wins). Subsequent
|
|
120
131
|
// plugins that try to provide the same name are skipped with a clear
|
|
@@ -246,10 +257,15 @@ async function loadOne(entry, projectDir, serverVersion, builtInCategories, brid
|
|
|
246
257
|
return skip(base, `inject target '${target}' is not a registered category. Valid: ${[...builtInCategories].sort().join(", ")}`);
|
|
247
258
|
}
|
|
248
259
|
}
|
|
249
|
-
// The native-handler surfacing target
|
|
260
|
+
// The native-handler surfacing target is either a built-in category (handlers
|
|
261
|
+
// inject into it) or a new category the plugin provisions. A new category must
|
|
262
|
+
// be a legal category name; cross-plugin collisions are resolved first-wins in
|
|
263
|
+
// loadPlugins.
|
|
250
264
|
const nativeCategory = manifest.nativeModule?.category;
|
|
251
|
-
if (nativeCategory &&
|
|
252
|
-
|
|
265
|
+
if (nativeCategory &&
|
|
266
|
+
!builtInCategories.has(nativeCategory) &&
|
|
267
|
+
!/^[a-z][a-z0-9_]*$/.test(nativeCategory)) {
|
|
268
|
+
return skip(base, `nativeModule.category '${nativeCategory}' must be a built-in category or a valid new category name (lowercase identifier, /^[a-z][a-z0-9_]*$/)`);
|
|
253
269
|
}
|
|
254
270
|
// Provided categories must not collide with built-in category names.
|
|
255
271
|
// Cross-plugin collisions are detected in the second pass in loadPlugins,
|
|
@@ -314,48 +330,73 @@ function skip(rec, reason) {
|
|
|
314
330
|
return { record: rec };
|
|
315
331
|
}
|
|
316
332
|
/**
|
|
317
|
-
*
|
|
318
|
-
*
|
|
319
|
-
* declares no `nativeModule.category` (handlers stay bridge-only).
|
|
333
|
+
* Surface a native module's handlers as MCP actions. Returns null when the
|
|
334
|
+
* manifest declares no `nativeModule.category` (handlers stay bridge-only).
|
|
320
335
|
*
|
|
321
|
-
*
|
|
322
|
-
*
|
|
323
|
-
*
|
|
324
|
-
*
|
|
336
|
+
* When `category` is a built-in (per `builtInCategories`) the result is an
|
|
337
|
+
* `inject` plan: each handler `h` becomes `<category>(action="<prefix>_h")`.
|
|
338
|
+
* Otherwise it's a `provide` plan that owns a new `<category>` tool with
|
|
339
|
+
* unprefixed actions `<category>(action="h")`. Either way `h` dispatches to the
|
|
340
|
+
* bare bridge method `h` via a generic BridgeTask, carrying the handler's
|
|
341
|
+
* `timeoutSeconds`. Pure and disk-free so it can be unit-tested directly.
|
|
325
342
|
*/
|
|
326
|
-
export function
|
|
343
|
+
export function nativeHandlerSurface(manifest, pluginName, builtInCategories) {
|
|
327
344
|
const native = manifest.nativeModule;
|
|
328
345
|
if (!native?.category)
|
|
329
346
|
return null;
|
|
330
347
|
const cat = native.category;
|
|
331
|
-
const actions = {};
|
|
332
348
|
const taskRegistrations = [];
|
|
349
|
+
// One flat schema backs every action in a category, so a schema-level
|
|
350
|
+
// required param would be forced onto unrelated actions. Native handlers
|
|
351
|
+
// validate their own params (RequireString), so force every surfaced param
|
|
352
|
+
// optional regardless of what the manifest declares.
|
|
353
|
+
const optionalSchema = (schema) => schema
|
|
354
|
+
? Object.fromEntries(Object.entries(schema).map(([k, f]) => [k, { ...f, required: false }]))
|
|
355
|
+
: undefined;
|
|
356
|
+
const timeoutMs = (seconds) => seconds ? seconds * 1000 : undefined;
|
|
357
|
+
if (builtInCategories.has(cat)) {
|
|
358
|
+
const actions = {};
|
|
359
|
+
for (const [hName, hSpec] of Object.entries(native.handlers)) {
|
|
360
|
+
// `task` is synthetic — mergeInjectionsIntoTool reads only description
|
|
361
|
+
// and schema; dispatch is wired through the registry registration below.
|
|
362
|
+
actions[hName] = {
|
|
363
|
+
task: `${manifest.actionPrefix}.${hName}`,
|
|
364
|
+
description: hSpec.description,
|
|
365
|
+
schema: optionalSchema(hSpec.schema),
|
|
366
|
+
};
|
|
367
|
+
const dispatchName = `${cat}.${manifest.actionPrefix}_${hName}`;
|
|
368
|
+
taskRegistrations.push({
|
|
369
|
+
name: dispatchName,
|
|
370
|
+
ctor: bridgeTaskClass(dispatchName, hName, undefined, timeoutMs(hSpec.timeoutSeconds)),
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
return {
|
|
374
|
+
kind: "inject",
|
|
375
|
+
plan: { category: cat, prefix: manifest.actionPrefix, pluginName, actions },
|
|
376
|
+
taskRegistrations,
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
// New category: provision a tool the plugin owns; actions are unprefixed.
|
|
380
|
+
const actions = {};
|
|
333
381
|
for (const [hName, hSpec] of Object.entries(native.handlers)) {
|
|
334
|
-
// One flat schema backs every action in the host category, so a
|
|
335
|
-
// schema-level required param would be forced onto unrelated actions.
|
|
336
|
-
// Native handlers validate their own params (RequireString), so force
|
|
337
|
-
// every surfaced param optional regardless of what the manifest declares.
|
|
338
|
-
const optionalSchema = hSpec.schema
|
|
339
|
-
? Object.fromEntries(Object.entries(hSpec.schema).map(([k, f]) => [k, { ...f, required: false }]))
|
|
340
|
-
: undefined;
|
|
341
|
-
// `task` is synthetic — mergeInjectionsIntoTool reads only description and
|
|
342
|
-
// schema; dispatch is wired through the registry registration below.
|
|
343
382
|
actions[hName] = {
|
|
344
|
-
task: `${
|
|
383
|
+
task: `${cat}.${hName}`, // synthetic; buildProvidedTool ignores it
|
|
345
384
|
description: hSpec.description,
|
|
346
|
-
schema: optionalSchema,
|
|
385
|
+
schema: optionalSchema(hSpec.schema),
|
|
347
386
|
};
|
|
348
|
-
const dispatchName = `${cat}.${
|
|
349
|
-
const timeoutMs = hSpec.timeoutSeconds
|
|
350
|
-
? hSpec.timeoutSeconds * 1000
|
|
351
|
-
: undefined;
|
|
387
|
+
const dispatchName = `${cat}.${hName}`;
|
|
352
388
|
taskRegistrations.push({
|
|
353
389
|
name: dispatchName,
|
|
354
|
-
ctor: bridgeTaskClass(dispatchName, hName, undefined, timeoutMs),
|
|
390
|
+
ctor: bridgeTaskClass(dispatchName, hName, undefined, timeoutMs(hSpec.timeoutSeconds)),
|
|
355
391
|
});
|
|
356
392
|
}
|
|
393
|
+
const spec = {
|
|
394
|
+
description: native.categoryDescription,
|
|
395
|
+
actions,
|
|
396
|
+
};
|
|
357
397
|
return {
|
|
358
|
-
|
|
398
|
+
kind: "provide",
|
|
399
|
+
plan: { category: cat, pluginName, description: native.categoryDescription, spec },
|
|
359
400
|
taskRegistrations,
|
|
360
401
|
};
|
|
361
402
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugin/loader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugin/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -170,6 +170,7 @@ declare const NativeModuleSchema: z.ZodObject<{
|
|
|
170
170
|
source: z.ZodString;
|
|
171
171
|
supportedEngineVersions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
172
172
|
category: z.ZodOptional<z.ZodString>;
|
|
173
|
+
categoryDescription: z.ZodOptional<z.ZodString>;
|
|
173
174
|
handlers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
174
175
|
description: z.ZodOptional<z.ZodString>;
|
|
175
176
|
timeoutSeconds: z.ZodOptional<z.ZodNumber>;
|
|
@@ -218,12 +219,14 @@ declare const NativeModuleSchema: z.ZodObject<{
|
|
|
218
219
|
timeoutSeconds?: number | undefined;
|
|
219
220
|
}>;
|
|
220
221
|
category?: string | undefined;
|
|
222
|
+
categoryDescription?: string | undefined;
|
|
221
223
|
}, {
|
|
222
224
|
uePluginName: string;
|
|
223
225
|
minBridgeApi: number;
|
|
224
226
|
source: string;
|
|
225
227
|
supportedEngineVersions?: string[] | undefined;
|
|
226
228
|
category?: string | undefined;
|
|
229
|
+
categoryDescription?: string | undefined;
|
|
227
230
|
handlers?: Record<string, {
|
|
228
231
|
description?: string | undefined;
|
|
229
232
|
schema?: Record<string, {
|
|
@@ -336,6 +339,7 @@ export declare const PluginManifestSchema: z.ZodObject<{
|
|
|
336
339
|
source: z.ZodString;
|
|
337
340
|
supportedEngineVersions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
338
341
|
category: z.ZodOptional<z.ZodString>;
|
|
342
|
+
categoryDescription: z.ZodOptional<z.ZodString>;
|
|
339
343
|
handlers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
340
344
|
description: z.ZodOptional<z.ZodString>;
|
|
341
345
|
timeoutSeconds: z.ZodOptional<z.ZodNumber>;
|
|
@@ -384,12 +388,14 @@ export declare const PluginManifestSchema: z.ZodObject<{
|
|
|
384
388
|
timeoutSeconds?: number | undefined;
|
|
385
389
|
}>;
|
|
386
390
|
category?: string | undefined;
|
|
391
|
+
categoryDescription?: string | undefined;
|
|
387
392
|
}, {
|
|
388
393
|
uePluginName: string;
|
|
389
394
|
minBridgeApi: number;
|
|
390
395
|
source: string;
|
|
391
396
|
supportedEngineVersions?: string[] | undefined;
|
|
392
397
|
category?: string | undefined;
|
|
398
|
+
categoryDescription?: string | undefined;
|
|
393
399
|
handlers?: Record<string, {
|
|
394
400
|
description?: string | undefined;
|
|
395
401
|
schema?: Record<string, {
|
|
@@ -516,6 +522,7 @@ export declare const PluginManifestSchema: z.ZodObject<{
|
|
|
516
522
|
timeoutSeconds?: number | undefined;
|
|
517
523
|
}>;
|
|
518
524
|
category?: string | undefined;
|
|
525
|
+
categoryDescription?: string | undefined;
|
|
519
526
|
} | undefined;
|
|
520
527
|
}, {
|
|
521
528
|
actionPrefix: string;
|
|
@@ -564,6 +571,7 @@ export declare const PluginManifestSchema: z.ZodObject<{
|
|
|
564
571
|
source: string;
|
|
565
572
|
supportedEngineVersions?: string[] | undefined;
|
|
566
573
|
category?: string | undefined;
|
|
574
|
+
categoryDescription?: string | undefined;
|
|
567
575
|
handlers?: Record<string, {
|
|
568
576
|
description?: string | undefined;
|
|
569
577
|
schema?: Record<string, {
|
package/dist/plugin/manifest.js
CHANGED
|
@@ -67,11 +67,17 @@ const NativeModuleSchema = z.object({
|
|
|
67
67
|
minBridgeApi: z.number().int().nonnegative(),
|
|
68
68
|
source: z.string().min(1),
|
|
69
69
|
supportedEngineVersions: z.array(z.string().min(1)).default([]),
|
|
70
|
-
//
|
|
71
|
-
//
|
|
72
|
-
//
|
|
73
|
-
//
|
|
70
|
+
// Category to surface this module's handlers into as MCP actions. When it
|
|
71
|
+
// names a built-in category, each handler `h` is injected as
|
|
72
|
+
// `<category>(action="<actionPrefix>_h")`. When it names a new (non-built-in)
|
|
73
|
+
// category, that category is provisioned as a top-level tool the plugin owns
|
|
74
|
+
// and handlers surface unprefixed: `<category>(action="h")`. Either way the
|
|
75
|
+
// action dispatches to the bare bridge method `h`. Omitted → handlers stay
|
|
76
|
+
// registered on the bridge but exposed as no action (back-compat).
|
|
74
77
|
category: z.string().min(1).optional(),
|
|
78
|
+
// Summary shown on a provisioned (new) category's tool. Ignored when
|
|
79
|
+
// `category` is a built-in.
|
|
80
|
+
categoryDescription: z.string().min(1).optional(),
|
|
75
81
|
handlers: z
|
|
76
82
|
.record(z.object({
|
|
77
83
|
description: z.string().optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/plugin/manifest.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/plugin/manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/tool-counts.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"tools": 21,
|
|
3
|
-
"actions":
|
|
4
|
-
"bridgeActions":
|
|
3
|
+
"actions": 545,
|
|
4
|
+
"bridgeActions": 517,
|
|
5
5
|
"localActions": 28,
|
|
6
6
|
"perTool": {
|
|
7
7
|
"project": 25,
|
|
@@ -19,13 +19,13 @@
|
|
|
19
19
|
"editor": 54,
|
|
20
20
|
"reflection": 8,
|
|
21
21
|
"gameplay": 53,
|
|
22
|
-
"gas":
|
|
22
|
+
"gas": 12,
|
|
23
23
|
"networking": 11,
|
|
24
24
|
"demo": 3,
|
|
25
25
|
"feedback": 1,
|
|
26
26
|
"statetree": 35,
|
|
27
27
|
"plugins": 2
|
|
28
28
|
},
|
|
29
|
-
"generatedAt": "2026-05-
|
|
30
|
-
"version": "1.0.
|
|
29
|
+
"generatedAt": "2026-05-29T20:36:26.666Z",
|
|
30
|
+
"version": "1.0.70"
|
|
31
31
|
}
|
package/dist/tools/gas.js
CHANGED
|
@@ -10,6 +10,9 @@ export const gasTool = categoryTool("gas", "Gameplay Ability System: abilities,
|
|
|
10
10
|
set_effect_modifier: bp("Add modifier. Params: effectPath, attribute, operation?, magnitude?", "set_effect_modifier"),
|
|
11
11
|
create_cue: bp("Create GameplayCue. Params: name, packagePath?, cueType?", "create_gameplay_cue"),
|
|
12
12
|
get_info: bp("Inspect GAS setup. Params: blueprintPath", "get_gas_info"),
|
|
13
|
+
apply_effect: bp("Apply a GameplayEffect to a live actor's ASC (agnostic stat/damage stimulus - uses the game's own effect). Params: actorLabel, effectClass (content path or class name), level?, setByCaller? ({tag-or-name: magnitude}), world? (auto|pie|editor, default auto)", "apply_effect"),
|
|
14
|
+
set_attribute: bp("Set a gameplay attribute's base value on a live actor's ASC (recalculates CurrentValue through the aggregator). Params: actorLabel, attribute (Health | SetName.Health), value, world?", "set_attribute"),
|
|
15
|
+
get_attribute: bp("Read gameplay attribute base + current values on a live actor's ASC. Omit attribute to list all. Params: actorLabel, attribute?, world?", "get_attribute"),
|
|
13
16
|
}, undefined, {
|
|
14
17
|
blueprintPath: z.string().optional(),
|
|
15
18
|
name: z.string().optional(),
|
|
@@ -31,5 +34,12 @@ export const gasTool = categoryTool("gas", "Gameplay Ability System: abilities,
|
|
|
31
34
|
magnitude: z.number().optional(),
|
|
32
35
|
durationPolicy: z.string().optional(),
|
|
33
36
|
cueType: z.string().optional(),
|
|
37
|
+
// Runtime GAS control (apply_effect / set_attribute / get_attribute)
|
|
38
|
+
actorLabel: z.string().optional().describe("Live actor label/name for runtime GAS actions"),
|
|
39
|
+
effectClass: z.string().optional().describe("apply_effect: GameplayEffect content path or class name"),
|
|
40
|
+
level: z.number().optional().describe("apply_effect: effect level (default 1)"),
|
|
41
|
+
setByCaller: z.record(z.number()).optional().describe("apply_effect: SetByCaller magnitudes keyed by gameplay tag or name"),
|
|
42
|
+
value: z.number().optional().describe("set_attribute: new base value"),
|
|
43
|
+
world: z.string().optional().describe("Runtime world scope: auto (default) | pie | editor"),
|
|
34
44
|
});
|
|
35
45
|
//# sourceMappingURL=gas.js.map
|
package/dist/tools/gas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gas.js","sourceRoot":"","sources":["../../src/tools/gas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,EAAE,EAAgB,MAAM,aAAa,CAAC;AAE7D,MAAM,CAAC,MAAM,OAAO,GAAY,YAAY,CAC1C,KAAK,EACL,oEAAoE,EACpE;IACE,OAAO,EAAc,EAAE,CAAC,mEAAmE,EAAE,8BAA8B,CAAC;IAC5H,oBAAoB,EAAE,EAAE,CAAC,oDAAoD,EAAE,sBAAsB,CAAC;IACtG,aAAa,EAAQ,EAAE,CAAC,8EAA8E,EAAE,eAAe,CAAC;IACxH,cAAc,EAAO,EAAE,CAAC,qEAAqE,EAAE,yBAAyB,CAAC;IACzH,gBAAgB,EAAK,EAAE,CAAC,0IAA0I,EAAE,kBAAkB,CAAC;IACvL,aAAa,EAAQ,EAAE,CAAC,uEAAuE,EAAE,wBAAwB,CAAC;IAC1H,mBAAmB,EAAE,EAAE,CAAC,qEAAqE,EAAE,qBAAqB,CAAC;IACrH,UAAU,EAAW,EAAE,CAAC,0DAA0D,EAAE,qBAAqB,CAAC;IAC1G,QAAQ,EAAa,EAAE,CAAC,0CAA0C,EAAE,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"gas.js","sourceRoot":"","sources":["../../src/tools/gas.ts"],"names":[],"mappings":"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"}
|
package/dist/ue-mcp.default.yml
CHANGED
|
@@ -2927,6 +2927,24 @@ tasks:
|
|
|
2927
2927
|
description: "Inspect GAS setup. Params: blueprintPath"
|
|
2928
2928
|
options:
|
|
2929
2929
|
method: get_gas_info
|
|
2930
|
+
gas.apply_effect:
|
|
2931
|
+
class_path: ue-mcp.bridge
|
|
2932
|
+
group: gas
|
|
2933
|
+
description: "Apply a GameplayEffect to a live actor's ASC (agnostic stat/damage stimulus - uses the game's own effect). Params: actorLabel, effectClass (content path or class name), level?, setByCaller? ({tag-or-name: magnitude}), world? (auto|pie|editor, default auto)"
|
|
2934
|
+
options:
|
|
2935
|
+
method: apply_effect
|
|
2936
|
+
gas.set_attribute:
|
|
2937
|
+
class_path: ue-mcp.bridge
|
|
2938
|
+
group: gas
|
|
2939
|
+
description: "Set a gameplay attribute's base value on a live actor's ASC (recalculates CurrentValue through the aggregator). Params: actorLabel, attribute (Health | SetName.Health), value, world?"
|
|
2940
|
+
options:
|
|
2941
|
+
method: set_attribute
|
|
2942
|
+
gas.get_attribute:
|
|
2943
|
+
class_path: ue-mcp.bridge
|
|
2944
|
+
group: gas
|
|
2945
|
+
description: "Read gameplay attribute base + current values on a live actor's ASC. Omit attribute to list all. Params: actorLabel, attribute?, world?"
|
|
2946
|
+
options:
|
|
2947
|
+
method: get_attribute
|
|
2930
2948
|
|
|
2931
2949
|
# ── networking ──
|
|
2932
2950
|
networking.set_replicates:
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ue-mcp",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Unreal Engine MCP server - 21 tools,
|
|
3
|
+
"version": "1.0.70",
|
|
4
|
+
"description": "Unreal Engine MCP server - 21 tools, 545+ actions for AI-driven editor control",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"exports": {
|
|
@@ -33,6 +33,9 @@ void FGasHandlers::RegisterHandlers(FMCPHandlerRegistry& Registry)
|
|
|
33
33
|
Registry.RegisterHandler(TEXT("add_attribute"), &AddAttribute);
|
|
34
34
|
Registry.RegisterHandler(TEXT("set_ability_tags"), &SetAbilityTags);
|
|
35
35
|
Registry.RegisterHandler(TEXT("set_effect_modifier"), &SetEffectModifier);
|
|
36
|
+
Registry.RegisterHandler(TEXT("apply_effect"), &ApplyEffect);
|
|
37
|
+
Registry.RegisterHandler(TEXT("set_attribute"), &SetAttribute);
|
|
38
|
+
Registry.RegisterHandler(TEXT("get_attribute"), &GetAttribute);
|
|
36
39
|
}
|
|
37
40
|
|
|
38
41
|
TSharedPtr<FJsonValue> FGasHandlers::CreateGasBlueprint(
|
|
@@ -32,4 +32,10 @@ private:
|
|
|
32
32
|
static TSharedPtr<FJsonValue> AddAttribute(const TSharedPtr<FJsonObject>& Params);
|
|
33
33
|
static TSharedPtr<FJsonValue> SetAbilityTags(const TSharedPtr<FJsonObject>& Params);
|
|
34
34
|
static TSharedPtr<FJsonValue> SetEffectModifier(const TSharedPtr<FJsonObject>& Params);
|
|
35
|
+
|
|
36
|
+
// Runtime GAS control (operates on a live actor's AbilitySystemComponent,
|
|
37
|
+
// PIE by default). Implemented in GasHandlers_Runtime.cpp.
|
|
38
|
+
static TSharedPtr<FJsonValue> ApplyEffect(const TSharedPtr<FJsonObject>& Params);
|
|
39
|
+
static TSharedPtr<FJsonValue> SetAttribute(const TSharedPtr<FJsonObject>& Params);
|
|
40
|
+
static TSharedPtr<FJsonValue> GetAttribute(const TSharedPtr<FJsonObject>& Params);
|
|
35
41
|
};
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
// Runtime GAS control: apply a GameplayEffect, and get/set attributes on a
|
|
2
|
+
// live actor's AbilitySystemComponent. These are the agnostic "affect a stat"
|
|
3
|
+
// test stimuli - they drive the game's OWN effects and attributes rather than
|
|
4
|
+
// assuming a damage pipeline, so they work for any GAS game. Non-GAS games set
|
|
5
|
+
// reflection-exposed stats via level.set_actor_property or call their own
|
|
6
|
+
// functions via editor.invoke_function instead.
|
|
7
|
+
|
|
8
|
+
#include "GasHandlers.h"
|
|
9
|
+
#include "HandlerUtils.h"
|
|
10
|
+
#include "Dom/JsonObject.h"
|
|
11
|
+
#include "Dom/JsonValue.h"
|
|
12
|
+
#include "GameFramework/Actor.h"
|
|
13
|
+
#include "AbilitySystemComponent.h"
|
|
14
|
+
#include "AbilitySystemBlueprintLibrary.h"
|
|
15
|
+
#include "AttributeSet.h"
|
|
16
|
+
#include "GameplayEffect.h"
|
|
17
|
+
#include "GameplayEffectTypes.h"
|
|
18
|
+
#include "GameplayTagContainer.h"
|
|
19
|
+
|
|
20
|
+
namespace
|
|
21
|
+
{
|
|
22
|
+
// Resolve the world for this call. Defaults to "auto" (prefer PIE), since
|
|
23
|
+
// runtime GAS control is almost always exercised during Play-In-Editor.
|
|
24
|
+
UWorld* ResolveRuntimeWorld(const TSharedPtr<FJsonObject>& Params)
|
|
25
|
+
{
|
|
26
|
+
return ResolveWorldScope(OptionalString(Params, TEXT("world"), TEXT("auto")));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Find the actor (by label or name) in the resolved world and return its
|
|
30
|
+
// AbilitySystemComponent. On any failure writes a structured error to
|
|
31
|
+
// OutError and returns nullptr.
|
|
32
|
+
UAbilitySystemComponent* ResolveASC(
|
|
33
|
+
const TSharedPtr<FJsonObject>& Params,
|
|
34
|
+
AActor*& OutActor,
|
|
35
|
+
TSharedPtr<FJsonValue>& OutError)
|
|
36
|
+
{
|
|
37
|
+
FString ActorLabel;
|
|
38
|
+
if (auto Err = RequireString(Params, TEXT("actorLabel"), ActorLabel))
|
|
39
|
+
{
|
|
40
|
+
OutError = Err;
|
|
41
|
+
return nullptr;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
UWorld* World = ResolveRuntimeWorld(Params);
|
|
45
|
+
if (!World)
|
|
46
|
+
{
|
|
47
|
+
OutError = MCPError(TEXT("No world available. For PIE actors, start Play-In-Editor first."));
|
|
48
|
+
return nullptr;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
AActor* Actor = FindActorByLabelOrName(World, ActorLabel);
|
|
52
|
+
if (!Actor)
|
|
53
|
+
{
|
|
54
|
+
OutError = MCPError(FString::Printf(TEXT("Actor not found: %s"), *ActorLabel));
|
|
55
|
+
return nullptr;
|
|
56
|
+
}
|
|
57
|
+
OutActor = Actor;
|
|
58
|
+
|
|
59
|
+
UAbilitySystemComponent* ASC =
|
|
60
|
+
UAbilitySystemBlueprintLibrary::GetAbilitySystemComponent(Actor);
|
|
61
|
+
if (!ASC)
|
|
62
|
+
{
|
|
63
|
+
OutError = MCPError(FString::Printf(
|
|
64
|
+
TEXT("Actor '%s' has no AbilitySystemComponent (not a GAS actor)"), *ActorLabel));
|
|
65
|
+
return nullptr;
|
|
66
|
+
}
|
|
67
|
+
return ASC;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Resolve a FGameplayAttribute by name against the ASC's spawned attribute
|
|
71
|
+
// sets. Accepts a bare property name ("Health") or qualified forms
|
|
72
|
+
// ("HealthSet.Health" / "HealthSet:Health"). Returns an invalid attribute
|
|
73
|
+
// on miss; writes the matched set name to OutSetName on hit.
|
|
74
|
+
FGameplayAttribute FindAttributeByName(
|
|
75
|
+
UAbilitySystemComponent* ASC,
|
|
76
|
+
const FString& Name,
|
|
77
|
+
FString& OutSetName)
|
|
78
|
+
{
|
|
79
|
+
for (const UAttributeSet* Set : ASC->GetSpawnedAttributes())
|
|
80
|
+
{
|
|
81
|
+
if (!Set) continue;
|
|
82
|
+
UClass* SetClass = Set->GetClass();
|
|
83
|
+
const FString SetName = SetClass->GetName();
|
|
84
|
+
for (TFieldIterator<FProperty> It(SetClass); It; ++It)
|
|
85
|
+
{
|
|
86
|
+
FStructProperty* SProp = CastField<FStructProperty>(*It);
|
|
87
|
+
if (!SProp || SProp->Struct != FGameplayAttributeData::StaticStruct()) continue;
|
|
88
|
+
const FString PropName = SProp->GetName();
|
|
89
|
+
if (PropName == Name
|
|
90
|
+
|| (SetName + TEXT(".") + PropName) == Name
|
|
91
|
+
|| (SetName + TEXT(":") + PropName) == Name)
|
|
92
|
+
{
|
|
93
|
+
OutSetName = SetName;
|
|
94
|
+
return FGameplayAttribute(SProp);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return FGameplayAttribute();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Append one attribute's name/base/current to a JSON object.
|
|
102
|
+
void WriteAttributeRow(
|
|
103
|
+
TSharedPtr<FJsonObject> Obj,
|
|
104
|
+
UAbilitySystemComponent* ASC,
|
|
105
|
+
const FGameplayAttribute& Attr)
|
|
106
|
+
{
|
|
107
|
+
Obj->SetStringField(TEXT("attribute"), Attr.GetName());
|
|
108
|
+
Obj->SetNumberField(TEXT("baseValue"), ASC->GetNumericAttributeBase(Attr));
|
|
109
|
+
Obj->SetNumberField(TEXT("currentValue"), ASC->GetNumericAttribute(Attr));
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Resolve a UGameplayEffect subclass from a content path or short class name.
|
|
113
|
+
UClass* ResolveEffectClass(const FString& Spec)
|
|
114
|
+
{
|
|
115
|
+
auto IsEffect = [](UClass* C) { return C && C->IsChildOf(UGameplayEffect::StaticClass()); };
|
|
116
|
+
|
|
117
|
+
if (Spec.Contains(TEXT("/")))
|
|
118
|
+
{
|
|
119
|
+
// Direct class load (native or already-_C class path).
|
|
120
|
+
if (UClass* C = LoadObject<UClass>(nullptr, *Spec); IsEffect(C)) return C;
|
|
121
|
+
// Blueprint generated class: "/Game/Foo/GE_Bar" -> ".../GE_Bar.GE_Bar_C".
|
|
122
|
+
FString AssetName;
|
|
123
|
+
Spec.Split(TEXT("/"), nullptr, &AssetName, ESearchCase::CaseSensitive, ESearchDir::FromEnd);
|
|
124
|
+
const FString ClassPath = Spec + TEXT(".") + AssetName + TEXT("_C");
|
|
125
|
+
if (UClass* C = LoadObject<UClass>(nullptr, *ClassPath); IsEffect(C)) return C;
|
|
126
|
+
// Fall back to loading the Blueprint and taking its generated class.
|
|
127
|
+
if (UBlueprint* BP = LoadAssetByPath<UBlueprint>(Spec))
|
|
128
|
+
{
|
|
129
|
+
if (IsEffect(BP->GeneratedClass)) return BP->GeneratedClass;
|
|
130
|
+
}
|
|
131
|
+
return nullptr;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
UClass* C = FindClassByShortName(Spec);
|
|
135
|
+
return IsEffect(C) ? C : nullptr;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
TSharedPtr<FJsonValue> FGasHandlers::ApplyEffect(const TSharedPtr<FJsonObject>& Params)
|
|
140
|
+
{
|
|
141
|
+
MCP_CHECK_GAME_THREAD();
|
|
142
|
+
|
|
143
|
+
FString EffectSpec;
|
|
144
|
+
if (auto Err = RequireStringAlt(Params, TEXT("effectClass"), TEXT("effectPath"), EffectSpec)) return Err;
|
|
145
|
+
|
|
146
|
+
AActor* Actor = nullptr;
|
|
147
|
+
TSharedPtr<FJsonValue> Err;
|
|
148
|
+
UAbilitySystemComponent* ASC = ResolveASC(Params, Actor, Err);
|
|
149
|
+
if (!ASC) return Err;
|
|
150
|
+
|
|
151
|
+
UClass* EffectClass = ResolveEffectClass(EffectSpec);
|
|
152
|
+
if (!EffectClass)
|
|
153
|
+
{
|
|
154
|
+
return MCPError(FString::Printf(
|
|
155
|
+
TEXT("GameplayEffect class not found: %s (pass a content path or class name)"), *EffectSpec));
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
const float Level = static_cast<float>(OptionalNumber(Params, TEXT("level"), 1.0));
|
|
159
|
+
|
|
160
|
+
FGameplayEffectContextHandle Context = ASC->MakeEffectContext();
|
|
161
|
+
Context.AddInstigator(Actor, Actor);
|
|
162
|
+
FGameplayEffectSpecHandle SpecHandle = ASC->MakeOutgoingSpec(EffectClass, Level, Context);
|
|
163
|
+
if (!SpecHandle.IsValid() || !SpecHandle.Data.IsValid())
|
|
164
|
+
{
|
|
165
|
+
return MCPError(TEXT("Failed to build a GameplayEffectSpec for the effect"));
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// SetByCaller magnitudes: { "<tag-or-name>": <number> }. Prefer a gameplay
|
|
169
|
+
// tag when the key resolves to one; otherwise use the FName overload.
|
|
170
|
+
const TSharedPtr<FJsonObject>* SetByCaller = nullptr;
|
|
171
|
+
TArray<FString> AppliedKeys;
|
|
172
|
+
if (Params->TryGetObjectField(TEXT("setByCaller"), SetByCaller) && SetByCaller && (*SetByCaller).IsValid())
|
|
173
|
+
{
|
|
174
|
+
for (const auto& KV : (*SetByCaller)->Values)
|
|
175
|
+
{
|
|
176
|
+
double Mag = 0.0;
|
|
177
|
+
if (!KV.Value.IsValid() || !KV.Value->TryGetNumber(Mag)) continue;
|
|
178
|
+
const FGameplayTag Tag = FGameplayTag::RequestGameplayTag(FName(*KV.Key), /*ErrorIfNotFound*/ false);
|
|
179
|
+
if (Tag.IsValid())
|
|
180
|
+
{
|
|
181
|
+
SpecHandle.Data->SetSetByCallerMagnitude(Tag, static_cast<float>(Mag));
|
|
182
|
+
}
|
|
183
|
+
else
|
|
184
|
+
{
|
|
185
|
+
SpecHandle.Data->SetSetByCallerMagnitude(FName(*KV.Key), static_cast<float>(Mag));
|
|
186
|
+
}
|
|
187
|
+
AppliedKeys.Add(KV.Key);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
const FActiveGameplayEffectHandle Active = ASC->ApplyGameplayEffectSpecToSelf(*SpecHandle.Data);
|
|
192
|
+
|
|
193
|
+
auto Result = MCPSuccess();
|
|
194
|
+
Result->SetStringField(TEXT("actorLabel"), Actor->GetActorLabel());
|
|
195
|
+
Result->SetStringField(TEXT("effect"), EffectClass->GetPathName());
|
|
196
|
+
Result->SetNumberField(TEXT("level"), Level);
|
|
197
|
+
Result->SetBoolField(TEXT("applied"), Active.WasSuccessfullyApplied());
|
|
198
|
+
// Duration/Infinite effects produce a live handle; instant effects don't.
|
|
199
|
+
Result->SetBoolField(TEXT("durationActive"), Active.IsValid());
|
|
200
|
+
if (AppliedKeys.Num() > 0)
|
|
201
|
+
{
|
|
202
|
+
TArray<TSharedPtr<FJsonValue>> Keys;
|
|
203
|
+
for (const FString& K : AppliedKeys) Keys.Add(MakeShared<FJsonValueString>(K));
|
|
204
|
+
Result->SetArrayField(TEXT("setByCaller"), Keys);
|
|
205
|
+
}
|
|
206
|
+
return MCPResult(Result);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
TSharedPtr<FJsonValue> FGasHandlers::SetAttribute(const TSharedPtr<FJsonObject>& Params)
|
|
210
|
+
{
|
|
211
|
+
MCP_CHECK_GAME_THREAD();
|
|
212
|
+
|
|
213
|
+
FString AttrName;
|
|
214
|
+
if (auto Err = RequireString(Params, TEXT("attribute"), AttrName)) return Err;
|
|
215
|
+
|
|
216
|
+
double NewValue = 0.0;
|
|
217
|
+
if (!Params->TryGetNumberField(TEXT("value"), NewValue))
|
|
218
|
+
{
|
|
219
|
+
return MCPError(TEXT("Missing required parameter 'value'"));
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
AActor* Actor = nullptr;
|
|
223
|
+
TSharedPtr<FJsonValue> Err;
|
|
224
|
+
UAbilitySystemComponent* ASC = ResolveASC(Params, Actor, Err);
|
|
225
|
+
if (!ASC) return Err;
|
|
226
|
+
|
|
227
|
+
FString SetName;
|
|
228
|
+
const FGameplayAttribute Attr = FindAttributeByName(ASC, AttrName, SetName);
|
|
229
|
+
if (!Attr.IsValid())
|
|
230
|
+
{
|
|
231
|
+
return MCPError(FString::Printf(
|
|
232
|
+
TEXT("Attribute '%s' not found on '%s'. Use get_attribute with no 'attribute' to list available ones."),
|
|
233
|
+
*AttrName, *Actor->GetActorLabel()));
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
const float OldBase = ASC->GetNumericAttributeBase(Attr);
|
|
237
|
+
// SetNumericAttributeBase recalculates CurrentValue through the aggregator,
|
|
238
|
+
// so dependent modifiers stay consistent (unlike a raw property write).
|
|
239
|
+
ASC->SetNumericAttributeBase(Attr, static_cast<float>(NewValue));
|
|
240
|
+
|
|
241
|
+
auto Result = MCPSuccess();
|
|
242
|
+
MCPSetUpdated(Result);
|
|
243
|
+
Result->SetStringField(TEXT("actorLabel"), Actor->GetActorLabel());
|
|
244
|
+
Result->SetStringField(TEXT("attributeSet"), SetName);
|
|
245
|
+
Result->SetStringField(TEXT("attribute"), Attr.GetName());
|
|
246
|
+
Result->SetNumberField(TEXT("previousBaseValue"), OldBase);
|
|
247
|
+
Result->SetNumberField(TEXT("baseValue"), ASC->GetNumericAttributeBase(Attr));
|
|
248
|
+
Result->SetNumberField(TEXT("currentValue"), ASC->GetNumericAttribute(Attr));
|
|
249
|
+
return MCPResult(Result);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
TSharedPtr<FJsonValue> FGasHandlers::GetAttribute(const TSharedPtr<FJsonObject>& Params)
|
|
253
|
+
{
|
|
254
|
+
MCP_CHECK_GAME_THREAD();
|
|
255
|
+
|
|
256
|
+
AActor* Actor = nullptr;
|
|
257
|
+
TSharedPtr<FJsonValue> Err;
|
|
258
|
+
UAbilitySystemComponent* ASC = ResolveASC(Params, Actor, Err);
|
|
259
|
+
if (!ASC) return Err;
|
|
260
|
+
|
|
261
|
+
auto Result = MCPSuccess();
|
|
262
|
+
Result->SetStringField(TEXT("actorLabel"), Actor->GetActorLabel());
|
|
263
|
+
|
|
264
|
+
const FString AttrName = OptionalString(Params, TEXT("attribute"));
|
|
265
|
+
if (!AttrName.IsEmpty())
|
|
266
|
+
{
|
|
267
|
+
FString SetName;
|
|
268
|
+
const FGameplayAttribute Attr = FindAttributeByName(ASC, AttrName, SetName);
|
|
269
|
+
if (!Attr.IsValid())
|
|
270
|
+
{
|
|
271
|
+
return MCPError(FString::Printf(
|
|
272
|
+
TEXT("Attribute '%s' not found on '%s'"), *AttrName, *Actor->GetActorLabel()));
|
|
273
|
+
}
|
|
274
|
+
Result->SetStringField(TEXT("attributeSet"), SetName);
|
|
275
|
+
WriteAttributeRow(Result, ASC, Attr);
|
|
276
|
+
return MCPResult(Result);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
// No attribute named: enumerate every attribute across all spawned sets.
|
|
280
|
+
TArray<TSharedPtr<FJsonValue>> Rows;
|
|
281
|
+
for (const UAttributeSet* Set : ASC->GetSpawnedAttributes())
|
|
282
|
+
{
|
|
283
|
+
if (!Set) continue;
|
|
284
|
+
UClass* SetClass = Set->GetClass();
|
|
285
|
+
const FString SetName = SetClass->GetName();
|
|
286
|
+
for (TFieldIterator<FProperty> It(SetClass); It; ++It)
|
|
287
|
+
{
|
|
288
|
+
FStructProperty* SProp = CastField<FStructProperty>(*It);
|
|
289
|
+
if (!SProp || SProp->Struct != FGameplayAttributeData::StaticStruct()) continue;
|
|
290
|
+
const FGameplayAttribute Attr(SProp);
|
|
291
|
+
TSharedPtr<FJsonObject> Row = MakeShared<FJsonObject>();
|
|
292
|
+
Row->SetStringField(TEXT("attributeSet"), SetName);
|
|
293
|
+
WriteAttributeRow(Row, ASC, Attr);
|
|
294
|
+
Rows.Add(MakeShared<FJsonValueObject>(Row));
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
Result->SetArrayField(TEXT("attributes"), Rows);
|
|
298
|
+
Result->SetNumberField(TEXT("count"), Rows.Num());
|
|
299
|
+
return MCPResult(Result);
|
|
300
|
+
}
|