diff --git a/src/transports/factory.ts b/src/transports/factory.ts index d2a632e..c229a9c 100644 --- a/src/transports/factory.ts +++ b/src/transports/factory.ts @@ -22,14 +22,42 @@ export class TransportFactory { } as { command: string; args?: string[]; env?: Record; cwd?: string }; return new StdioClientTransport(stdioParams) as unknown as Transport; } - case 'http': + case 'http': { + const httpHeaders: Record = {}; + + if (transportConfig.apiKey) { + httpHeaders['X-API-Key'] = transportConfig.apiKey; + } + + if (transportConfig.headers) { + Object.assign(httpHeaders, transportConfig.headers); + } + return new StreamableHTTPClientTransport( - new URL(transportConfig.url) + new URL(transportConfig.url), + Object.keys(httpHeaders).length > 0 ? { + requestInit: { headers: httpHeaders } + } : undefined ) as unknown as Transport; - case 'sse': + } + case 'sse': { + const sseHeaders: Record = {}; + + if (transportConfig.apiKey) { + sseHeaders['X-API-Key'] = transportConfig.apiKey; + } + + if (transportConfig.headers) { + Object.assign(sseHeaders, transportConfig.headers); + } + return new SSEClientTransport( - new URL(transportConfig.sseUrl) + new URL(transportConfig.sseUrl), + Object.keys(sseHeaders).length > 0 ? { + requestInit: { headers: sseHeaders } + } : undefined ) as unknown as Transport; + } case 'websocket': return new WebSocketClientTransport( new URL(transportConfig.url)