@codingame/monaco-vscode-mcp-service-override 23.2.2 → 24.1.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/index.js +19 -19
- package/package.json +2 -15
- package/vscode/src/vs/platform/mcp/common/allowedMcpServersService.d.ts +1 -1
- package/vscode/src/vs/platform/mcp/common/allowedMcpServersService.js +2 -2
- package/vscode/src/vs/platform/mcp/common/mcpGalleryService.d.ts +2 -2
- package/vscode/src/vs/platform/mcp/common/mcpGalleryService.js +4 -8
- package/vscode/src/vs/platform/mcp/common/mcpManagementIpc.d.ts +2 -2
- package/vscode/src/vs/platform/mcp/common/mcpManagementService.d.ts +2 -2
- package/vscode/src/vs/platform/mcp/common/mcpManagementService.js +3 -3
- package/vscode/src/vs/platform/mcp/common/mcpResourceScannerService.d.ts +2 -2
- package/vscode/src/vs/platform/mcp/common/mcpResourceScannerService.js +1 -1
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcp.contribution.js +8 -8
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpAddContextContribution.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpAddContextContribution.js +43 -27
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpCommands.js +70 -70
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpDiscovery.js +1 -1
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpElicitationService.d.ts +10 -4
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpElicitationService.js +198 -35
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpLanguageFeatures.js +21 -21
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpMigration.js +9 -9
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpResourceQuickAccess.d.ts +24 -5
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpResourceQuickAccess.js +178 -51
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerActions.js +35 -35
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerEditor.d.ts +2 -2
- 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.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServerWidgets.js +7 -7
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServersView.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpServersView.js +26 -26
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpWorkbenchService.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpWorkbenchService.js +12 -12
- package/vscode/src/vs/workbench/contrib/mcp/browser/openPanelChatAndGetWidget.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/mcp/browser/openPanelChatAndGetWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/extensionMcpDiscovery.js +5 -5
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/installedMcpServersDiscovery.js +1 -1
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/nativeMcpDiscoveryAbstract.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/nativeMcpDiscoveryAbstract.js +2 -2
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/nativeMcpDiscoveryAdapters.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/nativeMcpDiscoveryAdapters.js +1 -1
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/nativeMcpRemoteDiscovery.js +1 -1
- package/vscode/src/vs/workbench/contrib/mcp/common/discovery/workspaceMcpDiscoveryAdapter.js +1 -1
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpContextKeys.js +4 -4
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpDevMode.js +4 -2
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpLanguageModelToolContribution.js +20 -14
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpRegistry.js +14 -14
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpResourceFilesystem.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpResourceFilesystem.js +19 -3
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpSamplingLog.js +2 -2
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpSamplingService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpSamplingService.js +21 -20
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpServer.d.ts +6 -2
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpServer.js +79 -47
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpServerConnection.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpServerConnection.js +8 -6
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpServerRequestHandler.d.ts +47 -2
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpServerRequestHandler.js +229 -14
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpService.js +2 -2
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpTaskManager.d.ts +68 -0
- package/vscode/src/vs/workbench/contrib/mcp/common/mcpTaskManager.js +168 -0
- package/vscode/src/vs/workbench/services/authentication/browser/authenticationMcpService.js +10 -10
- package/vscode/src/vs/workbench/services/mcp/browser/mcpGalleryManifestService.d.ts +17 -2
- package/vscode/src/vs/workbench/services/mcp/browser/mcpGalleryManifestService.js +60 -10
- package/vscode/src/vs/workbench/services/mcp/common/mcpWorkbenchManagementService.d.ts +1 -1
- package/vscode/src/vs/workbench/services/mcp/common/mcpWorkbenchManagementService.js +2 -2
|
@@ -11,7 +11,7 @@ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
|
11
11
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
12
12
|
import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
|
|
13
13
|
import { IOpenerService } from '@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service';
|
|
14
|
-
import { verifiedPublisherIcon } from '@codingame/monaco-vscode-
|
|
14
|
+
import { verifiedPublisherIcon } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensionManagement/common/extensionsIcons';
|
|
15
15
|
import { McpServerInstallState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes';
|
|
16
16
|
import { registerThemingParticipant } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService';
|
|
17
17
|
import { IThemeService } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service';
|
|
@@ -19,7 +19,7 @@ import { isDark } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/co
|
|
|
19
19
|
import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
20
20
|
import { mcpServerIcon, mcpStarredIcon, mcpLicenseIcon, mcpServerWorkspaceIcon, mcpServerRemoteIcon } from './mcpServerIcons.js';
|
|
21
21
|
import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
|
|
22
|
-
import { ExtensionIconBadge } from '@codingame/monaco-vscode-
|
|
22
|
+
import { ExtensionIconBadge } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/browser/extensionsWidgets';
|
|
23
23
|
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
24
24
|
import { LocalMcpServerScope } from '../../../services/mcp/common/mcpWorkbenchManagementService.js';
|
|
25
25
|
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
@@ -154,7 +154,7 @@ let PublisherWidget = class PublisherWidget extends McpServerWidget {
|
|
|
154
154
|
this.element.classList.toggle('clickable', !!this.mcpServer.gallery?.publisherUrl);
|
|
155
155
|
this.element.setAttribute('role', 'button');
|
|
156
156
|
this.element.tabIndex = 0;
|
|
157
|
-
this.containerHover = this.disposables.add(this.hoverService.setupManagedHover(getDefaultHoverDelegate('mouse'), this.element, ( localize(
|
|
157
|
+
this.containerHover = this.disposables.add(this.hoverService.setupManagedHover(getDefaultHoverDelegate('mouse'), this.element, ( localize(8936, "Publisher ({0})", this.mcpServer.publisherDisplayName))));
|
|
158
158
|
append(this.element, publisherDisplayName);
|
|
159
159
|
if (this.mcpServer.gallery?.publisherDomain?.verified) {
|
|
160
160
|
append(this.element, verifiedPublisher);
|
|
@@ -162,7 +162,7 @@ let PublisherWidget = class PublisherWidget extends McpServerWidget {
|
|
|
162
162
|
verifiedPublisher.tabIndex = 0;
|
|
163
163
|
verifiedPublisher.setAttribute('role', 'button');
|
|
164
164
|
this.containerHover.update(( localize(
|
|
165
|
-
|
|
165
|
+
8937,
|
|
166
166
|
"This publisher has verified ownership of {0}",
|
|
167
167
|
this.mcpServer.gallery?.publisherDomain.link
|
|
168
168
|
)));
|
|
@@ -296,12 +296,12 @@ let McpServerHoverWidget = class McpServerHoverWidget extends McpServerWidget {
|
|
|
296
296
|
let addSeparator = false;
|
|
297
297
|
if (this.mcpServer.local?.scope === LocalMcpServerScope.Workspace) {
|
|
298
298
|
markdown.appendMarkdown(`$(${mcpServerWorkspaceIcon.id}) `);
|
|
299
|
-
markdown.appendMarkdown(( localize(
|
|
299
|
+
markdown.appendMarkdown(( localize(8938, "Workspace MCP Server")));
|
|
300
300
|
addSeparator = true;
|
|
301
301
|
}
|
|
302
302
|
if (this.mcpServer.local?.scope === LocalMcpServerScope.RemoteUser) {
|
|
303
303
|
markdown.appendMarkdown(`$(${mcpServerRemoteIcon.id}) `);
|
|
304
|
-
markdown.appendMarkdown(( localize(
|
|
304
|
+
markdown.appendMarkdown(( localize(8939, "Remote MCP Server")));
|
|
305
305
|
addSeparator = true;
|
|
306
306
|
}
|
|
307
307
|
if (this.mcpServer.installState === McpServerInstallState.Installed) {
|
|
@@ -416,7 +416,7 @@ let McpServerStatusWidget = class McpServerStatusWidget extends McpServerWidget
|
|
|
416
416
|
McpServerStatusWidget = ( __decorate([
|
|
417
417
|
( __param(2, IMarkdownRendererService))
|
|
418
418
|
], McpServerStatusWidget));
|
|
419
|
-
const mcpStarredIconColor = registerColor('mcpIcon.starForeground', { light: '#DF6100', dark: '#FF8E00', hcDark: '#FF8E00', hcLight: textLinkForeground }, ( localize(
|
|
419
|
+
const mcpStarredIconColor = registerColor('mcpIcon.starForeground', { light: '#DF6100', dark: '#FF8E00', hcDark: '#FF8E00', hcLight: textLinkForeground }, ( localize(8940, "The icon color for mcp starred.")), false);
|
|
420
420
|
registerThemingParticipant((theme, collector) => {
|
|
421
421
|
const mcpStarredIconColorValue = theme.getColor(mcpStarredIconColor);
|
|
422
422
|
if (mcpStarredIconColorValue) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
2
|
-
import { IPagedModel } from "@codingame/monaco-vscode-
|
|
2
|
+
import { IPagedModel } from "@codingame/monaco-vscode-api/vscode/vs/base/common/paging";
|
|
3
3
|
import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
|
|
4
4
|
import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service";
|
|
5
5
|
import { IContextMenuService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextview/browser/contextView.service";
|
|
@@ -9,12 +9,12 @@ import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/pl
|
|
|
9
9
|
import { IKeybindingService } from "@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybinding.service";
|
|
10
10
|
import { IOpenerService } from "@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service";
|
|
11
11
|
import { IThemeService } from "@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service";
|
|
12
|
-
import { IViewletViewOptions } from "@codingame/monaco-vscode-
|
|
12
|
+
import { IViewletViewOptions } from "@codingame/monaco-vscode-api/vscode/vs/workbench/browser/parts/views/viewsViewlet";
|
|
13
13
|
import { IViewDescriptorService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/common/views.service";
|
|
14
14
|
import { IWorkbenchMcpServer } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes";
|
|
15
15
|
import { IMcpWorkbenchService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes.service";
|
|
16
16
|
import { IWorkbenchContribution } from "@codingame/monaco-vscode-api/vscode/vs/workbench/common/contributions";
|
|
17
|
-
import { AbstractExtensionsListView } from "@codingame/monaco-vscode-
|
|
17
|
+
import { AbstractExtensionsListView } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/browser/extensionsViews";
|
|
18
18
|
import { IWorkbenchLayoutService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService.service";
|
|
19
19
|
import { IMcpGalleryManifestService } from "@codingame/monaco-vscode-api/vscode/vs/platform/mcp/common/mcpGalleryManifest.service";
|
|
20
20
|
import { IMarkdownRendererService } from "@codingame/monaco-vscode-api/vscode/vs/platform/markdown/browser/markdownRenderer.service";
|
|
@@ -5,9 +5,9 @@ import * as mcpServersView from './media/mcpServersView.css';
|
|
|
5
5
|
import { append, $ } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
6
6
|
import { ActionBar } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/actionbar/actionbar';
|
|
7
7
|
import { Event, Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
8
|
-
import {
|
|
8
|
+
import { createMarkdownCommandLink, MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
|
|
9
9
|
import { DisposableStore, isDisposable, combinedDisposable, dispose, Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
10
|
-
import { PagedModel, DelayedPagedModel, IterativePagedModel } from '@codingame/monaco-vscode-
|
|
10
|
+
import { PagedModel, DelayedPagedModel, IterativePagedModel } from '@codingame/monaco-vscode-api/vscode/vs/base/common/paging';
|
|
11
11
|
import { localize, localize2 } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
12
12
|
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
13
13
|
import { ContextKeyExpr, ContextKeyDefinedExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
|
|
@@ -21,7 +21,7 @@ import { WorkbenchPagedList } from '@codingame/monaco-vscode-api/vscode/vs/platf
|
|
|
21
21
|
import { INotificationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification.service';
|
|
22
22
|
import { IOpenerService } from '@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service';
|
|
23
23
|
import { IThemeService } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service';
|
|
24
|
-
import { getLocationBasedViewColors } from '@codingame/monaco-vscode-
|
|
24
|
+
import { getLocationBasedViewColors } from '@codingame/monaco-vscode-api/vscode/vs/workbench/browser/parts/views/viewPane';
|
|
25
25
|
import { ViewContainerLocation, Extensions } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/views';
|
|
26
26
|
import { IViewDescriptorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/views.service';
|
|
27
27
|
import { McpServerContainers, McpServerEnablementState, InstalledMcpServersViewId, HasInstalledMcpServersContext, McpServersGalleryStatusContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes';
|
|
@@ -29,17 +29,17 @@ import { IMcpWorkbenchService } from '@codingame/monaco-vscode-api/vscode/vs/wor
|
|
|
29
29
|
import { getContextMenuActions, DropDownAction, McpServerStatusAction, InstallAction, InstallingLabelAction, ManageMcpServerAction } from './mcpServerActions.js';
|
|
30
30
|
import { McpServerIconWidget, PublisherWidget, StarredWidget, McpServerScopeBadgeWidget, McpServerHoverWidget } from './mcpServerWidgets.js';
|
|
31
31
|
import { ActionRunner, Separator } from '@codingame/monaco-vscode-api/vscode/vs/base/common/actions';
|
|
32
|
-
import { mcpGalleryServiceEnablementConfig, mcpGalleryServiceUrlConfig } from '@codingame/monaco-vscode-
|
|
32
|
+
import { mcpGalleryServiceEnablementConfig, mcpGalleryServiceUrlConfig } from '@codingame/monaco-vscode-api/vscode/vs/platform/mcp/common/mcpManagement';
|
|
33
33
|
import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
|
|
34
34
|
import { alert } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/aria/aria';
|
|
35
35
|
import { Registry } from '@codingame/monaco-vscode-api/vscode/vs/platform/registry/common/platform';
|
|
36
36
|
import { SyncDescriptor } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/descriptors';
|
|
37
37
|
import { DefaultViewsContext, SearchMcpServersContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions';
|
|
38
|
-
import { VIEW_CONTAINER } from '@codingame/monaco-vscode-
|
|
38
|
+
import { VIEW_CONTAINER } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/browser/extensions.contribution';
|
|
39
39
|
import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatContextKeys';
|
|
40
40
|
import { Button } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/button/button';
|
|
41
41
|
import { defaultButtonStyles } from '@codingame/monaco-vscode-api/vscode/vs/platform/theme/browser/defaultStyles';
|
|
42
|
-
import { AbstractExtensionsListView } from '@codingame/monaco-vscode-
|
|
42
|
+
import { AbstractExtensionsListView } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/browser/extensionsViews';
|
|
43
43
|
import { HoverPosition } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hoverWidget';
|
|
44
44
|
import { Position } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService';
|
|
45
45
|
import { IWorkbenchLayoutService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService.service';
|
|
@@ -106,7 +106,7 @@ let McpServersListView = class McpServersListView extends AbstractExtensionsList
|
|
|
106
106
|
return mcpServer?.label ?? '';
|
|
107
107
|
},
|
|
108
108
|
getWidgetAriaLabel() {
|
|
109
|
-
return localize(
|
|
109
|
+
return localize(8941, "MCP Servers");
|
|
110
110
|
}
|
|
111
111
|
},
|
|
112
112
|
overrideStyles: getLocationBasedViewColors(this.viewDescriptorService.getViewLocationById(this.id)).listOverrideStyles,
|
|
@@ -194,42 +194,42 @@ let McpServersListView = class McpServersListView extends AbstractExtensionsList
|
|
|
194
194
|
const iconElement = append(iconContainer, $('span'));
|
|
195
195
|
iconElement.className = ThemeIcon.asClassName(mcpServerIcon);
|
|
196
196
|
const title = append(welcomeContent, $('.mcp-welcome-title'));
|
|
197
|
-
title.textContent = ( localize(
|
|
198
|
-
const settingsCommandLink = (
|
|
197
|
+
title.textContent = ( localize(8942, "MCP Servers"));
|
|
198
|
+
const settingsCommandLink = ( createMarkdownCommandLink({ id: 'workbench.action.openSettings', arguments: [`@id:${mcpGalleryServiceEnablementConfig}`], title: mcpGalleryServiceEnablementConfig, tooltip: ( localize(8943, "Open Settings")) }).toString());
|
|
199
199
|
const description = append(welcomeContent, $('.mcp-welcome-description'));
|
|
200
200
|
const markdownResult = this._register(this.markdownRendererService.render(( new MarkdownString(( localize(
|
|
201
|
-
|
|
201
|
+
8944,
|
|
202
202
|
"Browse and install [Model Context Protocol (MCP) servers](https://code.visualstudio.com/docs/copilot/customization/mcp-servers) directly from VS Code to extend agent mode with extra tools for connecting to databases, invoking APIs and performing specialized tasks."
|
|
203
203
|
)), { isTrusted: { enabledCommands: ['workbench.action.openSettings'] } }))
|
|
204
204
|
.appendMarkdown('\n\n')
|
|
205
205
|
.appendMarkdown(( localize(
|
|
206
|
-
|
|
206
|
+
8945,
|
|
207
207
|
"This feature is currently in preview. You can disable it anytime using the setting {0}.",
|
|
208
208
|
settingsCommandLink
|
|
209
209
|
)))));
|
|
210
210
|
description.appendChild(markdownResult.element);
|
|
211
211
|
const buttonContainer = append(welcomeContent, $('.mcp-welcome-button-container'));
|
|
212
212
|
const button = this._register(( new Button(buttonContainer, {
|
|
213
|
-
title: ( localize(
|
|
213
|
+
title: ( localize(8946, "Enable MCP Servers Marketplace")),
|
|
214
214
|
...defaultButtonStyles
|
|
215
215
|
})));
|
|
216
|
-
button.label = ( localize(
|
|
216
|
+
button.label = ( localize(8946, "Enable MCP Servers Marketplace"));
|
|
217
217
|
this._register(button.onDidClick(async () => {
|
|
218
218
|
const { result } = await this.dialogService.prompt({
|
|
219
219
|
type: 'info',
|
|
220
|
-
message: ( localize(
|
|
220
|
+
message: ( localize(8947, "Enable MCP Servers Marketplace?")),
|
|
221
221
|
custom: {
|
|
222
222
|
markdownDetails: [{
|
|
223
223
|
markdown: ( new MarkdownString(( localize(
|
|
224
|
-
|
|
224
|
+
8945,
|
|
225
225
|
"This feature is currently in preview. You can disable it anytime using the setting {0}.",
|
|
226
226
|
settingsCommandLink
|
|
227
227
|
)), { isTrusted: true }))
|
|
228
228
|
}]
|
|
229
229
|
},
|
|
230
230
|
buttons: [
|
|
231
|
-
{ label: ( localize(
|
|
232
|
-
{ label: ( localize(
|
|
231
|
+
{ label: ( localize(8948, "Enable")), run: () => true },
|
|
232
|
+
{ label: ( localize(8949, "Cancel")), run: () => false }
|
|
233
233
|
]
|
|
234
234
|
});
|
|
235
235
|
if (result) {
|
|
@@ -249,7 +249,7 @@ let McpServersListView = class McpServersListView extends AbstractExtensionsList
|
|
|
249
249
|
}
|
|
250
250
|
else if (count === 0) {
|
|
251
251
|
this.bodyTemplate.messageSeverityIcon.className = '';
|
|
252
|
-
this.bodyTemplate.messageBox.textContent = ( localize(
|
|
252
|
+
this.bodyTemplate.messageBox.textContent = ( localize(8950, "No MCP Servers found."));
|
|
253
253
|
}
|
|
254
254
|
if (this.bodyTemplate.messageBox.textContent) {
|
|
255
255
|
alert(this.bodyTemplate.messageBox.textContent);
|
|
@@ -445,16 +445,16 @@ class McpServersViewsContribution extends Disposable {
|
|
|
445
445
|
( Registry.as(Extensions.ViewsRegistry)).registerViews([
|
|
446
446
|
{
|
|
447
447
|
id: InstalledMcpServersViewId,
|
|
448
|
-
name: ( localize2(
|
|
448
|
+
name: ( localize2(8951, "MCP Servers - Installed")),
|
|
449
449
|
ctorDescriptor: ( new SyncDescriptor(McpServersListView, [{}])),
|
|
450
|
-
when: ( ContextKeyExpr.and(DefaultViewsContext, HasInstalledMcpServersContext)),
|
|
450
|
+
when: ( ContextKeyExpr.and(DefaultViewsContext, HasInstalledMcpServersContext, ( ChatContextKeys.Setup.hidden.negate()))),
|
|
451
451
|
weight: 40,
|
|
452
452
|
order: 4,
|
|
453
453
|
canToggleVisibility: true
|
|
454
454
|
},
|
|
455
455
|
{
|
|
456
456
|
id: 'workbench.views.mcp.default.marketplace',
|
|
457
|
-
name: ( localize2(
|
|
457
|
+
name: ( localize2(8952, "MCP Servers")),
|
|
458
458
|
ctorDescriptor: ( new SyncDescriptor(DefaultBrowseMcpServersView, [{}])),
|
|
459
459
|
when: ( ContextKeyExpr.and(DefaultViewsContext, ( HasInstalledMcpServersContext.toNegated()), ( ChatContextKeys.Setup.hidden.negate()), ( McpServersGalleryStatusContext.isEqualTo(McpGalleryManifestStatus.Available)), ( ContextKeyExpr.or(( ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceUrlConfig}`)), ( ProductQualityContext.notEqualsTo('stable')), ( ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceEnablementConfig}`)))))),
|
|
460
460
|
weight: 40,
|
|
@@ -463,13 +463,13 @@ class McpServersViewsContribution extends Disposable {
|
|
|
463
463
|
},
|
|
464
464
|
{
|
|
465
465
|
id: 'workbench.views.mcp.marketplace',
|
|
466
|
-
name: ( localize2(
|
|
466
|
+
name: ( localize2(8952, "MCP Servers")),
|
|
467
467
|
ctorDescriptor: ( new SyncDescriptor(McpServersListView, [{}])),
|
|
468
|
-
when: ( ContextKeyExpr.and(SearchMcpServersContext, ( McpServersGalleryStatusContext.isEqualTo(McpGalleryManifestStatus.Available)), ( ContextKeyExpr.or(( ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceUrlConfig}`)), ( ProductQualityContext.notEqualsTo('stable')), ( ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceEnablementConfig}`)))))),
|
|
468
|
+
when: ( ContextKeyExpr.and(SearchMcpServersContext, ( ChatContextKeys.Setup.hidden.negate()), ( McpServersGalleryStatusContext.isEqualTo(McpGalleryManifestStatus.Available)), ( ContextKeyExpr.or(( ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceUrlConfig}`)), ( ProductQualityContext.notEqualsTo('stable')), ( ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceEnablementConfig}`)))))),
|
|
469
469
|
},
|
|
470
470
|
{
|
|
471
471
|
id: 'workbench.views.mcp.default.welcomeView',
|
|
472
|
-
name: ( localize2(
|
|
472
|
+
name: ( localize2(8952, "MCP Servers")),
|
|
473
473
|
ctorDescriptor: ( new SyncDescriptor(DefaultBrowseMcpServersView, [{ showWelcome: true }])),
|
|
474
474
|
when: ( ContextKeyExpr.and(DefaultViewsContext, ( HasInstalledMcpServersContext.toNegated()), ( ChatContextKeys.Setup.hidden.negate()), ( McpServersGalleryStatusContext.isEqualTo(McpGalleryManifestStatus.Available)), ( ( ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceUrlConfig}`)).negate()), ( ProductQualityContext.isEqualTo('stable')), ( ( ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceEnablementConfig}`)).negate()))),
|
|
475
475
|
weight: 40,
|
|
@@ -478,9 +478,9 @@ class McpServersViewsContribution extends Disposable {
|
|
|
478
478
|
},
|
|
479
479
|
{
|
|
480
480
|
id: 'workbench.views.mcp.welcomeView',
|
|
481
|
-
name: ( localize2(
|
|
481
|
+
name: ( localize2(8952, "MCP Servers")),
|
|
482
482
|
ctorDescriptor: ( new SyncDescriptor(McpServersListView, [{ showWelcome: true }])),
|
|
483
|
-
when: ( ContextKeyExpr.and(SearchMcpServersContext, ( McpServersGalleryStatusContext.isEqualTo(McpGalleryManifestStatus.Available)), ( ( ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceUrlConfig}`)).negate()), ( ProductQualityContext.isEqualTo('stable')), ( ( ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceEnablementConfig}`)).negate()))),
|
|
483
|
+
when: ( ContextKeyExpr.and(SearchMcpServersContext, ( ChatContextKeys.Setup.hidden.negate()), ( McpServersGalleryStatusContext.isEqualTo(McpGalleryManifestStatus.Available)), ( ( ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceUrlConfig}`)).negate()), ( ProductQualityContext.isEqualTo('stable')), ( ( ContextKeyDefinedExpr.create(`config.${mcpGalleryServiceEnablementConfig}`)).negate()))),
|
|
484
484
|
}
|
|
485
485
|
], VIEW_CONTAINER);
|
|
486
486
|
}
|
|
@@ -10,11 +10,11 @@ import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/fi
|
|
|
10
10
|
import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
|
|
11
11
|
import { ILabelService } from "@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service";
|
|
12
12
|
import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
|
|
13
|
-
import { IGalleryMcpServer, IQueryOptions, IInstallableMcpServer, IGalleryMcpServerConfiguration } from "@codingame/monaco-vscode-
|
|
13
|
+
import { IGalleryMcpServer, IQueryOptions, IInstallableMcpServer, IGalleryMcpServerConfiguration } from "@codingame/monaco-vscode-api/vscode/vs/platform/mcp/common/mcpManagement";
|
|
14
14
|
import { IAllowedMcpServersService } from "@codingame/monaco-vscode-api/vscode/vs/platform/mcp/common/mcpManagement.service";
|
|
15
15
|
import { IMcpGalleryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/mcp/common/mcpManagement.service";
|
|
16
16
|
import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
|
|
17
|
-
import { IMcpServerConfiguration } from "@codingame/monaco-vscode-
|
|
17
|
+
import { IMcpServerConfiguration } from "@codingame/monaco-vscode-api/vscode/vs/platform/mcp/common/mcpPlatformTypes";
|
|
18
18
|
import { IProductService } from "@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service";
|
|
19
19
|
import { IUriIdentityService } from "@codingame/monaco-vscode-api/vscode/vs/platform/uriIdentity/common/uriIdentity.service";
|
|
20
20
|
import { IURLService } from "@codingame/monaco-vscode-api/vscode/vs/platform/url/common/url.service";
|
|
@@ -30,7 +30,7 @@ import { IMcpConfigPath, IWorkbenchMcpServer, McpServerInstallState, McpServerEn
|
|
|
30
30
|
import { IMcpWorkbenchService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes.service";
|
|
31
31
|
import { IMcpService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes.service";
|
|
32
32
|
import { IMcpGalleryManifestService } from "@codingame/monaco-vscode-api/vscode/vs/platform/mcp/common/mcpGalleryManifest.service";
|
|
33
|
-
import { IIterativePager } from "@codingame/monaco-vscode-
|
|
33
|
+
import { IIterativePager } from "@codingame/monaco-vscode-api/vscode/vs/base/common/paging";
|
|
34
34
|
import { IExtensionsWorkbenchService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions.service";
|
|
35
35
|
interface IMcpServerStateProvider<T> {
|
|
36
36
|
(mcpWorkbenchServer: McpWorkbenchServer): T;
|
|
@@ -14,24 +14,24 @@ import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/fi
|
|
|
14
14
|
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
15
15
|
import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service';
|
|
16
16
|
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
17
|
-
import { mcpAccessConfig, McpAccessValue } from '@codingame/monaco-vscode-
|
|
17
|
+
import { mcpAccessConfig, McpAccessValue } from '@codingame/monaco-vscode-api/vscode/vs/platform/mcp/common/mcpManagement';
|
|
18
18
|
import { IMcpGalleryService, IAllowedMcpServersService } from '@codingame/monaco-vscode-api/vscode/vs/platform/mcp/common/mcpManagement.service';
|
|
19
19
|
import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
|
|
20
|
-
import { McpServerType } from '@codingame/monaco-vscode-
|
|
20
|
+
import { McpServerType } from '@codingame/monaco-vscode-api/vscode/vs/platform/mcp/common/mcpPlatformTypes';
|
|
21
21
|
import { IProductService } from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service';
|
|
22
22
|
import { StorageScope } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
|
|
23
23
|
import { IUriIdentityService } from '@codingame/monaco-vscode-api/vscode/vs/platform/uriIdentity/common/uriIdentity.service';
|
|
24
24
|
import { IURLService } from '@codingame/monaco-vscode-api/vscode/vs/platform/url/common/url.service';
|
|
25
25
|
import { IUserDataProfilesService } from '@codingame/monaco-vscode-api/vscode/vs/platform/userDataProfile/common/userDataProfile.service';
|
|
26
26
|
import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
|
|
27
|
-
import { WORKSPACE_STANDALONE_CONFIGURATIONS, MCP_CONFIGURATION_KEY } from '@codingame/monaco-vscode-
|
|
27
|
+
import { WORKSPACE_STANDALONE_CONFIGURATIONS, MCP_CONFIGURATION_KEY } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/configuration/common/configuration';
|
|
28
28
|
import { ACTIVE_GROUP } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService';
|
|
29
29
|
import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
|
|
30
30
|
import { IWorkbenchEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/common/environmentService.service';
|
|
31
31
|
import { LocalMcpServerScope, USER_CONFIG_ID, REMOTE_USER_CONFIG_ID, WORKSPACE_CONFIG_ID, WORKSPACE_FOLDER_CONFIG_ID_PREFIX } from '../../../services/mcp/common/mcpWorkbenchManagementService.js';
|
|
32
32
|
import { IWorkbenchMcpManagementService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/mcp/common/mcpWorkbenchManagementService.service';
|
|
33
33
|
import { IRemoteAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/remote/common/remoteAgentService.service';
|
|
34
|
-
import { mcpConfigurationSection } from '@codingame/monaco-vscode-
|
|
34
|
+
import { mcpConfigurationSection } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpConfiguration';
|
|
35
35
|
import { McpServerEnablementState, McpCollectionSortOrder, McpServerInstallState, McpServersGalleryStatusContext, HasInstalledMcpServersContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes';
|
|
36
36
|
import { IMcpService, IMcpWorkbenchService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes.service';
|
|
37
37
|
import { McpServerEditorInput } from './mcpServerEditorInput.js';
|
|
@@ -366,7 +366,7 @@ let McpWorkbenchService = class McpWorkbenchService extends Disposable {
|
|
|
366
366
|
const existing = result.get(server.name);
|
|
367
367
|
if (existing) {
|
|
368
368
|
this.logService.warn(( localize(
|
|
369
|
-
|
|
369
|
+
8953,
|
|
370
370
|
"Overwriting mcp server '{0}' from {1} with {2}.",
|
|
371
371
|
server.name,
|
|
372
372
|
server.mcpResource.path,
|
|
@@ -379,7 +379,7 @@ let McpWorkbenchService = class McpWorkbenchService extends Disposable {
|
|
|
379
379
|
const existing = result.get(server.name);
|
|
380
380
|
if (existing) {
|
|
381
381
|
this.logService.warn(( localize(
|
|
382
|
-
|
|
382
|
+
8953,
|
|
383
383
|
"Overwriting mcp server '{0}' from {1} with {2}.",
|
|
384
384
|
server.name,
|
|
385
385
|
server.mcpResource.path,
|
|
@@ -392,7 +392,7 @@ let McpWorkbenchService = class McpWorkbenchService extends Disposable {
|
|
|
392
392
|
}
|
|
393
393
|
canInstall(mcpServer) {
|
|
394
394
|
if (!(mcpServer instanceof McpWorkbenchServer)) {
|
|
395
|
-
return ( new MarkdownString()).appendText(( localize(
|
|
395
|
+
return ( new MarkdownString()).appendText(( localize(8954, "The provided object is not an mcp server.")));
|
|
396
396
|
}
|
|
397
397
|
if (mcpServer.gallery) {
|
|
398
398
|
const result = this.mcpManagementService.canInstall(mcpServer.gallery);
|
|
@@ -409,7 +409,7 @@ let McpWorkbenchService = class McpWorkbenchService extends Disposable {
|
|
|
409
409
|
return result;
|
|
410
410
|
}
|
|
411
411
|
return ( new MarkdownString()).appendText(( localize(
|
|
412
|
-
|
|
412
|
+
8955,
|
|
413
413
|
"Cannot install the '{0}' MCP Server because it is not available in this setup.",
|
|
414
414
|
mcpServer.label
|
|
415
415
|
)));
|
|
@@ -512,7 +512,7 @@ let McpWorkbenchService = class McpWorkbenchService extends Disposable {
|
|
|
512
512
|
id: USER_CONFIG_ID,
|
|
513
513
|
key: 'userLocalValue',
|
|
514
514
|
target: ConfigurationTarget.USER_LOCAL,
|
|
515
|
-
label: ( localize(
|
|
515
|
+
label: ( localize(8956, 'Global in {0}', this.productService.nameShort)),
|
|
516
516
|
scope: StorageScope.PROFILE,
|
|
517
517
|
order: McpCollectionSortOrder.User,
|
|
518
518
|
uri: mcpResource,
|
|
@@ -671,7 +671,7 @@ let McpWorkbenchService = class McpWorkbenchService extends Disposable {
|
|
|
671
671
|
message: {
|
|
672
672
|
severity: Severity.Warning,
|
|
673
673
|
text: ( new MarkdownString(( localize(
|
|
674
|
-
|
|
674
|
+
8957,
|
|
675
675
|
"This MCP Server is disabled because MCP servers are configured to be disabled in the Editor. Please check your [settings]({0}).",
|
|
676
676
|
settingsCommandLink
|
|
677
677
|
))))
|
|
@@ -685,7 +685,7 @@ let McpWorkbenchService = class McpWorkbenchService extends Disposable {
|
|
|
685
685
|
message: {
|
|
686
686
|
severity: Severity.Warning,
|
|
687
687
|
text: ( new MarkdownString(( localize(
|
|
688
|
-
|
|
688
|
+
8958,
|
|
689
689
|
"This MCP Server is disabled because it is configured to be disabled in the Editor. Please check your [settings]({0}).",
|
|
690
690
|
settingsCommandLink
|
|
691
691
|
))))
|
|
@@ -699,7 +699,7 @@ let McpWorkbenchService = class McpWorkbenchService extends Disposable {
|
|
|
699
699
|
message: {
|
|
700
700
|
severity: Severity.Warning,
|
|
701
701
|
text: ( new MarkdownString(( localize(
|
|
702
|
-
|
|
702
|
+
8958,
|
|
703
703
|
"This MCP Server is disabled because it is configured to be disabled in the Editor. Please check your [settings]({0}).",
|
|
704
704
|
settingsCommandLink
|
|
705
705
|
))))
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { IViewsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/views/common/viewsService.service";
|
|
2
|
-
import { IChatWidget } from "@codingame/monaco-vscode-
|
|
2
|
+
import { IChatWidget } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat";
|
|
3
3
|
import { IChatWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service";
|
|
4
4
|
export declare function openPanelChatAndGetWidget(viewsService: IViewsService, chatService: IChatWidgetService): Promise<IChatWidget | undefined>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
import { raceTimeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
3
3
|
import { Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
4
|
-
import { ChatViewId } from '@codingame/monaco-vscode-
|
|
4
|
+
import { ChatViewId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat';
|
|
5
5
|
import { ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
6
6
|
|
|
7
7
|
async function openPanelChatAndGetWidget(viewsService, chatService) {
|
|
@@ -11,7 +11,7 @@ import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode
|
|
|
11
11
|
import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
|
|
12
12
|
import { IExtensionService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service';
|
|
13
13
|
import { ExtensionsRegistry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensionsRegistry';
|
|
14
|
-
import { mcpContributionPoint, mcpActivationEvent } from '@codingame/monaco-vscode-
|
|
14
|
+
import { mcpContributionPoint, mcpActivationEvent } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpConfiguration';
|
|
15
15
|
import { IMcpRegistry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpRegistryTypes.service';
|
|
16
16
|
import { McpServerDefinition, extensionPrefixedIdentifier, McpServerTrust } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes';
|
|
17
17
|
import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
|
|
@@ -135,20 +135,20 @@ let ExtensionMcpDiscovery = ExtensionMcpDiscovery_1 = class ExtensionMcpDiscover
|
|
|
135
135
|
}
|
|
136
136
|
static _validate(user) {
|
|
137
137
|
if (!Array.isArray(user.value)) {
|
|
138
|
-
user.collector.error(( localize(
|
|
138
|
+
user.collector.error(( localize(8959, "Expected an array of MCP collections")));
|
|
139
139
|
return false;
|
|
140
140
|
}
|
|
141
141
|
for (const contribution of user.value) {
|
|
142
142
|
if (typeof contribution.id !== 'string' || isFalsyOrWhitespace(contribution.id)) {
|
|
143
|
-
user.collector.error(( localize(
|
|
143
|
+
user.collector.error(( localize(8960, "Expected 'id' to be a non-empty string.")));
|
|
144
144
|
return false;
|
|
145
145
|
}
|
|
146
146
|
if (typeof contribution.label !== 'string' || isFalsyOrWhitespace(contribution.label)) {
|
|
147
|
-
user.collector.error(( localize(
|
|
147
|
+
user.collector.error(( localize(8961, "Expected 'label' to be a non-empty string.")));
|
|
148
148
|
return false;
|
|
149
149
|
}
|
|
150
150
|
if (contribution.when !== undefined && (typeof contribution.when !== 'string' || isFalsyOrWhitespace(contribution.when))) {
|
|
151
|
-
user.collector.error(( localize(
|
|
151
|
+
user.collector.error(( localize(8962, "Expected 'when' to be a non-empty string.")));
|
|
152
152
|
return false;
|
|
153
153
|
}
|
|
154
154
|
}
|
package/vscode/src/vs/workbench/contrib/mcp/common/discovery/installedMcpServersDiscovery.js
CHANGED
|
@@ -11,7 +11,7 @@ import { ConfigurationTarget } from '@codingame/monaco-vscode-api/vscode/vs/plat
|
|
|
11
11
|
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
12
12
|
import { StorageScope } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
|
|
13
13
|
import { getMcpServerMapping } from '../mcpConfigFileUtils.js';
|
|
14
|
-
import { mcpConfigurationSection } from '@codingame/monaco-vscode-
|
|
14
|
+
import { mcpConfigurationSection } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpConfiguration';
|
|
15
15
|
import { IMcpRegistry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpRegistryTypes.service';
|
|
16
16
|
import { McpServerTransportType, McpServerLaunch, McpServerTrust, McpCollectionDefinition, McpServerDefinition } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes';
|
|
17
17
|
import { IMcpWorkbenchService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes.service';
|
package/vscode/src/vs/workbench/contrib/mcp/common/discovery/nativeMcpDiscoveryAbstract.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/pl
|
|
|
8
8
|
import { ILabelService } from "@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service";
|
|
9
9
|
import { INativeMcpDiscoveryData } from "../../../../../platform/mcp/common/nativeMcpDiscoveryHelper.js";
|
|
10
10
|
import { Dto } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/proxyIdentifier";
|
|
11
|
-
import { DiscoverySource } from "@codingame/monaco-vscode-
|
|
11
|
+
import { DiscoverySource } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpConfiguration";
|
|
12
12
|
import { IMcpRegistry } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpRegistryTypes.service";
|
|
13
13
|
import { McpCollectionDefinition, McpServerDefinition } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes";
|
|
14
14
|
import { IMcpDiscovery } from "./mcpDiscovery.js";
|
|
@@ -13,7 +13,7 @@ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/pl
|
|
|
13
13
|
import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service';
|
|
14
14
|
import { observableConfigValue } from '@codingame/monaco-vscode-api/vscode/vs/platform/observable/common/platformObservableUtils';
|
|
15
15
|
import { StorageScope } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
|
|
16
|
-
import { mcpDiscoverySection, discoverySourceLabel } from '@codingame/monaco-vscode-
|
|
16
|
+
import { mcpDiscoverySection, discoverySourceLabel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpConfiguration';
|
|
17
17
|
import { IMcpRegistry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpRegistryTypes.service';
|
|
18
18
|
import { McpCollectionSortOrder, McpServerTrust } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes';
|
|
19
19
|
import { ClaudeDesktopMpcDiscoveryAdapter, CursorDesktopMpcDiscoveryAdapter, WindsurfDesktopMpcDiscoveryAdapter } from './nativeMcpDiscoveryAdapters.js';
|
|
@@ -83,7 +83,7 @@ let NativeFilesystemMcpDiscovery = class NativeFilesystemMcpDiscovery extends Fi
|
|
|
83
83
|
this.suffix = '';
|
|
84
84
|
if (remoteAuthority) {
|
|
85
85
|
this.suffix = ' ' + ( localize(
|
|
86
|
-
|
|
86
|
+
8963,
|
|
87
87
|
' on {0}',
|
|
88
88
|
labelService.getHostLabel(Schemas.vscodeRemote, remoteAuthority)
|
|
89
89
|
));
|
package/vscode/src/vs/workbench/contrib/mcp/common/discovery/nativeMcpDiscoveryAdapters.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { VSBuffer } from "@codingame/monaco-vscode-api/vscode/vs/base/common/buf
|
|
|
2
2
|
import { Mutable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/types";
|
|
3
3
|
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
4
4
|
import { INativeMcpDiscoveryData } from "../../../../../platform/mcp/common/nativeMcpDiscoveryHelper.js";
|
|
5
|
-
import { DiscoverySource } from "@codingame/monaco-vscode-
|
|
5
|
+
import { DiscoverySource } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpConfiguration";
|
|
6
6
|
import { McpCollectionSortOrder, McpServerDefinition } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes";
|
|
7
7
|
export interface NativeMpcDiscoveryAdapter {
|
|
8
8
|
readonly remoteAuthority: string | null;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
import { Platform } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
|
|
3
3
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
4
|
-
import { DiscoverySource } from '@codingame/monaco-vscode-
|
|
4
|
+
import { DiscoverySource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpConfiguration';
|
|
5
5
|
import { McpServerTransportType, McpServerLaunch, McpCollectionSortOrder } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes';
|
|
6
6
|
|
|
7
7
|
async function claudeConfigToServerDefinition(idPrefix, contents, cwd) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
-
import { ProxyChannel } from '@codingame/monaco-vscode-
|
|
3
|
+
import { ProxyChannel } from '@codingame/monaco-vscode-api/vscode/vs/base/parts/ipc/common/ipc';
|
|
4
4
|
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
5
5
|
import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
|
|
6
6
|
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
package/vscode/src/vs/workbench/contrib/mcp/common/discovery/workspaceMcpDiscoveryAdapter.js
CHANGED
|
@@ -10,7 +10,7 @@ import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/fi
|
|
|
10
10
|
import { StorageScope } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
|
|
11
11
|
import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
|
|
12
12
|
import { IRemoteAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/remote/common/remoteAgentService.service';
|
|
13
|
-
import { DiscoverySource } from '@codingame/monaco-vscode-
|
|
13
|
+
import { DiscoverySource } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpConfiguration';
|
|
14
14
|
import { IMcpRegistry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpRegistryTypes.service';
|
|
15
15
|
import { McpCollectionSortOrder, McpServerTrust } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpTypes';
|
|
16
16
|
import { FilesystemMcpDiscovery } from './nativeMcpDiscoveryAbstract.js';
|
|
@@ -15,19 +15,19 @@ var McpContextKeys;
|
|
|
15
15
|
McpContextKeys.serverCount = ( new RawContextKey(
|
|
16
16
|
'mcp.serverCount',
|
|
17
17
|
undefined,
|
|
18
|
-
{ type: 'number', description: ( localize(
|
|
18
|
+
{ type: 'number', description: ( localize(8995, "Context key that has the number of registered MCP servers")) }
|
|
19
19
|
));
|
|
20
20
|
McpContextKeys.hasUnknownTools = ( new RawContextKey(
|
|
21
21
|
'mcp.hasUnknownTools',
|
|
22
22
|
undefined,
|
|
23
|
-
{ type: 'boolean', description: ( localize(
|
|
23
|
+
{ type: 'boolean', description: ( localize(8996, "Indicates whether there are MCP servers with unknown tools.")) }
|
|
24
24
|
));
|
|
25
25
|
McpContextKeys.hasServersWithErrors = ( new RawContextKey(
|
|
26
26
|
'mcp.hasServersWithErrors',
|
|
27
27
|
undefined,
|
|
28
|
-
{ type: 'boolean', description: ( localize(
|
|
28
|
+
{ type: 'boolean', description: ( localize(8997, "Indicates whether there are any MCP servers with errors.")) }
|
|
29
29
|
));
|
|
30
|
-
McpContextKeys.toolsCount = ( new RawContextKey('mcp.toolsCount', undefined, { type: 'number', description: ( localize(
|
|
30
|
+
McpContextKeys.toolsCount = ( new RawContextKey('mcp.toolsCount', undefined, { type: 'number', description: ( localize(8998, "Context key that has the number of registered MCP tools")) }));
|
|
31
31
|
})(McpContextKeys || (McpContextKeys = {}));
|
|
32
32
|
let McpContextKeysController = class McpContextKeysController extends Disposable {
|
|
33
33
|
static { this.ID = 'workbench.contrib.mcp.contextKey'; }
|
|
@@ -9,6 +9,7 @@ import { equals } from '@codingame/monaco-vscode-api/vscode/vs/base/common/objec
|
|
|
9
9
|
import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
|
|
10
10
|
import '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
11
11
|
import '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
12
|
+
import { FileSystemProviderCapabilities } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files';
|
|
12
13
|
import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
|
|
13
14
|
import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
|
|
14
15
|
import { IMcpRegistry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/mcp/common/mcpRegistryTypes.service';
|
|
@@ -64,8 +65,9 @@ let McpDevModeServerAttache = class McpDevModeServerAttache extends Disposable {
|
|
|
64
65
|
const includes = pattern.filter(p => !p.startsWith('!'));
|
|
65
66
|
const excludes = ( pattern.filter(p => p.startsWith('!')).map(p => p.slice(1)));
|
|
66
67
|
reader.store.add(fileService.watch(wf, { includes, excludes, recursive: true }));
|
|
67
|
-
const
|
|
68
|
-
const
|
|
68
|
+
const ignoreCase = !fileService.hasCapability(wf, FileSystemProviderCapabilities.PathCaseSensitive);
|
|
69
|
+
const includeParse = ( includes.map(p => parse({ base: wf.fsPath, pattern: p }, { ignoreCase })));
|
|
70
|
+
const excludeParse = ( excludes.map(p => parse({ base: wf.fsPath, pattern: p }, { ignoreCase })));
|
|
69
71
|
reader.store.add(fileService.onDidFilesChange(e => {
|
|
70
72
|
for (const change of [e.rawAdded, e.rawDeleted, e.rawUpdated]) {
|
|
71
73
|
for (const uri of change) {
|