Path: blob/main/extensions/copilot/src/platform/mcp/common/mcpService.ts
13401 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 type { Event, McpGateway, McpServerDefinition } from 'vscode';6import { createServiceIdentifier } from '../../../util/common/services';7import { Emitter } from '../../../util/vs/base/common/event';8import { DisposableStore, IDisposable } from '../../../util/vs/base/common/lifecycle';9import { URI } from '../../../util/vs/base/common/uri';1011export const IMcpService = createServiceIdentifier<IMcpService>('IMcpService');1213export interface IMcpService {14readonly _serviceBrand: undefined;15readonly mcpServerDefinitions: readonly McpServerDefinition[];16readonly onDidChangeMcpServerDefinitions: Event<void>;17startMcpGateway(resource: URI): Promise<McpGateway | undefined>;18}1920export abstract class AbstractMcpService implements IMcpService {21declare readonly _serviceBrand: undefined;22abstract readonly mcpServerDefinitions: readonly McpServerDefinition[];23abstract readonly onDidChangeMcpServerDefinitions: Event<void>;24abstract startMcpGateway(resource: URI): Promise<McpGateway | undefined>;25}2627export class NullMcpService extends AbstractMcpService implements IDisposable {28private readonly disposables = new DisposableStore();2930readonly mcpServerDefinitions: McpServerDefinition[] = [];31readonly onDidChangeMcpServerDefinitions: Event<void> = this.disposables.add(new Emitter<void>()).event;32async startMcpGateway(_resource: URI): Promise<McpGateway | undefined> {33return undefined;34}35public dispose() {36this.disposables.dispose();37}38}394041