@codingame/monaco-vscode-mcp-service-override 28.4.1 → 29.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/vscode/src/vs/base/common/jsonRpcProtocol.d.ts +13 -1
- package/vscode/src/vs/base/common/jsonRpcProtocol.js +26 -13
- package/vscode/src/vs/platform/mcp/common/allowedMcpServersService.js +1 -1
- package/vscode/src/vs/platform/mcp/common/mcpGalleryManifestService.js +2 -1
- package/vscode/src/vs/platform/mcp/common/mcpGalleryService.js +8 -5
- package/vscode/src/vs/platform/mcp/common/mcpGateway.d.ts +49 -18
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcp.contribution.js +3 -3
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpAddContextContribution.js +2 -2
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpCommands.js +81 -67
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpElicitationService.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpElicitationService.js +267 -50
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpGatewayService.js +17 -3
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpLanguageFeatures.js +24 -21
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpMigration.js +4 -4
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpResourceQuickAccess.js +8 -8
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServersView.js +18 -18
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpWorkbenchService.js +37 -9
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/extensionMcpDiscovery.js +4 -4
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/nativeMcpDiscoveryAbstract.js +1 -1
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/pluginMcpDiscovery.js +11 -3
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpContextKeys.js +4 -4
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpGatewayToolBrokerChannel.d.ts +8 -9
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpGatewayToolBrokerChannel.js +147 -132
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpLanguageModelToolContribution.js +10 -6
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpRegistry.js +14 -14
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpSamplingLog.js +1 -1
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpSamplingService.js +11 -11
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpSandboxService.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpSandboxService.js +15 -8
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpServerConnection.js +7 -22
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpService.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpService.js +16 -4
- package/vscode/src/vs/workbench/services/authentication/browser/authenticationMcpService.js +9 -9
- package/vscode/src/vs/workbench/services/mcp/browser/mcpGalleryManifestService.js +2 -2
|
@@ -58,10 +58,11 @@ import { McpCommandIds } from '@codingame/monaco-vscode-api/vscode/vs/workbench/
|
|
|
58
58
|
import { McpContextKeys } from '../common/mcpContextKeys.js';
|
|
59
59
|
import { IMcpRegistry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpRegistryTypes.service';
|
|
60
60
|
import { McpConnectionState, McpCapability, McpServerCacheState, LazyCollectionState, McpStartServerInteraction, InstalledMcpServersViewId, HasInstalledMcpServersContext, mcpPromptPrefix } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes';
|
|
61
|
-
import { IMcpService, IMcpSamplingService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes.service';
|
|
61
|
+
import { IMcpService, IMcpWorkbenchService, IMcpSamplingService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes.service';
|
|
62
62
|
import { McpAddConfigurationCommand, McpInstallFromManifestCommand } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/browser/mcpCommandsAddConfiguration';
|
|
63
63
|
import { McpResourceQuickPick, McpResourceQuickAccess } from './mcpResourceQuickAccess.js';
|
|
64
64
|
import { startServerAndWaitForLiveTools } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypesUtils';
|
|
65
|
+
import { isContributionDisabled } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/enablement';
|
|
65
66
|
import * as mcpServerAction from './media/mcpServerAction.css';
|
|
66
67
|
import { openPanelChatAndGetWidget } from './openPanelChatAndGetWidget.js';
|
|
67
68
|
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
@@ -78,7 +79,7 @@ class ListMcpServerCommand extends Action2 {
|
|
|
78
79
|
constructor() {
|
|
79
80
|
super({
|
|
80
81
|
id: McpCommandIds.ListServer,
|
|
81
|
-
title: ( localize2(
|
|
82
|
+
title: ( localize2(10334, "List Servers")),
|
|
82
83
|
icon: Codicon.server,
|
|
83
84
|
category,
|
|
84
85
|
f1: true,
|
|
@@ -95,11 +96,12 @@ class ListMcpServerCommand extends Action2 {
|
|
|
95
96
|
const mcpService = accessor.get(IMcpService);
|
|
96
97
|
const commandService = accessor.get(ICommandService);
|
|
97
98
|
const quickInput = accessor.get(IQuickInputService);
|
|
99
|
+
const mcpWorkbenchService = accessor.get(IMcpWorkbenchService);
|
|
98
100
|
const store = ( new DisposableStore());
|
|
99
101
|
const pick = quickInput.createQuickPick({
|
|
100
102
|
useSeparators: true
|
|
101
103
|
});
|
|
102
|
-
pick.placeholder = ( localize(
|
|
104
|
+
pick.placeholder = ( localize(10335, "Select an MCP Server"));
|
|
103
105
|
mcpService.activateCollections();
|
|
104
106
|
store.add(pick);
|
|
105
107
|
store.add(autorun(reader => {
|
|
@@ -109,19 +111,22 @@ class ListMcpServerCommand extends Action2 {
|
|
|
109
111
|
const firstRun = pick.items.length === 0;
|
|
110
112
|
pick.items = [{
|
|
111
113
|
id: "$add",
|
|
112
|
-
label: ( localize(
|
|
113
|
-
description: ( localize(
|
|
114
|
+
label: ( localize(10336, "Add Server")),
|
|
115
|
+
description: ( localize(10337, "Add a new server configuration")),
|
|
114
116
|
alwaysShow: true,
|
|
115
117
|
iconClass: ThemeIcon.asClassName(Codicon.add)
|
|
116
118
|
}, ...( Object.values(servers)).filter(s => s.length).flatMap(servers => [{
|
|
117
119
|
type: "separator",
|
|
118
120
|
label: servers[0].collection.label,
|
|
119
121
|
id: servers[0].collection.id
|
|
120
|
-
}, ...( servers.map(server =>
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
122
|
+
}, ...( servers.map(server => {
|
|
123
|
+
const disabled = isContributionDisabled(server.enablement.read(reader));
|
|
124
|
+
return {
|
|
125
|
+
id: server.definition.id,
|
|
126
|
+
label: server.definition.label,
|
|
127
|
+
description: disabled ? ( localize(10338, "Disabled")) : ( McpConnectionState.toString(server.connectionState.read(reader)))
|
|
128
|
+
};
|
|
129
|
+
}))])];
|
|
125
130
|
if (firstRun && pick.items.length > 3) {
|
|
126
131
|
pick.activeItems = pick.items.slice(2, 3);
|
|
127
132
|
}
|
|
@@ -140,7 +145,15 @@ class ListMcpServerCommand extends Action2 {
|
|
|
140
145
|
; else if (picked.id === "$add") {
|
|
141
146
|
commandService.executeCommand(McpCommandIds.AddConfiguration);
|
|
142
147
|
} else {
|
|
143
|
-
|
|
148
|
+
const server = mcpService.servers.get().find(s => s.definition.id === picked.id);
|
|
149
|
+
if (server && isContributionDisabled(server.enablement.get())) {
|
|
150
|
+
const workbenchServer = mcpWorkbenchService.local.find(s => s.id === picked.id);
|
|
151
|
+
if (workbenchServer) {
|
|
152
|
+
mcpWorkbenchService.open(workbenchServer);
|
|
153
|
+
}
|
|
154
|
+
} else {
|
|
155
|
+
commandService.executeCommand(McpCommandIds.ServerOptions, picked.id);
|
|
156
|
+
}
|
|
144
157
|
}
|
|
145
158
|
}
|
|
146
159
|
}
|
|
@@ -148,7 +161,7 @@ class McpConfirmationServerOptionsCommand extends Action2 {
|
|
|
148
161
|
constructor() {
|
|
149
162
|
super({
|
|
150
163
|
id: McpCommandIds.ServerOptionsInConfirmation,
|
|
151
|
-
title: ( localize2(
|
|
164
|
+
title: ( localize2(10339, "Server Options")),
|
|
152
165
|
category,
|
|
153
166
|
icon: Codicon.settingsGear,
|
|
154
167
|
f1: false,
|
|
@@ -179,7 +192,7 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
179
192
|
constructor() {
|
|
180
193
|
super({
|
|
181
194
|
id: McpCommandIds.ServerOptions,
|
|
182
|
-
title: ( localize2(
|
|
195
|
+
title: ( localize2(10339, "Server Options")),
|
|
183
196
|
category,
|
|
184
197
|
f1: false
|
|
185
198
|
});
|
|
@@ -203,20 +216,20 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
203
216
|
const serverState = server.connectionState.get();
|
|
204
217
|
items.push({
|
|
205
218
|
type: "separator",
|
|
206
|
-
label: ( localize(
|
|
219
|
+
label: ( localize(10340, "Status"))
|
|
207
220
|
});
|
|
208
221
|
if (McpConnectionState.canBeStarted(serverState.state)) {
|
|
209
222
|
items.push({
|
|
210
|
-
label: ( localize(
|
|
223
|
+
label: ( localize(10341, "Start Server")),
|
|
211
224
|
action: "start"
|
|
212
225
|
});
|
|
213
226
|
} else {
|
|
214
227
|
items.push({
|
|
215
|
-
label: ( localize(
|
|
228
|
+
label: ( localize(10342, "Stop Server")),
|
|
216
229
|
action: "stop"
|
|
217
230
|
});
|
|
218
231
|
items.push({
|
|
219
|
-
label: ( localize(
|
|
232
|
+
label: ( localize(10343, "Restart Server")),
|
|
220
233
|
action: "restart"
|
|
221
234
|
});
|
|
222
235
|
}
|
|
@@ -224,26 +237,26 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
224
237
|
const configTarget = serverDefinition?.presentation?.origin || collection?.presentation?.origin;
|
|
225
238
|
if (configTarget) {
|
|
226
239
|
items.push({
|
|
227
|
-
label: ( localize(
|
|
240
|
+
label: ( localize(10344, "Show Configuration")),
|
|
228
241
|
action: "config"
|
|
229
242
|
});
|
|
230
243
|
}
|
|
231
244
|
items.push({
|
|
232
|
-
label: ( localize(
|
|
245
|
+
label: ( localize(10345, "Show Output")),
|
|
233
246
|
action: "showOutput"
|
|
234
247
|
});
|
|
235
248
|
items.push({
|
|
236
249
|
type: "separator",
|
|
237
|
-
label: ( localize(
|
|
250
|
+
label: ( localize(10346, "Sampling"))
|
|
238
251
|
}, {
|
|
239
|
-
label: ( localize(
|
|
240
|
-
description: ( localize(
|
|
252
|
+
label: ( localize(10347, "Configure Model Access")),
|
|
253
|
+
description: ( localize(10348, "Set the models the server can use via MCP sampling")),
|
|
241
254
|
action: "configSampling"
|
|
242
255
|
});
|
|
243
256
|
if (samplingService.hasLogs(server)) {
|
|
244
257
|
items.push({
|
|
245
|
-
label: ( localize(
|
|
246
|
-
description: ( localize(
|
|
258
|
+
label: ( localize(10349, "Show Sampling Requests")),
|
|
259
|
+
description: ( localize(10350, "Show the sampling requests for this server")),
|
|
247
260
|
action: "samplingLog"
|
|
248
261
|
});
|
|
249
262
|
}
|
|
@@ -251,15 +264,15 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
251
264
|
if (capabilities === undefined || (capabilities & McpCapability.Resources)) {
|
|
252
265
|
items.push({
|
|
253
266
|
type: "separator",
|
|
254
|
-
label: ( localize(
|
|
267
|
+
label: ( localize(10351, "Resources"))
|
|
255
268
|
});
|
|
256
269
|
items.push({
|
|
257
|
-
label: ( localize(
|
|
270
|
+
label: ( localize(10352, "Browse Resources")),
|
|
258
271
|
action: "resources"
|
|
259
272
|
});
|
|
260
273
|
}
|
|
261
274
|
const pick = await quickInputService.pick(items, {
|
|
262
|
-
placeHolder: ( localize(
|
|
275
|
+
placeHolder: ( localize(10353, "Select action for '{0}'", server.definition.label))
|
|
263
276
|
});
|
|
264
277
|
if (!pick) {
|
|
265
278
|
return;
|
|
@@ -307,7 +320,7 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
307
320
|
editorService.openEditor({
|
|
308
321
|
resource: undefined,
|
|
309
322
|
contents: samplingService.getLogText(server),
|
|
310
|
-
label: ( localize(
|
|
323
|
+
label: ( localize(10354, "MCP Sampling: {0}", server.definition.label))
|
|
311
324
|
});
|
|
312
325
|
break;
|
|
313
326
|
default:
|
|
@@ -324,14 +337,14 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
324
337
|
if (accountQuery.entities().getEntityCount().total > 1) {
|
|
325
338
|
result.push({
|
|
326
339
|
action: "disconnect",
|
|
327
|
-
label: ( localize(
|
|
340
|
+
label: ( localize(10355, "Disconnect Account")),
|
|
328
341
|
description: `(${accountName})`,
|
|
329
342
|
accountQuery
|
|
330
343
|
});
|
|
331
344
|
} else {
|
|
332
345
|
result.push({
|
|
333
346
|
action: "signout",
|
|
334
|
-
label: ( localize(
|
|
347
|
+
label: ( localize(10356, "Sign Out")),
|
|
335
348
|
description: `(${accountName})`,
|
|
336
349
|
accountQuery
|
|
337
350
|
});
|
|
@@ -497,26 +510,27 @@ let MCPServerActionRendering = class MCPServerActionRendering extends Disposable
|
|
|
497
510
|
} = displayedStateCurrent.get()
|
|
498
511
|
) {
|
|
499
512
|
const link = s => createMarkdownCommandLink({
|
|
500
|
-
|
|
513
|
+
text: s.definition.label,
|
|
501
514
|
id: McpCommandIds.ServerOptions,
|
|
502
|
-
arguments: [s.definition.id]
|
|
515
|
+
arguments: [s.definition.id],
|
|
516
|
+
tooltip: ( localize(10357, "Show server options for {0}", s.definition.label))
|
|
503
517
|
});
|
|
504
518
|
const single = servers.length === 1;
|
|
505
519
|
const names = ( ( servers.map(s => isServer(s) ? link(s) : "`" + s.label + "`")).map(l => single ? l : `- ${l}`)).join("\n");
|
|
506
520
|
let markdown;
|
|
507
521
|
if (state === DisplayedState.NewTools) {
|
|
508
522
|
markdown = ( new MarkdownString(single ? ( localize(
|
|
509
|
-
|
|
523
|
+
10358,
|
|
510
524
|
"MCP server {0} has been updated and may have new tools available.",
|
|
511
525
|
names
|
|
512
526
|
)) : ( localize(
|
|
513
|
-
|
|
527
|
+
10359,
|
|
514
528
|
"MCP servers have been updated and may have new tools available:\n\n{0}",
|
|
515
529
|
names
|
|
516
530
|
))));
|
|
517
531
|
} else if (state === DisplayedState.Error) {
|
|
518
|
-
markdown = ( new MarkdownString(single ? ( localize(
|
|
519
|
-
|
|
532
|
+
markdown = ( new MarkdownString(single ? ( localize(10360, "MCP server {0} was unable to start successfully.", names)) : ( localize(
|
|
533
|
+
10361,
|
|
520
534
|
"Multiple MCP servers were unable to start successfully:\n\n{0}",
|
|
521
535
|
names
|
|
522
536
|
))));
|
|
@@ -543,7 +557,7 @@ let MCPServerActionRendering = class MCPServerActionRendering extends Disposable
|
|
|
543
557
|
const divider = $("hr.mcp-hover-divider");
|
|
544
558
|
container.appendChild(divider);
|
|
545
559
|
const checkboxContainer = $("div.mcp-hover-setting");
|
|
546
|
-
const settingLabelStr = ( localize(
|
|
560
|
+
const settingLabelStr = ( localize(10362, "Automatically start MCP servers when sending a chat message"));
|
|
547
561
|
const checkbox = store.add(( new Checkbox(settingLabelStr, config.get() !== McpAutoStartValue.Never, {
|
|
548
562
|
...defaultCheckboxStyles
|
|
549
563
|
})));
|
|
@@ -571,11 +585,11 @@ let MCPServerActionRendering = class MCPServerActionRendering extends Disposable
|
|
|
571
585
|
} = displayedStateCurrent.get()
|
|
572
586
|
) {
|
|
573
587
|
if (state === DisplayedState.NewTools) {
|
|
574
|
-
return localize(
|
|
588
|
+
return localize(10363, "New tools available ({0})", servers.length || 1);
|
|
575
589
|
} else if (state === DisplayedState.Error) {
|
|
576
|
-
return localize(
|
|
590
|
+
return localize(10364, "Error loading {0} tool(s)", servers.length || 1);
|
|
577
591
|
} else if (state === DisplayedState.Refreshing) {
|
|
578
|
-
return localize(
|
|
592
|
+
return localize(10365, "Discovering tools...");
|
|
579
593
|
} else {
|
|
580
594
|
return null;
|
|
581
595
|
}
|
|
@@ -593,7 +607,7 @@ class ResetMcpTrustCommand extends Action2 {
|
|
|
593
607
|
constructor() {
|
|
594
608
|
super({
|
|
595
609
|
id: McpCommandIds.ResetTrust,
|
|
596
|
-
title: ( localize2(
|
|
610
|
+
title: ( localize2(10366, "Reset Trust")),
|
|
597
611
|
category,
|
|
598
612
|
f1: true,
|
|
599
613
|
precondition: ( ContextKeyExpr.and(McpContextKeys.toolsCount.greater(0), ( ChatContextKeys.Setup.hidden.negate())))
|
|
@@ -608,7 +622,7 @@ class ResetMcpCachedTools extends Action2 {
|
|
|
608
622
|
constructor() {
|
|
609
623
|
super({
|
|
610
624
|
id: McpCommandIds.ResetCachedTools,
|
|
611
|
-
title: ( localize2(
|
|
625
|
+
title: ( localize2(10367, "Reset Cached Tools")),
|
|
612
626
|
category,
|
|
613
627
|
f1: true,
|
|
614
628
|
precondition: ( ContextKeyExpr.and(McpContextKeys.toolsCount.greater(0), ( ChatContextKeys.Setup.hidden.negate())))
|
|
@@ -623,9 +637,9 @@ class AddConfigurationAction extends Action2 {
|
|
|
623
637
|
constructor() {
|
|
624
638
|
super({
|
|
625
639
|
id: McpCommandIds.AddConfiguration,
|
|
626
|
-
title: ( localize2(
|
|
640
|
+
title: ( localize2(10368, "Add Server...")),
|
|
627
641
|
metadata: {
|
|
628
|
-
description: ( localize2(
|
|
642
|
+
description: ( localize2(10369, "Installs a new Model Context protocol to the mcp.json settings"))
|
|
629
643
|
},
|
|
630
644
|
category,
|
|
631
645
|
f1: true,
|
|
@@ -647,9 +661,9 @@ class InstallFromManifestAction extends Action2 {
|
|
|
647
661
|
constructor() {
|
|
648
662
|
super({
|
|
649
663
|
id: McpCommandIds.InstallFromManifest,
|
|
650
|
-
title: ( localize2(
|
|
664
|
+
title: ( localize2(10370, "Install Server from Manifest...")),
|
|
651
665
|
metadata: {
|
|
652
|
-
description: ( localize2(
|
|
666
|
+
description: ( localize2(10371, "Install an MCP server from a JSON manifest file"))
|
|
653
667
|
},
|
|
654
668
|
category,
|
|
655
669
|
f1: true,
|
|
@@ -665,7 +679,7 @@ class RemoveStoredInput extends Action2 {
|
|
|
665
679
|
constructor() {
|
|
666
680
|
super({
|
|
667
681
|
id: McpCommandIds.RemoveStoredInput,
|
|
668
|
-
title: ( localize2(
|
|
682
|
+
title: ( localize2(10367, "Reset Cached Tools")),
|
|
669
683
|
category,
|
|
670
684
|
f1: false
|
|
671
685
|
});
|
|
@@ -678,7 +692,7 @@ class EditStoredInput extends Action2 {
|
|
|
678
692
|
constructor() {
|
|
679
693
|
super({
|
|
680
694
|
id: McpCommandIds.EditStoredInput,
|
|
681
|
-
title: ( localize2(
|
|
695
|
+
title: ( localize2(10372, "Edit Stored Input")),
|
|
682
696
|
category,
|
|
683
697
|
f1: false
|
|
684
698
|
});
|
|
@@ -692,7 +706,7 @@ class ShowConfiguration extends Action2 {
|
|
|
692
706
|
constructor() {
|
|
693
707
|
super({
|
|
694
708
|
id: McpCommandIds.ShowConfiguration,
|
|
695
|
-
title: ( localize2(
|
|
709
|
+
title: ( localize2(10373, "Show Configuration")),
|
|
696
710
|
category,
|
|
697
711
|
f1: false
|
|
698
712
|
});
|
|
@@ -722,7 +736,7 @@ class ShowOutput extends Action2 {
|
|
|
722
736
|
constructor() {
|
|
723
737
|
super({
|
|
724
738
|
id: McpCommandIds.ShowOutput,
|
|
725
|
-
title: ( localize2(
|
|
739
|
+
title: ( localize2(10374, "Show Output")),
|
|
726
740
|
category,
|
|
727
741
|
f1: false
|
|
728
742
|
});
|
|
@@ -735,7 +749,7 @@ class RestartServer extends Action2 {
|
|
|
735
749
|
constructor() {
|
|
736
750
|
super({
|
|
737
751
|
id: McpCommandIds.RestartServer,
|
|
738
|
-
title: ( localize2(
|
|
752
|
+
title: ( localize2(10375, "Restart Server")),
|
|
739
753
|
category,
|
|
740
754
|
f1: false
|
|
741
755
|
});
|
|
@@ -754,7 +768,7 @@ class StartServer extends Action2 {
|
|
|
754
768
|
constructor() {
|
|
755
769
|
super({
|
|
756
770
|
id: McpCommandIds.StartServer,
|
|
757
|
-
title: ( localize2(
|
|
771
|
+
title: ( localize2(10376, "Start Server")),
|
|
758
772
|
category,
|
|
759
773
|
f1: false
|
|
760
774
|
});
|
|
@@ -779,7 +793,7 @@ class StopServer extends Action2 {
|
|
|
779
793
|
constructor() {
|
|
780
794
|
super({
|
|
781
795
|
id: McpCommandIds.StopServer,
|
|
782
|
-
title: ( localize2(
|
|
796
|
+
title: ( localize2(10377, "Stop Server")),
|
|
783
797
|
category,
|
|
784
798
|
f1: false
|
|
785
799
|
});
|
|
@@ -793,8 +807,8 @@ class McpBrowseCommand extends Action2 {
|
|
|
793
807
|
constructor() {
|
|
794
808
|
super({
|
|
795
809
|
id: McpCommandIds.Browse,
|
|
796
|
-
title: ( localize2(
|
|
797
|
-
tooltip: ( localize2(
|
|
810
|
+
title: ( localize2(10378, "MCP Servers")),
|
|
811
|
+
tooltip: ( localize2(10379, "Browse MCP Servers")),
|
|
798
812
|
category,
|
|
799
813
|
icon: Codicon.search,
|
|
800
814
|
precondition: ( ChatContextKeys.Setup.hidden.negate()),
|
|
@@ -817,7 +831,7 @@ class McpBrowseCommand extends Action2 {
|
|
|
817
831
|
MenuRegistry.appendMenuItem(MenuId.CommandPalette, {
|
|
818
832
|
command: {
|
|
819
833
|
id: McpCommandIds.Browse,
|
|
820
|
-
title: ( localize2(
|
|
834
|
+
title: ( localize2(10380, "Browse MCP Servers")),
|
|
821
835
|
category,
|
|
822
836
|
precondition: ( ChatContextKeys.Setup.hidden.negate())
|
|
823
837
|
}
|
|
@@ -826,7 +840,7 @@ class ShowInstalledMcpServersCommand extends Action2 {
|
|
|
826
840
|
constructor() {
|
|
827
841
|
super({
|
|
828
842
|
id: McpCommandIds.ShowInstalled,
|
|
829
|
-
title: ( localize2(
|
|
843
|
+
title: ( localize2(10381, "Show Installed Servers")),
|
|
830
844
|
category,
|
|
831
845
|
precondition: ( ContextKeyExpr.and(HasInstalledMcpServersContext, ( ChatContextKeys.Setup.hidden.negate()))),
|
|
832
846
|
f1: true
|
|
@@ -844,7 +858,7 @@ class ShowInstalledMcpServersCommand extends Action2 {
|
|
|
844
858
|
MenuRegistry.appendMenuItem(CHAT_CONFIG_MENU_ID, {
|
|
845
859
|
command: {
|
|
846
860
|
id: McpCommandIds.ShowInstalled,
|
|
847
|
-
title: ( localize2(
|
|
861
|
+
title: ( localize2(10382, "MCP Servers"))
|
|
848
862
|
},
|
|
849
863
|
when: ( ContextKeyExpr.and(ChatContextKeys.enabled, ( ContextKeyExpr.equals("view", ChatViewId)))),
|
|
850
864
|
order: 10,
|
|
@@ -869,7 +883,7 @@ class OpenUserMcpResourceCommand extends OpenMcpResourceCommand {
|
|
|
869
883
|
constructor() {
|
|
870
884
|
super({
|
|
871
885
|
id: McpCommandIds.OpenUserMcp,
|
|
872
|
-
title: ( localize2(
|
|
886
|
+
title: ( localize2(10383, "Open User Configuration")),
|
|
873
887
|
category,
|
|
874
888
|
f1: true,
|
|
875
889
|
precondition: ( ChatContextKeys.Setup.hidden.negate())
|
|
@@ -884,7 +898,7 @@ class OpenRemoteUserMcpResourceCommand extends OpenMcpResourceCommand {
|
|
|
884
898
|
constructor() {
|
|
885
899
|
super({
|
|
886
900
|
id: McpCommandIds.OpenRemoteUserMcp,
|
|
887
|
-
title: ( localize2(
|
|
901
|
+
title: ( localize2(10384, "Open Remote User Configuration")),
|
|
888
902
|
category,
|
|
889
903
|
f1: true,
|
|
890
904
|
precondition: ( ContextKeyExpr.and(( ChatContextKeys.Setup.hidden.negate()), ( RemoteNameContext.notEqualsTo(""))))
|
|
@@ -901,7 +915,7 @@ class OpenWorkspaceFolderMcpResourceCommand extends Action2 {
|
|
|
901
915
|
constructor() {
|
|
902
916
|
super({
|
|
903
917
|
id: McpCommandIds.OpenWorkspaceFolderMcp,
|
|
904
|
-
title: ( localize2(
|
|
918
|
+
title: ( localize2(10385, "Open Workspace Folder MCP Configuration")),
|
|
905
919
|
category,
|
|
906
920
|
f1: true,
|
|
907
921
|
precondition: ( ContextKeyExpr.and(( ChatContextKeys.Setup.hidden.negate()), ( WorkspaceFolderCountContext.notEqualsTo(0))))
|
|
@@ -924,7 +938,7 @@ class OpenWorkspaceMcpResourceCommand extends Action2 {
|
|
|
924
938
|
constructor() {
|
|
925
939
|
super({
|
|
926
940
|
id: McpCommandIds.OpenWorkspaceMcp,
|
|
927
|
-
title: ( localize2(
|
|
941
|
+
title: ( localize2(10386, "Open Workspace MCP Configuration")),
|
|
928
942
|
category,
|
|
929
943
|
f1: true,
|
|
930
944
|
precondition: ( ContextKeyExpr.and(( ChatContextKeys.Setup.hidden.negate()), ( WorkbenchStateContext.isEqualTo("workspace"))))
|
|
@@ -945,7 +959,7 @@ class McpBrowseResourcesCommand extends Action2 {
|
|
|
945
959
|
constructor() {
|
|
946
960
|
super({
|
|
947
961
|
id: McpCommandIds.BrowseResources,
|
|
948
|
-
title: ( localize2(
|
|
962
|
+
title: ( localize2(10387, "Browse Resources...")),
|
|
949
963
|
category,
|
|
950
964
|
precondition: ( ContextKeyExpr.and(McpContextKeys.serverCount.greater(0), ( ChatContextKeys.Setup.hidden.negate()))),
|
|
951
965
|
f1: true
|
|
@@ -963,7 +977,7 @@ class McpConfigureSamplingModels extends Action2 {
|
|
|
963
977
|
constructor() {
|
|
964
978
|
super({
|
|
965
979
|
id: McpCommandIds.ConfigureSamplingModels,
|
|
966
|
-
title: ( localize2(
|
|
980
|
+
title: ( localize2(10388, "Configure SamplingModel")),
|
|
967
981
|
category
|
|
968
982
|
});
|
|
969
983
|
}
|
|
@@ -989,7 +1003,7 @@ class McpConfigureSamplingModels extends Action2 {
|
|
|
989
1003
|
);
|
|
990
1004
|
const picked = await quickInputService.pick(allItems, {
|
|
991
1005
|
placeHolder: ( localize(
|
|
992
|
-
|
|
1006
|
+
10389,
|
|
993
1007
|
"Pick the models {0} can access via MCP sampling",
|
|
994
1008
|
server.definition.label
|
|
995
1009
|
)),
|
|
@@ -1005,7 +1019,7 @@ class McpStartPromptingServerCommand extends Action2 {
|
|
|
1005
1019
|
constructor() {
|
|
1006
1020
|
super({
|
|
1007
1021
|
id: McpCommandIds.StartPromptForServer,
|
|
1008
|
-
title: ( localize2(
|
|
1022
|
+
title: ( localize2(10390, "Start Prompting Server")),
|
|
1009
1023
|
category,
|
|
1010
1024
|
f1: false
|
|
1011
1025
|
});
|
|
@@ -1035,7 +1049,7 @@ class McpSkipCurrentAutostartCommand extends Action2 {
|
|
|
1035
1049
|
constructor() {
|
|
1036
1050
|
super({
|
|
1037
1051
|
id: McpCommandIds.SkipCurrentAutostart,
|
|
1038
|
-
title: ( localize2(
|
|
1052
|
+
title: ( localize2(10391, "Skip Current Autostart")),
|
|
1039
1053
|
category,
|
|
1040
1054
|
f1: false
|
|
1041
1055
|
});
|
|
@@ -26,4 +26,15 @@ export declare class McpElicitationService implements IMcpElicitationService {
|
|
|
26
26
|
private _validateString;
|
|
27
27
|
private _validateStringFormat;
|
|
28
28
|
private _validateNumber;
|
|
29
|
+
/**
|
|
30
|
+
* Converts an MCP elicitation schema into IChatQuestion[] for the carousel UI.
|
|
31
|
+
* Returns the questions and a map from question ID to schema property name.
|
|
32
|
+
*/
|
|
33
|
+
private _convertSchemaToQuestions;
|
|
34
|
+
/**
|
|
35
|
+
* Converts carousel answers (keyed by question ID) back into the
|
|
36
|
+
* MCP ElicitResult content format (keyed by schema property names),
|
|
37
|
+
* coercing types as needed.
|
|
38
|
+
*/
|
|
39
|
+
private _convertCarouselAnswersToElicitResult;
|
|
29
40
|
}
|