Path: blob/main/src/vs/platform/mcp/common/mcpGalleryManifestService.ts
3294 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { Event } from '../../../base/common/event.js';6import { Disposable } from '../../../base/common/lifecycle.js';7import { IProductService } from '../../product/common/productService.js';8import { McpGalleryResourceType, IMcpGalleryManifest, IMcpGalleryManifestService, McpGalleryManifestStatus } from './mcpGalleryManifest.js';910export class McpGalleryManifestService extends Disposable implements IMcpGalleryManifestService {1112readonly _serviceBrand: undefined;13readonly onDidChangeMcpGalleryManifest = Event.None;14readonly onDidChangeMcpGalleryManifestStatus = Event.None;1516get mcpGalleryManifestStatus(): McpGalleryManifestStatus {17return !!this.productService.mcpGallery?.serviceUrl ? McpGalleryManifestStatus.Available : McpGalleryManifestStatus.Unavailable;18}1920constructor(21@IProductService protected readonly productService: IProductService,22) {23super();24}2526async getMcpGalleryManifest(): Promise<IMcpGalleryManifest | null> {27if (!this.productService.mcpGallery) {28return null;29}30return this.createMcpGalleryManifest(this.productService.mcpGallery.serviceUrl);31}3233protected createMcpGalleryManifest(url: string): IMcpGalleryManifest {34url = url.endsWith('/') ? url.slice(0, -1) : url;35const isVSCodeGalleryUrl = this.productService.extensionsGallery?.mcpUrl === url;36const version = isVSCodeGalleryUrl ? undefined : 'v0';37const serversUrl = isVSCodeGalleryUrl ? url : `${url}/${version}/servers`;38const resources = [39{40id: serversUrl,41type: McpGalleryResourceType.McpQueryService42}43];44if (!isVSCodeGalleryUrl) {45resources.push({46id: `${serversUrl}/{id}`,47type: McpGalleryResourceType.McpServerManifestUri48});49}50return {51version,52url,53resources54};55}56}575859