@chrrxs/robloxstudio-mcp 2.17.0 → 2.17.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/dist/index.js +37 -91
- package/package.json +1 -1
- package/studio-plugin/MCPInspectorPlugin.rbxmx +361 -253
- package/studio-plugin/MCPPlugin.rbxmx +361 -253
- package/studio-plugin/src/modules/Communication.ts +7 -5
- package/studio-plugin/src/modules/ServerUrlSettings.ts +62 -9
- package/studio-plugin/src/modules/UI.ts +11 -4
- package/studio-plugin/src/modules/Utils.ts +147 -13
- package/studio-plugin/src/modules/handlers/ScriptHandlers.ts +3 -0
- package/studio-plugin/src/modules/handlers/TestHandlers.ts +1 -177
- package/studio-plugin/src/server/index.server.ts +18 -5
package/dist/index.js
CHANGED
|
@@ -932,7 +932,6 @@ var init_http_server = __esm({
|
|
|
932
932
|
capture_screenshot: (tools, body) => tools.captureScreenshot(body.instance_id, body.format, body.quality),
|
|
933
933
|
simulate_mouse_input: (tools, body) => tools.simulateMouseInput(body.action, body.x, body.y, body.button, body.scrollDirection, body.target, body.instance_id),
|
|
934
934
|
simulate_keyboard_input: (tools, body) => tools.simulateKeyboardInput(body.keyCode, body.action, body.duration, body.text, body.target, body.instance_id),
|
|
935
|
-
character_navigation: (tools, body) => tools.characterNavigation(body.position, body.instancePath, body.waitForCompletion, body.timeout, body.target, body.instance_id),
|
|
936
935
|
get_memory_breakdown: (tools, body) => tools.getMemoryBreakdown(body.target, body.tags, body.instance_id),
|
|
937
936
|
get_scene_analysis: (tools, body) => tools.getSceneAnalysis(body.mode, body.target, body.topN, body.raw, body.instance_id),
|
|
938
937
|
export_rbxm: (tools, body) => tools.exportRbxm(body.instance_paths, body.output_path, body.target, body.instance_id),
|
|
@@ -5598,23 +5597,6 @@ ${code}`
|
|
|
5598
5597
|
}]
|
|
5599
5598
|
};
|
|
5600
5599
|
}
|
|
5601
|
-
async characterNavigation(position, instancePath, waitForCompletion, timeout, target, instance_id) {
|
|
5602
|
-
if (!position && !instancePath) {
|
|
5603
|
-
throw new Error("Either position or instancePath is required for character_navigation");
|
|
5604
|
-
}
|
|
5605
|
-
const response = await this._callSingle("/api/character-navigation", {
|
|
5606
|
-
position,
|
|
5607
|
-
instancePath,
|
|
5608
|
-
waitForCompletion,
|
|
5609
|
-
timeout
|
|
5610
|
-
}, target || "edit", instance_id);
|
|
5611
|
-
return {
|
|
5612
|
-
content: [{
|
|
5613
|
-
type: "text",
|
|
5614
|
-
text: JSON.stringify(response)
|
|
5615
|
-
}]
|
|
5616
|
-
};
|
|
5617
|
-
}
|
|
5618
5600
|
async cloneObject(instancePath, targetParentPath, instance_id) {
|
|
5619
5601
|
if (!instancePath || !targetParentPath) {
|
|
5620
5602
|
throw new Error("instancePath and targetParentPath are required for clone_object");
|
|
@@ -6209,7 +6191,7 @@ var init_definitions = __esm({
|
|
|
6209
6191
|
properties: {
|
|
6210
6192
|
path: {
|
|
6211
6193
|
type: "string",
|
|
6212
|
-
description:
|
|
6194
|
+
description: 'Canonical DataModel path (default: game root), such as game.Workspace or game.ServerScriptService[".dir"]'
|
|
6213
6195
|
},
|
|
6214
6196
|
instance_id: {
|
|
6215
6197
|
type: "string",
|
|
@@ -6313,7 +6295,7 @@ var init_definitions = __esm({
|
|
|
6313
6295
|
properties: {
|
|
6314
6296
|
instancePath: {
|
|
6315
6297
|
type: "string",
|
|
6316
|
-
description:
|
|
6298
|
+
description: 'Canonical DataModel path, such as game.Workspace.Part or game.ServerScriptService[".dir"].Main'
|
|
6317
6299
|
},
|
|
6318
6300
|
excludeSource: {
|
|
6319
6301
|
type: "boolean",
|
|
@@ -6336,7 +6318,7 @@ var init_definitions = __esm({
|
|
|
6336
6318
|
properties: {
|
|
6337
6319
|
instancePath: {
|
|
6338
6320
|
type: "string",
|
|
6339
|
-
description:
|
|
6321
|
+
description: 'Canonical DataModel path, such as game.Workspace.Part or game.ServerScriptService[".dir"].Main'
|
|
6340
6322
|
},
|
|
6341
6323
|
instance_id: {
|
|
6342
6324
|
type: "string",
|
|
@@ -6398,7 +6380,7 @@ var init_definitions = __esm({
|
|
|
6398
6380
|
properties: {
|
|
6399
6381
|
path: {
|
|
6400
6382
|
type: "string",
|
|
6401
|
-
description: "
|
|
6383
|
+
description: "Canonical DataModel path (default: workspace root)"
|
|
6402
6384
|
},
|
|
6403
6385
|
maxDepth: {
|
|
6404
6386
|
type: "number",
|
|
@@ -6425,7 +6407,7 @@ var init_definitions = __esm({
|
|
|
6425
6407
|
properties: {
|
|
6426
6408
|
instancePath: {
|
|
6427
6409
|
type: "string",
|
|
6428
|
-
description: "
|
|
6410
|
+
description: "Canonical DataModel path"
|
|
6429
6411
|
},
|
|
6430
6412
|
propertyName: {
|
|
6431
6413
|
type: "string",
|
|
@@ -6452,7 +6434,7 @@ var init_definitions = __esm({
|
|
|
6452
6434
|
paths: {
|
|
6453
6435
|
type: "array",
|
|
6454
6436
|
items: { type: "string" },
|
|
6455
|
-
description: "
|
|
6437
|
+
description: "Canonical DataModel paths"
|
|
6456
6438
|
},
|
|
6457
6439
|
propertyName: {
|
|
6458
6440
|
type: "string",
|
|
@@ -6479,7 +6461,7 @@ var init_definitions = __esm({
|
|
|
6479
6461
|
paths: {
|
|
6480
6462
|
type: "array",
|
|
6481
6463
|
items: { type: "string" },
|
|
6482
|
-
description: "
|
|
6464
|
+
description: "Canonical DataModel paths"
|
|
6483
6465
|
},
|
|
6484
6466
|
propertyName: {
|
|
6485
6467
|
type: "string",
|
|
@@ -6502,7 +6484,7 @@ var init_definitions = __esm({
|
|
|
6502
6484
|
properties: {
|
|
6503
6485
|
instancePath: {
|
|
6504
6486
|
type: "string",
|
|
6505
|
-
description: "
|
|
6487
|
+
description: "Canonical DataModel path"
|
|
6506
6488
|
},
|
|
6507
6489
|
properties: {
|
|
6508
6490
|
type: "object",
|
|
@@ -6530,7 +6512,7 @@ var init_definitions = __esm({
|
|
|
6530
6512
|
},
|
|
6531
6513
|
parent: {
|
|
6532
6514
|
type: "string",
|
|
6533
|
-
description: "
|
|
6515
|
+
description: "Canonical parent DataModel path"
|
|
6534
6516
|
},
|
|
6535
6517
|
name: {
|
|
6536
6518
|
type: "string",
|
|
@@ -6566,7 +6548,7 @@ var init_definitions = __esm({
|
|
|
6566
6548
|
},
|
|
6567
6549
|
parent: {
|
|
6568
6550
|
type: "string",
|
|
6569
|
-
description: "
|
|
6551
|
+
description: "Canonical parent DataModel path"
|
|
6570
6552
|
},
|
|
6571
6553
|
name: {
|
|
6572
6554
|
type: "string",
|
|
@@ -6598,7 +6580,7 @@ var init_definitions = __esm({
|
|
|
6598
6580
|
properties: {
|
|
6599
6581
|
instancePath: {
|
|
6600
6582
|
type: "string",
|
|
6601
|
-
description: "
|
|
6583
|
+
description: "Canonical DataModel path"
|
|
6602
6584
|
},
|
|
6603
6585
|
instance_id: {
|
|
6604
6586
|
type: "string",
|
|
@@ -6618,7 +6600,7 @@ var init_definitions = __esm({
|
|
|
6618
6600
|
properties: {
|
|
6619
6601
|
instancePath: {
|
|
6620
6602
|
type: "string",
|
|
6621
|
-
description: "
|
|
6603
|
+
description: "Canonical DataModel path"
|
|
6622
6604
|
},
|
|
6623
6605
|
count: {
|
|
6624
6606
|
type: "number",
|
|
@@ -6679,7 +6661,7 @@ var init_definitions = __esm({
|
|
|
6679
6661
|
properties: {
|
|
6680
6662
|
instancePath: {
|
|
6681
6663
|
type: "string",
|
|
6682
|
-
description: "
|
|
6664
|
+
description: "Canonical DataModel path"
|
|
6683
6665
|
},
|
|
6684
6666
|
count: {
|
|
6685
6667
|
type: "number",
|
|
@@ -6742,7 +6724,7 @@ var init_definitions = __esm({
|
|
|
6742
6724
|
properties: {
|
|
6743
6725
|
instancePath: {
|
|
6744
6726
|
type: "string",
|
|
6745
|
-
description: "
|
|
6727
|
+
description: "Canonical path to a LuaSourceContainer"
|
|
6746
6728
|
},
|
|
6747
6729
|
startLine: {
|
|
6748
6730
|
type: "number",
|
|
@@ -6769,7 +6751,7 @@ var init_definitions = __esm({
|
|
|
6769
6751
|
properties: {
|
|
6770
6752
|
instancePath: {
|
|
6771
6753
|
type: "string",
|
|
6772
|
-
description: "
|
|
6754
|
+
description: "Canonical path to a LuaSourceContainer"
|
|
6773
6755
|
},
|
|
6774
6756
|
source: {
|
|
6775
6757
|
type: "string",
|
|
@@ -6792,7 +6774,7 @@ var init_definitions = __esm({
|
|
|
6792
6774
|
properties: {
|
|
6793
6775
|
instancePath: {
|
|
6794
6776
|
type: "string",
|
|
6795
|
-
description: "
|
|
6777
|
+
description: "Canonical path to a LuaSourceContainer"
|
|
6796
6778
|
},
|
|
6797
6779
|
old_string: {
|
|
6798
6780
|
type: "string",
|
|
@@ -6823,7 +6805,7 @@ var init_definitions = __esm({
|
|
|
6823
6805
|
properties: {
|
|
6824
6806
|
instancePath: {
|
|
6825
6807
|
type: "string",
|
|
6826
|
-
description: "
|
|
6808
|
+
description: "Canonical path to a LuaSourceContainer"
|
|
6827
6809
|
},
|
|
6828
6810
|
afterLine: {
|
|
6829
6811
|
type: "number",
|
|
@@ -6850,7 +6832,7 @@ var init_definitions = __esm({
|
|
|
6850
6832
|
properties: {
|
|
6851
6833
|
instancePath: {
|
|
6852
6834
|
type: "string",
|
|
6853
|
-
description: "
|
|
6835
|
+
description: "Canonical path to a LuaSourceContainer"
|
|
6854
6836
|
},
|
|
6855
6837
|
startLine: {
|
|
6856
6838
|
type: "number",
|
|
@@ -6878,7 +6860,7 @@ var init_definitions = __esm({
|
|
|
6878
6860
|
properties: {
|
|
6879
6861
|
instancePath: {
|
|
6880
6862
|
type: "string",
|
|
6881
|
-
description: "
|
|
6863
|
+
description: "Canonical DataModel path"
|
|
6882
6864
|
},
|
|
6883
6865
|
attributeName: {
|
|
6884
6866
|
type: "string",
|
|
@@ -6908,7 +6890,7 @@ var init_definitions = __esm({
|
|
|
6908
6890
|
properties: {
|
|
6909
6891
|
instancePath: {
|
|
6910
6892
|
type: "string",
|
|
6911
|
-
description: "
|
|
6893
|
+
description: "Canonical DataModel path"
|
|
6912
6894
|
},
|
|
6913
6895
|
instance_id: {
|
|
6914
6896
|
type: "string",
|
|
@@ -6927,7 +6909,7 @@ var init_definitions = __esm({
|
|
|
6927
6909
|
properties: {
|
|
6928
6910
|
instancePath: {
|
|
6929
6911
|
type: "string",
|
|
6930
|
-
description: "
|
|
6912
|
+
description: "Canonical DataModel path"
|
|
6931
6913
|
},
|
|
6932
6914
|
attributeName: {
|
|
6933
6915
|
type: "string",
|
|
@@ -6951,7 +6933,7 @@ var init_definitions = __esm({
|
|
|
6951
6933
|
properties: {
|
|
6952
6934
|
instancePath: {
|
|
6953
6935
|
type: "string",
|
|
6954
|
-
description: "
|
|
6936
|
+
description: "Canonical DataModel path"
|
|
6955
6937
|
},
|
|
6956
6938
|
instance_id: {
|
|
6957
6939
|
type: "string",
|
|
@@ -6970,7 +6952,7 @@ var init_definitions = __esm({
|
|
|
6970
6952
|
properties: {
|
|
6971
6953
|
instancePath: {
|
|
6972
6954
|
type: "string",
|
|
6973
|
-
description: "
|
|
6955
|
+
description: "Canonical DataModel path"
|
|
6974
6956
|
},
|
|
6975
6957
|
tagName: {
|
|
6976
6958
|
type: "string",
|
|
@@ -6993,7 +6975,7 @@ var init_definitions = __esm({
|
|
|
6993
6975
|
properties: {
|
|
6994
6976
|
instancePath: {
|
|
6995
6977
|
type: "string",
|
|
6996
|
-
description: "
|
|
6978
|
+
description: "Canonical DataModel path"
|
|
6997
6979
|
},
|
|
6998
6980
|
tagName: {
|
|
6999
6981
|
type: "string",
|
|
@@ -7689,7 +7671,7 @@ var init_definitions = __esm({
|
|
|
7689
7671
|
},
|
|
7690
7672
|
script_path: {
|
|
7691
7673
|
type: "string",
|
|
7692
|
-
description:
|
|
7674
|
+
description: 'Canonical path to a LuaSourceContainer, for example game.ServerScriptService.Main or game.ServerScriptService[".dir"].ReproScript. Required for set/remove.'
|
|
7693
7675
|
},
|
|
7694
7676
|
line: {
|
|
7695
7677
|
type: "number",
|
|
@@ -7772,7 +7754,7 @@ var init_definitions = __esm({
|
|
|
7772
7754
|
properties: {
|
|
7773
7755
|
instancePath: {
|
|
7774
7756
|
type: "string",
|
|
7775
|
-
description: "
|
|
7757
|
+
description: "Canonical path to the Model or Folder to export"
|
|
7776
7758
|
},
|
|
7777
7759
|
outputId: {
|
|
7778
7760
|
type: "string",
|
|
@@ -7929,7 +7911,7 @@ part(0,2,0,2,1,1,"b")`,
|
|
|
7929
7911
|
},
|
|
7930
7912
|
targetPath: {
|
|
7931
7913
|
type: "string",
|
|
7932
|
-
description: "
|
|
7914
|
+
description: "Canonical parent DataModel path where the model will be created"
|
|
7933
7915
|
},
|
|
7934
7916
|
position: {
|
|
7935
7917
|
type: "array",
|
|
@@ -8060,7 +8042,7 @@ part(0,2,0,2,1,1,"b")`,
|
|
|
8060
8042
|
},
|
|
8061
8043
|
targetPath: {
|
|
8062
8044
|
type: "string",
|
|
8063
|
-
description: "
|
|
8045
|
+
description: "Canonical parent DataModel path for the scene (default: game.Workspace)"
|
|
8064
8046
|
},
|
|
8065
8047
|
instance_id: {
|
|
8066
8048
|
type: "string",
|
|
@@ -8152,7 +8134,7 @@ part(0,2,0,2,1,1,"b")`,
|
|
|
8152
8134
|
},
|
|
8153
8135
|
parentPath: {
|
|
8154
8136
|
type: "string",
|
|
8155
|
-
description: "
|
|
8137
|
+
description: "Canonical parent DataModel path (default: game.Workspace)"
|
|
8156
8138
|
},
|
|
8157
8139
|
position: {
|
|
8158
8140
|
type: "object",
|
|
@@ -8330,42 +8312,6 @@ part(0,2,0,2,1,1,"b")`,
|
|
|
8330
8312
|
}
|
|
8331
8313
|
}
|
|
8332
8314
|
},
|
|
8333
|
-
// === Character Navigation ===
|
|
8334
|
-
{
|
|
8335
|
-
name: "character_navigation",
|
|
8336
|
-
category: "write",
|
|
8337
|
-
description: 'Move the player character to a target position or instance during playtest. Uses PathfindingService for automatic navigation around obstacles, falling back to direct movement. Requires an active playtest in "play" mode. Does NOT simulate player input - moves the character directly.',
|
|
8338
|
-
inputSchema: {
|
|
8339
|
-
type: "object",
|
|
8340
|
-
properties: {
|
|
8341
|
-
position: {
|
|
8342
|
-
type: "array",
|
|
8343
|
-
items: { type: "number" },
|
|
8344
|
-
description: "Target world position [x, y, z]. Either this or instancePath is required."
|
|
8345
|
-
},
|
|
8346
|
-
instancePath: {
|
|
8347
|
-
type: "string",
|
|
8348
|
-
description: "Instance to navigate to (dot notation). The character walks to its Position. Either this or position is required."
|
|
8349
|
-
},
|
|
8350
|
-
waitForCompletion: {
|
|
8351
|
-
type: "boolean",
|
|
8352
|
-
description: "Wait for the character to arrive before returning (default: true)"
|
|
8353
|
-
},
|
|
8354
|
-
timeout: {
|
|
8355
|
-
type: "number",
|
|
8356
|
-
description: "Max seconds to wait for navigation to complete (default: 25)"
|
|
8357
|
-
},
|
|
8358
|
-
target: {
|
|
8359
|
-
type: "string",
|
|
8360
|
-
description: 'Instance target: "edit" (default), "server", "client-1", "client-2", etc.'
|
|
8361
|
-
},
|
|
8362
|
-
instance_id: {
|
|
8363
|
-
type: "string",
|
|
8364
|
-
description: "Which connected Studio place to target. Required when multiple places are connected; omit when one. Use get_connected_instances to list available IDs."
|
|
8365
|
-
}
|
|
8366
|
-
}
|
|
8367
|
-
}
|
|
8368
|
-
},
|
|
8369
8315
|
// === Instance Operations ===
|
|
8370
8316
|
{
|
|
8371
8317
|
name: "clone_object",
|
|
@@ -8376,11 +8322,11 @@ part(0,2,0,2,1,1,"b")`,
|
|
|
8376
8322
|
properties: {
|
|
8377
8323
|
instancePath: {
|
|
8378
8324
|
type: "string",
|
|
8379
|
-
description: "
|
|
8325
|
+
description: "Canonical path of the instance to clone"
|
|
8380
8326
|
},
|
|
8381
8327
|
targetParentPath: {
|
|
8382
8328
|
type: "string",
|
|
8383
|
-
description: "
|
|
8329
|
+
description: "Canonical path of the parent to place the clone under"
|
|
8384
8330
|
},
|
|
8385
8331
|
instance_id: {
|
|
8386
8332
|
type: "string",
|
|
@@ -8400,7 +8346,7 @@ part(0,2,0,2,1,1,"b")`,
|
|
|
8400
8346
|
properties: {
|
|
8401
8347
|
instancePath: {
|
|
8402
8348
|
type: "string",
|
|
8403
|
-
description: "
|
|
8349
|
+
description: "Canonical root DataModel path"
|
|
8404
8350
|
},
|
|
8405
8351
|
maxDepth: {
|
|
8406
8352
|
type: "number",
|
|
@@ -8427,11 +8373,11 @@ part(0,2,0,2,1,1,"b")`,
|
|
|
8427
8373
|
properties: {
|
|
8428
8374
|
instancePathA: {
|
|
8429
8375
|
type: "string",
|
|
8430
|
-
description: "First
|
|
8376
|
+
description: "First canonical DataModel path"
|
|
8431
8377
|
},
|
|
8432
8378
|
instancePathB: {
|
|
8433
8379
|
type: "string",
|
|
8434
|
-
description: "Second
|
|
8380
|
+
description: "Second canonical DataModel path"
|
|
8435
8381
|
},
|
|
8436
8382
|
instance_id: {
|
|
8437
8383
|
type: "string",
|
|
@@ -8451,7 +8397,7 @@ part(0,2,0,2,1,1,"b")`,
|
|
|
8451
8397
|
properties: {
|
|
8452
8398
|
instancePath: {
|
|
8453
8399
|
type: "string",
|
|
8454
|
-
description: "
|
|
8400
|
+
description: "Canonical DataModel path"
|
|
8455
8401
|
},
|
|
8456
8402
|
attributes: {
|
|
8457
8403
|
type: "object",
|
|
@@ -8533,7 +8479,7 @@ part(0,2,0,2,1,1,"b")`,
|
|
|
8533
8479
|
instance_paths: {
|
|
8534
8480
|
type: "array",
|
|
8535
8481
|
items: { type: "string" },
|
|
8536
|
-
description: 'DataModel paths to serialize (e.g. ["Workspace.TestRig", "ServerStorage.Templates.NPC"])'
|
|
8482
|
+
description: 'Canonical DataModel paths to serialize (e.g. ["game.Workspace.TestRig", "game.ServerStorage.Templates.NPC"])'
|
|
8537
8483
|
},
|
|
8538
8484
|
output_path: {
|
|
8539
8485
|
type: "string",
|
|
@@ -8575,7 +8521,7 @@ part(0,2,0,2,1,1,"b")`,
|
|
|
8575
8521
|
},
|
|
8576
8522
|
parent_path: {
|
|
8577
8523
|
type: "string",
|
|
8578
|
-
description: 'DataModel path of the Instance to parent imported instances under (e.g. "ServerStorage.Imported")'
|
|
8524
|
+
description: 'Canonical DataModel path of the Instance to parent imported instances under (e.g. "game.ServerStorage.Imported")'
|
|
8579
8525
|
},
|
|
8580
8526
|
target: {
|
|
8581
8527
|
type: "string",
|