/** * The following code is modified based on * https://github.com/CherryHQ/cherry-studio/blob/main/src/main/services/MCPService.ts * * Apache-2.0 License * Copyright (c) 2024 Cherry Studio * https://github.com/CherryHQ/cherry-studio/blob/main/LICENSE */ import { EventEmitter } from 'node:events'; import { type Tool, CompatibilityCallToolResultSchema } from '@modelcontextprotocol/sdk/types.js'; import { z } from 'zod'; import type { MCPServer } from '@agent-infra/mcp-shared/client'; export { type MCPServer }; export interface MCPTool extends Tool { id: string; serverName: string; } export interface MCPClientOptions { isDebug?: boolean; /** Default timeout for all tool calls in seconds, defaults to 60s */ defaultTimeout?: number; } export declare class MCPClient extends EventEmitter { private activeServers; private clients; private initialized; private initPromise; private store; private isDebug; private defaultTimeout; constructor(servers: MCPServer[], options?: MCPClientOptions); private log; private filterItems; private getServersFromStore; init(): Promise; private ensureInitialized; /** * Get enhanced PATH including common tool locations */ private getEnhancedPath; activate(server: MCPServer): Promise; load(servers: MCPServer[]): Promise; listAvailableServices(): Promise[]>; addServer(server: MCPServer): Promise; getServer(name: ServerNames): Promise | undefined>; deactivate(name: ServerNames): Promise; updateServer(server: MCPServer): Promise; deleteServer(serverName: ServerNames): Promise; setServerActive(params: { name: ServerNames; isActive: boolean; }): Promise; checkServerStatus(server: MCPServer): Promise; listTools(serverName?: ServerNames): Promise; listPrompts(serverName?: ServerNames): Promise; callTool(params: { client: ServerNames; name: string; args: any; }): Promise>; cleanup(): Promise; }