import type { ToolDef } from '../api/types.js'; /** * Cliente MCP stdio minimalista. Habla JSON-RPC 2.0 con un servidor MCP * spawneado como subproceso. Implementa solo lo necesario para exponer tools: * * - initialize → handshake * - notifications/initialized → confirma handshake * - tools/list → recupera tools exportadas * - tools/call → ejecuta tool remota * * No soporta resources, prompts, sampling ni logging. */ export interface McpServerConfig { /** Nombre lógico del server (prefijo para las tools). */ name: string; /** Comando a spawnear. */ command: string; /** Argumentos del comando. */ args?: string[]; /** Variables de entorno adicionales. */ env?: Record; } export declare class McpClient { readonly config: McpServerConfig; private proc; private buffer; private nextId; private pending; private tools; constructor(config: McpServerConfig); start(): Promise; /** * Tools expuestas por este server, con el prefijo `__` aplicado. * Usamos `__` en lugar de `:` porque Anthropic rechaza nombres con `:` * (su regex acepta solo `^[a-zA-Z0-9_-]{1,128}$`). OpenAI y Google no son * estrictos pero unificamos por simplicidad. El nombre también se sanea: * cualquier char no válido se reemplaza por `_` para sobrevivir a servers * que exponen tools con caracteres raros. */ getTools(): ToolDef[]; /** * Devuelve el nombre ORIGINAL (antes de sanear) de una tool dado su nombre * "exportado" (con `__`). Necesario para invocar la tool * en el server con el nombre real que el server conoce. */ findOriginalToolName(exportedName: string): string | null; /** Llama una tool remota (se le pasa el nombre sin el prefijo). */ callTool(localName: string, input: Record): Promise; stop(): void; private request; private notify; private send; private onData; } //# sourceMappingURL=client.d.ts.map