/** * MCP Manager - Manages multiple MCP server connections * * Provides a high-level interface for: * - Managing multiple MCP servers * - Discovering and registering tools from servers * - Handling server lifecycle (connect, disconnect, reconnect) */ import type { Tool } from '../tools/index.js'; import { DefaultToolRegistry } from '../tools/index.js'; import { MCPClient } from './client.js'; import type { MCPServerConfig, MCPManagerOptions, MCPClientEventHandler } from './types.js'; /** * MCP Manager for managing multiple MCP server connections * * @example * ```typescript * const manager = new MCPManager(); * * // Add servers * await manager.addServer({ * name: 'filesystem', * transport: 'stdio', * command: 'npx', * args: ['-y', '@modelcontextprotocol/server-filesystem', '/tmp'], * }); * * // Discover and get tools * const tools = await manager.discoverTools(); * * // Use with agent * const agent = new Agent({ * provider: claude, * tools: [...builtinTools, ...tools], * }); * * // Cleanup * await manager.disconnectAll(); * ``` */ export declare class MCPManager { private readonly clients; private toolRegistry; private readonly toolPrefix; private readonly autoConnect; private readonly eventHandlers; constructor(options?: MCPManagerOptions); /** * Set a tool registry for automatic tool registration * When set, tools from MCP servers will be automatically registered */ setToolRegistry(registry: DefaultToolRegistry): void; /** * Add an MCP server * * @param config Server configuration * @returns The created MCPClient * @throws MCPError if server with same name already exists */ addServer(config: MCPServerConfig): Promise; /** * Remove an MCP server * * @param name Server name * @throws MCPError if server not found */ removeServer(name: string): Promise; /** * Get an MCP client by name */ getServer(name: string): MCPClient | undefined; /** * Get all MCP clients */ getServers(): MCPClient[]; /** * Get all server names */ getServerNames(): string[]; /** * Check if a server exists */ hasServer(name: string): boolean; /** * Discover tools from all connected servers * * @returns Array of converted tools ready for registration */ discoverTools(): Promise; /** * Discover tools from a specific server */ discoverToolsFrom(serverName: string): Promise; /** * Refresh tools from servers and update the tool registry * * @param serverName Optional server name to refresh. If not provided, refreshes all. */ refreshTools(serverName?: string): Promise; /** * Get raw MCP tool definitions from a server */ private getMCPTools; /** * Connect all servers */ connectAll(): Promise; /** * Disconnect all servers */ disconnectAll(): Promise; /** * Register an event handler */ onEvent(handler: MCPClientEventHandler): () => void; /** * Emit an event to all handlers */ private emit; }