/** * IClient — Minimal interface for MCP Client-compatible objects. * * The MCP SDK `Client` class satisfies this interface structurally, * so existing `Client` instances can be used directly. This interface * enables duck-typed alternatives (like `GatewayClient`) that don't * need to extend the SDK's concrete `Client` class. */ import type { CallToolRequest, CallToolResult, CompatibilityCallToolResult, GetPromptRequest, GetPromptResult, ListPromptsRequest, ListPromptsResult, ListResourcesRequest, ListResourcesResult, ListResourceTemplatesRequest, ListResourceTemplatesResult, ListToolsRequest, ListToolsResult, ReadResourceRequest, ReadResourceResult, ServerCapabilities, } from "@modelcontextprotocol/sdk/types.js"; import type { RequestOptions } from "@modelcontextprotocol/sdk/shared/protocol.js"; export interface IClient { listTools( params?: ListToolsRequest["params"], options?: RequestOptions, ): Promise; callTool( params: CallToolRequest["params"], resultSchema?: unknown, options?: RequestOptions, ): Promise; listResources( params?: ListResourcesRequest["params"], options?: RequestOptions, ): Promise; readResource( params: ReadResourceRequest["params"], options?: RequestOptions, ): Promise; listResourceTemplates( params?: ListResourceTemplatesRequest["params"], options?: RequestOptions, ): Promise; listPrompts( params?: ListPromptsRequest["params"], options?: RequestOptions, ): Promise; getPrompt( params: GetPromptRequest["params"], options?: RequestOptions, ): Promise; getServerCapabilities(): ServerCapabilities | undefined; getInstructions(): string | undefined; close(): Promise; }