import { injectable } from "@codemation/core"; import type { MCPClient } from "@ai-sdk/mcp"; export type McpClientOpenArgs = Readonly<{ url: string; headers: Record; }>; export interface McpClientFactory { open(args: McpClientOpenArgs): Promise; } @injectable() export class DefaultMcpClientFactory implements McpClientFactory { async open(args: McpClientOpenArgs): Promise { const { experimental_createMCPClient } = await import("@ai-sdk/mcp"); return experimental_createMCPClient({ transport: { type: "http", url: args.url, headers: args.headers, }, }); } }