/** * MCP Tool Handler * * Handles execution of MCP tools (mcp_*) from allowed_tools. * - Checks MCP availability before execution * - Triggers approval workflow on first use * - Executes tool calls via MCPClientManager * - Logs results to processing feedback and audit log */ import { type MCPTool } from '../types/command.types.js'; import type { MCPApprovalCacheService } from './mcp-approval-cache.service.js'; import type { MCPApprovalWorkflow } from './mcp-approval-workflow.js'; import type { MCPAuditLoggerService } from './mcp-audit-logger.service.js'; import type { MCPAvailabilityService } from './mcp-availability.service.js'; import type { MCPClientManagerService } from './mcp-client-manager.service.js'; /** * Result of MCP tool execution */ export interface MCPToolExecutionResult { /** Tool execution duration in ms */ durationMs: number; /** Error message if failed */ error?: string; /** Tool output */ output: unknown; /** Server ID */ serverId: string; /** Whether execution succeeded */ success: boolean; /** Tool name */ toolName: string; } /** * MCP Tool Handler */ export declare class MCPToolHandler { private clientManager; private availabilityService; private approvalCache; private auditLogger; private approvalWorkflow; /** Track which servers have been connected in this session */ private connectedServers; constructor(clientManager: MCPClientManagerService, availabilityService: MCPAvailabilityService, approvalCache: MCPApprovalCacheService, auditLogger: MCPAuditLoggerService, approvalWorkflow: MCPApprovalWorkflow); /** * Check availability of MCP tools and display status * Called at command start to show which MCPs are available */ checkAndDisplayAvailability(mcpTools: MCPTool[]): Promise; /** * Execute an MCP tool * Handles connection, approval, and execution */ executeTool(mcpTool: MCPTool, toolName: string, args: Record): Promise; /** * Ensure a server is connected, handling approval if needed */ private ensureServerConnected; /** * Request user approval for MCP server connection */ private requestApproval; /** * Get list of available tools from a connected MCP server */ getAvailableTools(mcpTool: MCPTool): string[]; /** * Check if a server is currently connected */ isServerConnected(mcpTool: MCPTool): boolean; /** * Disconnect all connected servers */ disconnectAll(): Promise; /** * Reset state for new command execution */ reset(): void; } /** * Get the MCP Tool Handler instance */ export declare function getMCPToolHandler(clientManager: MCPClientManagerService, availabilityService: MCPAvailabilityService, approvalCache: MCPApprovalCacheService, auditLogger: MCPAuditLoggerService, approvalWorkflow: MCPApprovalWorkflow): MCPToolHandler; /** * Reset the singleton (for testing) */ export declare function resetMCPToolHandler(): void; //# sourceMappingURL=mcp-tool-handler.d.ts.map