import { MCPInterface, MCPTool, MCPToolCallResult, MCPToolComponentProps } from '../../types' import { BaseExtension, ExtensionTypeEnum } from '../extension' import type { ComponentType } from 'react' /** * MCP (Model Context Protocol) extension for managing tools and server communication. * @extends BaseExtension */ export abstract class MCPExtension extends BaseExtension implements MCPInterface { /** * MCP extension type. */ type(): ExtensionTypeEnum | undefined { return ExtensionTypeEnum.MCP } abstract getTools(): Promise abstract callTool(toolName: string, args: Record): Promise abstract getConnectedServers(): Promise abstract refreshTools(): Promise abstract isHealthy(): Promise /** * Optional method to provide a custom UI component for tools * @returns A React component or null if no custom component is provided */ getToolComponent?(): ComponentType | null /** * Optional method to get the list of tool names that should be disabled by default * @returns Array of tool names that should be disabled by default for new users */ getDefaultDisabledTools?(): Promise }