@codingame/monaco-vscode-mcp-service-override 34.1.3 → 35.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/platform/mcp/common/allowedMcpServersService.js +1 -1
- package/vscode/src/vs/platform/mcp/common/mcpGalleryService.js +2 -2
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcp.contribution.js +6 -5
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpAddContextContribution.js +2 -2
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpCommands.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpCommands.js +247 -73
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpElicitationService.js +25 -25
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpLanguageFeatures.js +23 -23
- 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/mcpServerEditor.js +37 -37
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerEditorInput.js +2 -2
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerIcons.js +5 -5
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerWidgets.js +5 -5
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServersView.js +17 -17
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpWorkbenchService.js +10 -10
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/extensionMcpDiscovery.js +4 -4
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/installedMcpServersDiscovery.js +2 -2
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/nativeMcpDiscoveryAbstract.js +1 -1
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpContextKeys.js +4 -4
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpLanguageModelToolContribution.js +8 -6
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpRegistry.js +13 -13
- 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.js +3 -3
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpServerConnection.js +3 -3
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpService.d.ts +4 -9
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpService.js +5 -48
- package/vscode/src/vs/workbench/services/authentication/browser/authenticationMcpAccessService.d.ts +12 -0
- package/vscode/src/vs/workbench/services/authentication/browser/authenticationMcpAccessService.js +3 -0
- package/vscode/src/vs/workbench/services/authentication/browser/authenticationMcpService.js +9 -9
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/pluginMcpDiscovery.d.ts +0 -15
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/pluginMcpDiscovery.js +0 -118
|
@@ -15,7 +15,7 @@ import { createMarkdownCommandLink, MarkdownString } from '@codingame/monaco-vsc
|
|
|
15
15
|
import { DisposableStore, Disposable, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
16
16
|
import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
|
|
17
17
|
import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
|
|
18
|
-
import { isDefined } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
|
|
18
|
+
import { hasKey, isDefined } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
|
|
19
19
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
20
20
|
import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range';
|
|
21
21
|
import { SuggestController } from '@codingame/monaco-vscode-api/vscode/vs/editor/contrib/suggest/browser/suggestController';
|
|
@@ -41,12 +41,20 @@ import { IAuthenticationService } from '@codingame/monaco-vscode-api/vscode/vs/w
|
|
|
41
41
|
import { IAuthenticationQueryService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/authentication/common/authenticationQuery.service';
|
|
42
42
|
import { WORKSPACE_STANDALONE_CONFIGURATIONS, MCP_CONFIGURATION_KEY } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/configuration/common/configuration';
|
|
43
43
|
import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
|
|
44
|
+
import { IOutputService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/output/common/output.service';
|
|
44
45
|
import { IRemoteUserDataProfilesService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/userDataProfile/common/remoteUserDataProfiles.service';
|
|
45
46
|
import { IUserDataProfileService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/userDataProfile/common/userDataProfile.service';
|
|
46
47
|
import { IViewsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/views/common/viewsService.service';
|
|
48
|
+
import '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/channels-root/state';
|
|
49
|
+
import { McpServerStatus } from '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/channels-session/state';
|
|
50
|
+
import '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/channels-chat/state';
|
|
51
|
+
import '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/channels-terminal/state';
|
|
52
|
+
import '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/channels-changeset/state';
|
|
53
|
+
import '@codingame/monaco-vscode-api/vscode/vs/platform/agentHost/common/state/protocol/channels-resource-watch/state';
|
|
47
54
|
import { CHAT_CONFIG_MENU_ID } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/actions/chatActions';
|
|
48
55
|
import { ChatViewId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat';
|
|
49
56
|
import { IChatWidgetService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service';
|
|
57
|
+
import { IAgentHostCustomizationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostCustomizationService.service';
|
|
50
58
|
import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
|
|
51
59
|
import { ChatModeKind, ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
52
60
|
import { isContributionDisabled, ContributionEnablementState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/enablement';
|
|
@@ -79,7 +87,7 @@ class ListMcpServerCommand extends Action2 {
|
|
|
79
87
|
constructor() {
|
|
80
88
|
super({
|
|
81
89
|
id: McpCommandIds.ListServer,
|
|
82
|
-
title: ( localize2(
|
|
90
|
+
title: ( localize2(11764, "List Servers")),
|
|
83
91
|
icon: Codicon.server,
|
|
84
92
|
category,
|
|
85
93
|
f1: true,
|
|
@@ -93,14 +101,44 @@ class ListMcpServerCommand extends Action2 {
|
|
|
93
101
|
});
|
|
94
102
|
}
|
|
95
103
|
async run(accessor) {
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
104
|
+
const services = {
|
|
105
|
+
chatWidgetService: accessor.get(IChatWidgetService),
|
|
106
|
+
agentHostCustomizations: accessor.get(IAgentHostCustomizationService),
|
|
107
|
+
mcpService: accessor.get(IMcpService),
|
|
108
|
+
commandService: accessor.get(ICommandService),
|
|
109
|
+
quickInput: accessor.get(IQuickInputService)
|
|
110
|
+
};
|
|
111
|
+
return this._runWithMode(services, undefined);
|
|
112
|
+
}
|
|
113
|
+
async _runWithMode(services, initialMode) {
|
|
114
|
+
let mode = initialMode;
|
|
115
|
+
if (mode === undefined) {
|
|
116
|
+
const sessionResource = services.chatWidgetService.lastFocusedWidget?.viewModel?.sessionResource;
|
|
117
|
+
const hasAgentHostMcp = sessionResource && services.agentHostCustomizations.getMcpServers(sessionResource).length > 0;
|
|
118
|
+
mode = hasAgentHostMcp ? {
|
|
119
|
+
agentHostSession: sessionResource
|
|
120
|
+
} : "local";
|
|
121
|
+
}
|
|
122
|
+
if (mode === "local") {
|
|
123
|
+
await this._runLocal(services);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const nextMode = await this._runAgentHost(services, mode.agentHostSession);
|
|
127
|
+
if (nextMode === "local") {
|
|
128
|
+
await this._runWithMode(services, "local");
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async _runLocal(services) {
|
|
132
|
+
const {
|
|
133
|
+
mcpService,
|
|
134
|
+
commandService,
|
|
135
|
+
quickInput
|
|
136
|
+
} = services;
|
|
99
137
|
const store = ( new DisposableStore());
|
|
100
138
|
const pick = quickInput.createQuickPick({
|
|
101
139
|
useSeparators: true
|
|
102
140
|
});
|
|
103
|
-
pick.placeholder = ( localize(
|
|
141
|
+
pick.placeholder = ( localize(11765, "Select an MCP Server"));
|
|
104
142
|
mcpService.activateCollections();
|
|
105
143
|
store.add(pick);
|
|
106
144
|
store.add(autorun(reader => {
|
|
@@ -111,8 +149,8 @@ class ListMcpServerCommand extends Action2 {
|
|
|
111
149
|
const firstRun = pick.items.length === 0;
|
|
112
150
|
pick.items = [{
|
|
113
151
|
id: "$add",
|
|
114
|
-
label: ( localize(
|
|
115
|
-
description: ( localize(
|
|
152
|
+
label: ( localize(11766, "Add Server")),
|
|
153
|
+
description: ( localize(11767, "Add a new server configuration")),
|
|
116
154
|
alwaysShow: true,
|
|
117
155
|
iconClass: ThemeIcon.asClassName(Codicon.add)
|
|
118
156
|
}, ...( Object.values(servers)).filter(s => s.length).flatMap(servers => [{
|
|
@@ -124,7 +162,7 @@ class ListMcpServerCommand extends Action2 {
|
|
|
124
162
|
return {
|
|
125
163
|
id: server.definition.id,
|
|
126
164
|
label: server.definition.label,
|
|
127
|
-
description: disabled ? ( localize(
|
|
165
|
+
description: disabled ? ( localize(11768, "Disabled")) : ( McpConnectionState.toString(server.connectionState.read(reader)))
|
|
128
166
|
};
|
|
129
167
|
}))])];
|
|
130
168
|
if (firstRun && pick.items.length > 3) {
|
|
@@ -148,12 +186,148 @@ class ListMcpServerCommand extends Action2 {
|
|
|
148
186
|
commandService.executeCommand(McpCommandIds.ServerOptions, picked.id);
|
|
149
187
|
}
|
|
150
188
|
}
|
|
189
|
+
async _runAgentHost(services, agentHostSession) {
|
|
190
|
+
const {
|
|
191
|
+
agentHostCustomizations,
|
|
192
|
+
commandService,
|
|
193
|
+
quickInput
|
|
194
|
+
} = services;
|
|
195
|
+
const BACK_ID = "$back";
|
|
196
|
+
const store = ( new DisposableStore());
|
|
197
|
+
const pick = quickInput.createQuickPick({
|
|
198
|
+
useSeparators: true
|
|
199
|
+
});
|
|
200
|
+
pick.placeholder = ( localize(11769, "Select an MCP Server for this session"));
|
|
201
|
+
store.add(pick);
|
|
202
|
+
const refresh = () => {
|
|
203
|
+
const firstRun = pick.items.length === 0;
|
|
204
|
+
const servers = agentHostCustomizations.getMcpServers(agentHostSession);
|
|
205
|
+
pick.items = [...(servers.length === 0 ? [{
|
|
206
|
+
id: "$empty",
|
|
207
|
+
label: ( localize(11770, "No MCP servers")),
|
|
208
|
+
description: ( localize(11771, "This session does not expose any MCP servers")),
|
|
209
|
+
alwaysShow: true
|
|
210
|
+
}] : ( servers.map(server => ({
|
|
211
|
+
id: server.id,
|
|
212
|
+
label: server.name,
|
|
213
|
+
description: server.enabled ? mcpServerStatusToLabel(server.status) : ( localize(11768, "Disabled"))
|
|
214
|
+
})))), {
|
|
215
|
+
type: "separator"
|
|
216
|
+
}, {
|
|
217
|
+
id: BACK_ID,
|
|
218
|
+
label: ( localize(11772, "Show locally configured servers...")),
|
|
219
|
+
iconClass: ThemeIcon.asClassName(Codicon.arrowLeft),
|
|
220
|
+
alwaysShow: true
|
|
221
|
+
}];
|
|
222
|
+
if (firstRun && servers.length > 0) {
|
|
223
|
+
pick.activeItems = [pick.items[0]];
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
refresh();
|
|
227
|
+
store.add(agentHostCustomizations.onDidChangeCustomizations(() => refresh()));
|
|
228
|
+
const picked = await ( new Promise(resolve => {
|
|
229
|
+
store.add(pick.onDidAccept(() => {
|
|
230
|
+
resolve(pick.activeItems[0]);
|
|
231
|
+
}));
|
|
232
|
+
store.add(pick.onDidHide(() => {
|
|
233
|
+
resolve(undefined);
|
|
234
|
+
}));
|
|
235
|
+
pick.show();
|
|
236
|
+
}));
|
|
237
|
+
store.dispose();
|
|
238
|
+
if (!picked || picked.id === "$empty") {
|
|
239
|
+
return undefined;
|
|
240
|
+
}
|
|
241
|
+
if (picked.id === BACK_ID) {
|
|
242
|
+
return "local";
|
|
243
|
+
}
|
|
244
|
+
await commandService.executeCommand(McpCommandIds.AgentHostServerOptions, agentHostSession, picked.id);
|
|
245
|
+
return undefined;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
function mcpServerStatusToLabel(status) {
|
|
249
|
+
switch (status) {
|
|
250
|
+
case McpServerStatus.Starting:
|
|
251
|
+
return localize(11773, "Starting");
|
|
252
|
+
case McpServerStatus.Ready:
|
|
253
|
+
return localize(11774, "Running");
|
|
254
|
+
case McpServerStatus.AuthRequired:
|
|
255
|
+
return localize(11775, "Authentication required");
|
|
256
|
+
case McpServerStatus.Error:
|
|
257
|
+
return localize(11776, "Error");
|
|
258
|
+
case McpServerStatus.Stopped:
|
|
259
|
+
return localize(11777, "Stopped");
|
|
260
|
+
default:
|
|
261
|
+
return "";
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
class McpAgentHostServerOptionsCommand extends Action2 {
|
|
265
|
+
constructor() {
|
|
266
|
+
super({
|
|
267
|
+
id: McpCommandIds.AgentHostServerOptions,
|
|
268
|
+
title: ( localize2(11778, "Agent Host Server Options")),
|
|
269
|
+
category,
|
|
270
|
+
f1: false
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
async run(accessor, agentHostSession, customizationId) {
|
|
274
|
+
const agentHostCustomizations = accessor.get(IAgentHostCustomizationService);
|
|
275
|
+
const quickInputService = accessor.get(IQuickInputService);
|
|
276
|
+
const outputService = accessor.get(IOutputService);
|
|
277
|
+
const server = agentHostCustomizations.getMcpServers(agentHostSession).find(s => s.id === customizationId);
|
|
278
|
+
if (!server) {
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
const logOutputChannelId = server.logOutputChannelId;
|
|
282
|
+
const items = [{
|
|
283
|
+
type: "separator",
|
|
284
|
+
label: ( localize(11779, "Status"))
|
|
285
|
+
}, {
|
|
286
|
+
label: server.enabled ? ( localize(11780, "Disable Server")) : ( localize(11781, "Enable Server")),
|
|
287
|
+
description: server.enabled ? mcpServerStatusToLabel(server.status) : ( localize(11768, "Disabled")),
|
|
288
|
+
action: "toggle"
|
|
289
|
+
}];
|
|
290
|
+
if (server.state.kind === McpServerStatus.AuthRequired) {
|
|
291
|
+
items.push({
|
|
292
|
+
label: ( localize(11782, "Authenticate")),
|
|
293
|
+
description: server.state.resource.resource,
|
|
294
|
+
action: "authenticate"
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
if (logOutputChannelId) {
|
|
298
|
+
items.push({
|
|
299
|
+
label: ( localize(11783, "Show Output")),
|
|
300
|
+
action: "showOutput"
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
const picked = await quickInputService.pick(items, {
|
|
304
|
+
placeHolder: server.name
|
|
305
|
+
});
|
|
306
|
+
if (!picked || !hasKey(picked, {
|
|
307
|
+
action: true
|
|
308
|
+
})) {
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
if (picked.action === "showOutput") {
|
|
312
|
+
if (logOutputChannelId) {
|
|
313
|
+
await outputService.showChannel(logOutputChannelId);
|
|
314
|
+
}
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
if (picked.action === "authenticate") {
|
|
318
|
+
await agentHostCustomizations.authenticateMcpServer(agentHostSession, server.id);
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
if (picked.action === "toggle") {
|
|
322
|
+
server.setEnabled(!server.enabled);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
151
325
|
}
|
|
152
326
|
class McpConfirmationServerOptionsCommand extends Action2 {
|
|
153
327
|
constructor() {
|
|
154
328
|
super({
|
|
155
329
|
id: McpCommandIds.ServerOptionsInConfirmation,
|
|
156
|
-
title: ( localize2(
|
|
330
|
+
title: ( localize2(11784, "Server Options")),
|
|
157
331
|
category,
|
|
158
332
|
icon: Codicon.settingsGear,
|
|
159
333
|
f1: false,
|
|
@@ -184,7 +358,7 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
184
358
|
constructor() {
|
|
185
359
|
super({
|
|
186
360
|
id: McpCommandIds.ServerOptions,
|
|
187
|
-
title: ( localize2(
|
|
361
|
+
title: ( localize2(11784, "Server Options")),
|
|
188
362
|
category,
|
|
189
363
|
f1: false
|
|
190
364
|
});
|
|
@@ -209,25 +383,25 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
209
383
|
const disabled = isContributionDisabled(server.enablement.get());
|
|
210
384
|
items.push({
|
|
211
385
|
type: "separator",
|
|
212
|
-
label: ( localize(
|
|
386
|
+
label: ( localize(11779, "Status"))
|
|
213
387
|
});
|
|
214
388
|
if (disabled) {
|
|
215
389
|
items.push({
|
|
216
|
-
label: ( localize(
|
|
390
|
+
label: ( localize(11785, "Enable Server (Workspace)")),
|
|
217
391
|
action: "enable"
|
|
218
392
|
});
|
|
219
393
|
} else if (McpConnectionState.canBeStarted(serverState.state)) {
|
|
220
394
|
items.push({
|
|
221
|
-
label: ( localize(
|
|
395
|
+
label: ( localize(11786, "Start Server")),
|
|
222
396
|
action: "start"
|
|
223
397
|
});
|
|
224
398
|
} else {
|
|
225
399
|
items.push({
|
|
226
|
-
label: ( localize(
|
|
400
|
+
label: ( localize(11787, "Stop Server")),
|
|
227
401
|
action: "stop"
|
|
228
402
|
});
|
|
229
403
|
items.push({
|
|
230
|
-
label: ( localize(
|
|
404
|
+
label: ( localize(11788, "Restart Server")),
|
|
231
405
|
action: "restart"
|
|
232
406
|
});
|
|
233
407
|
}
|
|
@@ -235,26 +409,26 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
235
409
|
const configTarget = serverDefinition?.presentation?.origin || collection?.presentation?.origin;
|
|
236
410
|
if (configTarget) {
|
|
237
411
|
items.push({
|
|
238
|
-
label: ( localize(
|
|
412
|
+
label: ( localize(11789, "Show Configuration")),
|
|
239
413
|
action: "config"
|
|
240
414
|
});
|
|
241
415
|
}
|
|
242
416
|
items.push({
|
|
243
|
-
label: ( localize(
|
|
417
|
+
label: ( localize(11783, "Show Output")),
|
|
244
418
|
action: "showOutput"
|
|
245
419
|
});
|
|
246
420
|
items.push({
|
|
247
421
|
type: "separator",
|
|
248
|
-
label: ( localize(
|
|
422
|
+
label: ( localize(11790, "Sampling"))
|
|
249
423
|
}, {
|
|
250
|
-
label: ( localize(
|
|
251
|
-
description: ( localize(
|
|
424
|
+
label: ( localize(11791, "Configure Model Access")),
|
|
425
|
+
description: ( localize(11792, "Set the models the server can use via MCP sampling")),
|
|
252
426
|
action: "configSampling"
|
|
253
427
|
});
|
|
254
428
|
if (samplingService.hasLogs(server)) {
|
|
255
429
|
items.push({
|
|
256
|
-
label: ( localize(
|
|
257
|
-
description: ( localize(
|
|
430
|
+
label: ( localize(11793, "Show Sampling Requests")),
|
|
431
|
+
description: ( localize(11794, "Show the sampling requests for this server")),
|
|
258
432
|
action: "samplingLog"
|
|
259
433
|
});
|
|
260
434
|
}
|
|
@@ -262,15 +436,15 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
262
436
|
if (capabilities === undefined || (capabilities & McpCapability.Resources)) {
|
|
263
437
|
items.push({
|
|
264
438
|
type: "separator",
|
|
265
|
-
label: ( localize(
|
|
439
|
+
label: ( localize(11795, "Resources"))
|
|
266
440
|
});
|
|
267
441
|
items.push({
|
|
268
|
-
label: ( localize(
|
|
442
|
+
label: ( localize(11796, "Browse Resources")),
|
|
269
443
|
action: "resources"
|
|
270
444
|
});
|
|
271
445
|
}
|
|
272
446
|
const pick = await quickInputService.pick(items, {
|
|
273
|
-
placeHolder: ( localize(
|
|
447
|
+
placeHolder: ( localize(11797, "Select action for '{0}'", server.definition.label))
|
|
274
448
|
});
|
|
275
449
|
if (!pick) {
|
|
276
450
|
return;
|
|
@@ -321,7 +495,7 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
321
495
|
editorService.openEditor({
|
|
322
496
|
resource: undefined,
|
|
323
497
|
contents: samplingService.getLogText(server),
|
|
324
|
-
label: ( localize(
|
|
498
|
+
label: ( localize(11798, "MCP Sampling: {0}", server.definition.label))
|
|
325
499
|
});
|
|
326
500
|
break;
|
|
327
501
|
default:
|
|
@@ -338,14 +512,14 @@ class McpServerOptionsCommand extends Action2 {
|
|
|
338
512
|
if (accountQuery.entities().getEntityCount().total > 1) {
|
|
339
513
|
result.push({
|
|
340
514
|
action: "disconnect",
|
|
341
|
-
label: ( localize(
|
|
515
|
+
label: ( localize(11799, "Disconnect Account")),
|
|
342
516
|
description: `(${accountName})`,
|
|
343
517
|
accountQuery
|
|
344
518
|
});
|
|
345
519
|
} else {
|
|
346
520
|
result.push({
|
|
347
521
|
action: "signout",
|
|
348
|
-
label: ( localize(
|
|
522
|
+
label: ( localize(11800, "Sign Out")),
|
|
349
523
|
description: `(${accountName})`,
|
|
350
524
|
accountQuery
|
|
351
525
|
});
|
|
@@ -514,24 +688,24 @@ let MCPServerActionRendering = class MCPServerActionRendering extends Disposable
|
|
|
514
688
|
text: s.definition.label,
|
|
515
689
|
id: McpCommandIds.ServerOptions,
|
|
516
690
|
arguments: [s.definition.id],
|
|
517
|
-
tooltip: ( localize(
|
|
691
|
+
tooltip: ( localize(11801, "Show server options for {0}", s.definition.label))
|
|
518
692
|
});
|
|
519
693
|
const single = servers.length === 1;
|
|
520
694
|
const names = ( ( servers.map(s => isServer(s) ? link(s) : "`" + s.label + "`")).map(l => single ? l : `- ${l}`)).join("\n");
|
|
521
695
|
let markdown;
|
|
522
696
|
if (state === DisplayedState.NewTools) {
|
|
523
697
|
markdown = ( new MarkdownString(single ? ( localize(
|
|
524
|
-
|
|
698
|
+
11802,
|
|
525
699
|
"MCP server {0} has been updated and may have new tools available.",
|
|
526
700
|
names
|
|
527
701
|
)) : ( localize(
|
|
528
|
-
|
|
702
|
+
11803,
|
|
529
703
|
"MCP servers have been updated and may have new tools available:\n\n{0}",
|
|
530
704
|
names
|
|
531
705
|
))));
|
|
532
706
|
} else if (state === DisplayedState.Error) {
|
|
533
|
-
markdown = ( new MarkdownString(single ? ( localize(
|
|
534
|
-
|
|
707
|
+
markdown = ( new MarkdownString(single ? ( localize(11804, "MCP server {0} was unable to start successfully.", names)) : ( localize(
|
|
708
|
+
11805,
|
|
535
709
|
"Multiple MCP servers were unable to start successfully:\n\n{0}",
|
|
536
710
|
names
|
|
537
711
|
))));
|
|
@@ -558,7 +732,7 @@ let MCPServerActionRendering = class MCPServerActionRendering extends Disposable
|
|
|
558
732
|
const divider = $("hr.mcp-hover-divider");
|
|
559
733
|
container.appendChild(divider);
|
|
560
734
|
const checkboxContainer = $("div.mcp-hover-setting");
|
|
561
|
-
const settingLabelStr = ( localize(
|
|
735
|
+
const settingLabelStr = ( localize(11806, "Automatically start MCP servers when sending a chat message"));
|
|
562
736
|
const checkbox = store.add(( new Checkbox(settingLabelStr, config.get() !== McpAutoStartValue.Never, {
|
|
563
737
|
...defaultCheckboxStyles
|
|
564
738
|
})));
|
|
@@ -586,11 +760,11 @@ let MCPServerActionRendering = class MCPServerActionRendering extends Disposable
|
|
|
586
760
|
} = displayedStateCurrent.get()
|
|
587
761
|
) {
|
|
588
762
|
if (state === DisplayedState.NewTools) {
|
|
589
|
-
return localize(
|
|
763
|
+
return localize(11807, "New tools available ({0})", servers.length || 1);
|
|
590
764
|
} else if (state === DisplayedState.Error) {
|
|
591
|
-
return localize(
|
|
765
|
+
return localize(11808, "Error loading {0} tool(s)", servers.length || 1);
|
|
592
766
|
} else if (state === DisplayedState.Refreshing) {
|
|
593
|
-
return localize(
|
|
767
|
+
return localize(11809, "Discovering tools...");
|
|
594
768
|
} else {
|
|
595
769
|
return null;
|
|
596
770
|
}
|
|
@@ -608,7 +782,7 @@ class ResetMcpTrustCommand extends Action2 {
|
|
|
608
782
|
constructor() {
|
|
609
783
|
super({
|
|
610
784
|
id: McpCommandIds.ResetTrust,
|
|
611
|
-
title: ( localize2(
|
|
785
|
+
title: ( localize2(11810, "Reset Trust")),
|
|
612
786
|
category,
|
|
613
787
|
f1: true,
|
|
614
788
|
precondition: ( ContextKeyExpr.and(McpContextKeys.toolsCount.greater(0), ( ChatContextKeys.Setup.hidden.negate()), ( ChatContextKeys.Setup.disabledInWorkspace.negate())))
|
|
@@ -623,7 +797,7 @@ class ResetMcpCachedTools extends Action2 {
|
|
|
623
797
|
constructor() {
|
|
624
798
|
super({
|
|
625
799
|
id: McpCommandIds.ResetCachedTools,
|
|
626
|
-
title: ( localize2(
|
|
800
|
+
title: ( localize2(11811, "Reset Cached Tools")),
|
|
627
801
|
category,
|
|
628
802
|
f1: true,
|
|
629
803
|
precondition: ( ContextKeyExpr.and(McpContextKeys.toolsCount.greater(0), ( ChatContextKeys.Setup.hidden.negate()), ( ChatContextKeys.Setup.disabledInWorkspace.negate())))
|
|
@@ -638,9 +812,9 @@ class AddConfigurationAction extends Action2 {
|
|
|
638
812
|
constructor() {
|
|
639
813
|
super({
|
|
640
814
|
id: McpCommandIds.AddConfiguration,
|
|
641
|
-
title: ( localize2(
|
|
815
|
+
title: ( localize2(11812, "Add Server...")),
|
|
642
816
|
metadata: {
|
|
643
|
-
description: ( localize2(
|
|
817
|
+
description: ( localize2(11813, "Installs a new Model Context protocol to the mcp.json settings"))
|
|
644
818
|
},
|
|
645
819
|
category,
|
|
646
820
|
f1: true,
|
|
@@ -662,9 +836,9 @@ class InstallFromManifestAction extends Action2 {
|
|
|
662
836
|
constructor() {
|
|
663
837
|
super({
|
|
664
838
|
id: McpCommandIds.InstallFromManifest,
|
|
665
|
-
title: ( localize2(
|
|
839
|
+
title: ( localize2(11814, "Install Server from Manifest...")),
|
|
666
840
|
metadata: {
|
|
667
|
-
description: ( localize2(
|
|
841
|
+
description: ( localize2(11815, "Install an MCP server from a JSON manifest file"))
|
|
668
842
|
},
|
|
669
843
|
category,
|
|
670
844
|
f1: true,
|
|
@@ -680,7 +854,7 @@ class RemoveStoredInput extends Action2 {
|
|
|
680
854
|
constructor() {
|
|
681
855
|
super({
|
|
682
856
|
id: McpCommandIds.RemoveStoredInput,
|
|
683
|
-
title: ( localize2(
|
|
857
|
+
title: ( localize2(11811, "Reset Cached Tools")),
|
|
684
858
|
category,
|
|
685
859
|
f1: false
|
|
686
860
|
});
|
|
@@ -693,7 +867,7 @@ class EditStoredInput extends Action2 {
|
|
|
693
867
|
constructor() {
|
|
694
868
|
super({
|
|
695
869
|
id: McpCommandIds.EditStoredInput,
|
|
696
|
-
title: ( localize2(
|
|
870
|
+
title: ( localize2(11816, "Edit Stored Input")),
|
|
697
871
|
category,
|
|
698
872
|
f1: false
|
|
699
873
|
});
|
|
@@ -707,7 +881,7 @@ class SetOAuthClientSecret extends Action2 {
|
|
|
707
881
|
constructor() {
|
|
708
882
|
super({
|
|
709
883
|
id: McpCommandIds.SetOAuthClientSecret,
|
|
710
|
-
title: ( localize2(
|
|
884
|
+
title: ( localize2(11817, "Set OAuth Client Secret")),
|
|
711
885
|
category,
|
|
712
886
|
f1: false
|
|
713
887
|
});
|
|
@@ -719,21 +893,21 @@ class SetOAuthClientSecret extends Action2 {
|
|
|
719
893
|
const existing = await secretStorageService.get(key);
|
|
720
894
|
const deleteButton = {
|
|
721
895
|
iconClass: ThemeIcon.asClassName(Codicon.trash),
|
|
722
|
-
tooltip: ( localize(
|
|
896
|
+
tooltip: ( localize(11818, "Delete stored client secret"))
|
|
723
897
|
};
|
|
724
898
|
const revealButton = {
|
|
725
899
|
iconClass: ThemeIcon.asClassName(Codicon.eye),
|
|
726
|
-
tooltip: ( localize(
|
|
900
|
+
tooltip: ( localize(11819, "Show client secret"))
|
|
727
901
|
};
|
|
728
902
|
const hideButton = {
|
|
729
903
|
iconClass: ThemeIcon.asClassName(Codicon.eyeClosed),
|
|
730
|
-
tooltip: ( localize(
|
|
904
|
+
tooltip: ( localize(11820, "Hide client secret"))
|
|
731
905
|
};
|
|
732
906
|
const result = await ( new Promise(resolve => {
|
|
733
907
|
const input = quickInputService.createInputBox();
|
|
734
|
-
input.title = existing ? ( localize(
|
|
735
|
-
input.prompt = ( localize(
|
|
736
|
-
input.placeholder = existing ? ( localize(
|
|
908
|
+
input.title = existing ? ( localize(11821, "Replace Client Secret for {0}", serverName)) : ( localize(11822, "Set Client Secret for {0}", serverName));
|
|
909
|
+
input.prompt = ( localize(11823, "Enter the client secret for OAuth client '{0}'.", clientId));
|
|
910
|
+
input.placeholder = existing ? ( localize(11824, "Enter a new client secret to replace the stored value")) : ( localize(11825, "Enter client secret"));
|
|
737
911
|
input.password = true;
|
|
738
912
|
input.ignoreFocusOut = true;
|
|
739
913
|
if (existing) {
|
|
@@ -793,7 +967,7 @@ class ShowConfiguration extends Action2 {
|
|
|
793
967
|
constructor() {
|
|
794
968
|
super({
|
|
795
969
|
id: McpCommandIds.ShowConfiguration,
|
|
796
|
-
title: ( localize2(
|
|
970
|
+
title: ( localize2(11826, "Show Configuration")),
|
|
797
971
|
category,
|
|
798
972
|
f1: false
|
|
799
973
|
});
|
|
@@ -823,7 +997,7 @@ class ShowOutput extends Action2 {
|
|
|
823
997
|
constructor() {
|
|
824
998
|
super({
|
|
825
999
|
id: McpCommandIds.ShowOutput,
|
|
826
|
-
title: ( localize2(
|
|
1000
|
+
title: ( localize2(11827, "Show Output")),
|
|
827
1001
|
category,
|
|
828
1002
|
f1: false
|
|
829
1003
|
});
|
|
@@ -836,7 +1010,7 @@ class RestartServer extends Action2 {
|
|
|
836
1010
|
constructor() {
|
|
837
1011
|
super({
|
|
838
1012
|
id: McpCommandIds.RestartServer,
|
|
839
|
-
title: ( localize2(
|
|
1013
|
+
title: ( localize2(11828, "Restart Server")),
|
|
840
1014
|
category,
|
|
841
1015
|
f1: false
|
|
842
1016
|
});
|
|
@@ -855,7 +1029,7 @@ class StartServer extends Action2 {
|
|
|
855
1029
|
constructor() {
|
|
856
1030
|
super({
|
|
857
1031
|
id: McpCommandIds.StartServer,
|
|
858
|
-
title: ( localize2(
|
|
1032
|
+
title: ( localize2(11829, "Start Server")),
|
|
859
1033
|
category,
|
|
860
1034
|
f1: false
|
|
861
1035
|
});
|
|
@@ -880,7 +1054,7 @@ class StopServer extends Action2 {
|
|
|
880
1054
|
constructor() {
|
|
881
1055
|
super({
|
|
882
1056
|
id: McpCommandIds.StopServer,
|
|
883
|
-
title: ( localize2(
|
|
1057
|
+
title: ( localize2(11830, "Stop Server")),
|
|
884
1058
|
category,
|
|
885
1059
|
f1: false
|
|
886
1060
|
});
|
|
@@ -894,8 +1068,8 @@ class McpBrowseCommand extends Action2 {
|
|
|
894
1068
|
constructor() {
|
|
895
1069
|
super({
|
|
896
1070
|
id: McpCommandIds.Browse,
|
|
897
|
-
title: ( localize2(
|
|
898
|
-
tooltip: ( localize2(
|
|
1071
|
+
title: ( localize2(11831, "MCP Servers")),
|
|
1072
|
+
tooltip: ( localize2(11832, "Browse MCP Servers")),
|
|
899
1073
|
category,
|
|
900
1074
|
icon: Codicon.search,
|
|
901
1075
|
precondition: ( ContextKeyExpr.and(( ChatContextKeys.Setup.hidden.negate()), ( ChatContextKeys.Setup.disabledInWorkspace.negate()))),
|
|
@@ -918,7 +1092,7 @@ class McpBrowseCommand extends Action2 {
|
|
|
918
1092
|
MenuRegistry.appendMenuItem(MenuId.CommandPalette, {
|
|
919
1093
|
command: {
|
|
920
1094
|
id: McpCommandIds.Browse,
|
|
921
|
-
title: ( localize2(
|
|
1095
|
+
title: ( localize2(11833, "Browse MCP Servers")),
|
|
922
1096
|
category,
|
|
923
1097
|
precondition: ( ContextKeyExpr.and(( ChatContextKeys.Setup.hidden.negate()), ( ChatContextKeys.Setup.disabledInWorkspace.negate())))
|
|
924
1098
|
}
|
|
@@ -927,7 +1101,7 @@ class ShowInstalledMcpServersCommand extends Action2 {
|
|
|
927
1101
|
constructor() {
|
|
928
1102
|
super({
|
|
929
1103
|
id: McpCommandIds.ShowInstalled,
|
|
930
|
-
title: ( localize2(
|
|
1104
|
+
title: ( localize2(11834, "Show Installed Servers")),
|
|
931
1105
|
category,
|
|
932
1106
|
precondition: ( ContextKeyExpr.and(HasInstalledMcpServersContext, ( ChatContextKeys.Setup.hidden.negate()), ( ChatContextKeys.Setup.disabledInWorkspace.negate()))),
|
|
933
1107
|
f1: true
|
|
@@ -945,7 +1119,7 @@ class ShowInstalledMcpServersCommand extends Action2 {
|
|
|
945
1119
|
MenuRegistry.appendMenuItem(CHAT_CONFIG_MENU_ID, {
|
|
946
1120
|
command: {
|
|
947
1121
|
id: McpCommandIds.ShowInstalled,
|
|
948
|
-
title: ( localize2(
|
|
1122
|
+
title: ( localize2(11835, "MCP Servers"))
|
|
949
1123
|
},
|
|
950
1124
|
when: ( ContextKeyExpr.and(ChatContextKeys.enabled, ( ContextKeyExpr.equals("view", ChatViewId)))),
|
|
951
1125
|
order: 10,
|
|
@@ -970,7 +1144,7 @@ class OpenUserMcpResourceCommand extends OpenMcpResourceCommand {
|
|
|
970
1144
|
constructor() {
|
|
971
1145
|
super({
|
|
972
1146
|
id: McpCommandIds.OpenUserMcp,
|
|
973
|
-
title: ( localize2(
|
|
1147
|
+
title: ( localize2(11836, "Open User Configuration")),
|
|
974
1148
|
category,
|
|
975
1149
|
f1: true,
|
|
976
1150
|
precondition: ( ContextKeyExpr.and(( ChatContextKeys.Setup.hidden.negate()), ( ChatContextKeys.Setup.disabledInWorkspace.negate())))
|
|
@@ -985,7 +1159,7 @@ class OpenRemoteUserMcpResourceCommand extends OpenMcpResourceCommand {
|
|
|
985
1159
|
constructor() {
|
|
986
1160
|
super({
|
|
987
1161
|
id: McpCommandIds.OpenRemoteUserMcp,
|
|
988
|
-
title: ( localize2(
|
|
1162
|
+
title: ( localize2(11837, "Open Remote User Configuration")),
|
|
989
1163
|
category,
|
|
990
1164
|
f1: true,
|
|
991
1165
|
precondition: ( ContextKeyExpr.and(( ContextKeyExpr.and(( ChatContextKeys.Setup.hidden.negate()), ( ChatContextKeys.Setup.disabledInWorkspace.negate()))), ( RemoteNameContext.notEqualsTo(""))))
|
|
@@ -1002,7 +1176,7 @@ class OpenWorkspaceFolderMcpResourceCommand extends Action2 {
|
|
|
1002
1176
|
constructor() {
|
|
1003
1177
|
super({
|
|
1004
1178
|
id: McpCommandIds.OpenWorkspaceFolderMcp,
|
|
1005
|
-
title: ( localize2(
|
|
1179
|
+
title: ( localize2(11838, "Open Workspace Folder MCP Configuration")),
|
|
1006
1180
|
category,
|
|
1007
1181
|
f1: true,
|
|
1008
1182
|
precondition: ( ContextKeyExpr.and(( ContextKeyExpr.and(( ChatContextKeys.Setup.hidden.negate()), ( ChatContextKeys.Setup.disabledInWorkspace.negate()))), ( WorkspaceFolderCountContext.notEqualsTo(0))))
|
|
@@ -1025,7 +1199,7 @@ class OpenWorkspaceMcpResourceCommand extends Action2 {
|
|
|
1025
1199
|
constructor() {
|
|
1026
1200
|
super({
|
|
1027
1201
|
id: McpCommandIds.OpenWorkspaceMcp,
|
|
1028
|
-
title: ( localize2(
|
|
1202
|
+
title: ( localize2(11839, "Open Workspace MCP Configuration")),
|
|
1029
1203
|
category,
|
|
1030
1204
|
f1: true,
|
|
1031
1205
|
precondition: ( ContextKeyExpr.and(( ContextKeyExpr.and(( ChatContextKeys.Setup.hidden.negate()), ( ChatContextKeys.Setup.disabledInWorkspace.negate()))), ( WorkbenchStateContext.isEqualTo("workspace"))))
|
|
@@ -1046,7 +1220,7 @@ class McpBrowseResourcesCommand extends Action2 {
|
|
|
1046
1220
|
constructor() {
|
|
1047
1221
|
super({
|
|
1048
1222
|
id: McpCommandIds.BrowseResources,
|
|
1049
|
-
title: ( localize2(
|
|
1223
|
+
title: ( localize2(11840, "Browse Resources...")),
|
|
1050
1224
|
category,
|
|
1051
1225
|
precondition: ( ContextKeyExpr.and(McpContextKeys.serverCount.greater(0), ( ChatContextKeys.Setup.hidden.negate()), ( ChatContextKeys.Setup.disabledInWorkspace.negate()))),
|
|
1052
1226
|
f1: true
|
|
@@ -1064,7 +1238,7 @@ class McpConfigureSamplingModels extends Action2 {
|
|
|
1064
1238
|
constructor() {
|
|
1065
1239
|
super({
|
|
1066
1240
|
id: McpCommandIds.ConfigureSamplingModels,
|
|
1067
|
-
title: ( localize2(
|
|
1241
|
+
title: ( localize2(11841, "Configure SamplingModel")),
|
|
1068
1242
|
category
|
|
1069
1243
|
});
|
|
1070
1244
|
}
|
|
@@ -1090,7 +1264,7 @@ class McpConfigureSamplingModels extends Action2 {
|
|
|
1090
1264
|
);
|
|
1091
1265
|
const picked = await quickInputService.pick(allItems, {
|
|
1092
1266
|
placeHolder: ( localize(
|
|
1093
|
-
|
|
1267
|
+
11842,
|
|
1094
1268
|
"Pick the models {0} can access via MCP sampling",
|
|
1095
1269
|
server.definition.label
|
|
1096
1270
|
)),
|
|
@@ -1106,7 +1280,7 @@ class McpStartPromptingServerCommand extends Action2 {
|
|
|
1106
1280
|
constructor() {
|
|
1107
1281
|
super({
|
|
1108
1282
|
id: McpCommandIds.StartPromptForServer,
|
|
1109
|
-
title: ( localize2(
|
|
1283
|
+
title: ( localize2(11843, "Start Prompting Server")),
|
|
1110
1284
|
category,
|
|
1111
1285
|
f1: false
|
|
1112
1286
|
});
|
|
@@ -1136,7 +1310,7 @@ class McpSkipCurrentAutostartCommand extends Action2 {
|
|
|
1136
1310
|
constructor() {
|
|
1137
1311
|
super({
|
|
1138
1312
|
id: McpCommandIds.SkipCurrentAutostart,
|
|
1139
|
-
title: ( localize2(
|
|
1313
|
+
title: ( localize2(11844, "Skip Current Autostart")),
|
|
1140
1314
|
category,
|
|
1141
1315
|
f1: false
|
|
1142
1316
|
});
|
|
@@ -1146,4 +1320,4 @@ class McpSkipCurrentAutostartCommand extends Action2 {
|
|
|
1146
1320
|
}
|
|
1147
1321
|
}
|
|
1148
1322
|
|
|
1149
|
-
export { AddConfigurationAction, EditStoredInput, InstallFromManifestAction, ListMcpServerCommand, MCPServerActionRendering, McpBrowseCommand, McpBrowseResourcesCommand, McpConfigureSamplingModels, McpConfirmationServerOptionsCommand, McpServerOptionsCommand, McpSkipCurrentAutostartCommand, McpStartPromptingServerCommand, OpenRemoteUserMcpResourceCommand, OpenUserMcpResourceCommand, OpenWorkspaceFolderMcpResourceCommand, OpenWorkspaceMcpResourceCommand, RemoveStoredInput, ResetMcpCachedTools, ResetMcpTrustCommand, RestartServer, SetOAuthClientSecret, ShowConfiguration, ShowInstalledMcpServersCommand, ShowOutput, StartServer, StopServer };
|
|
1323
|
+
export { AddConfigurationAction, EditStoredInput, InstallFromManifestAction, ListMcpServerCommand, MCPServerActionRendering, McpAgentHostServerOptionsCommand, McpBrowseCommand, McpBrowseResourcesCommand, McpConfigureSamplingModels, McpConfirmationServerOptionsCommand, McpServerOptionsCommand, McpSkipCurrentAutostartCommand, McpStartPromptingServerCommand, OpenRemoteUserMcpResourceCommand, OpenUserMcpResourceCommand, OpenWorkspaceFolderMcpResourceCommand, OpenWorkspaceMcpResourceCommand, RemoveStoredInput, ResetMcpCachedTools, ResetMcpTrustCommand, RestartServer, SetOAuthClientSecret, ShowConfiguration, ShowInstalledMcpServersCommand, ShowOutput, StartServer, StopServer };
|