From f9c9a6510f006a475eb05cc9629a196734a5412f Mon Sep 17 00:00:00 2001 From: standujar Date: Mon, 6 Oct 2025 20:34:46 +0200 Subject: [PATCH 1/3] fix: pass headers correctly to HTTP/SSE transports --- src/transports/factory.ts | 41 +++++++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/src/transports/factory.ts b/src/transports/factory.ts index d2a632e..8acc4b7 100644 --- a/src/transports/factory.ts +++ b/src/transports/factory.ts @@ -22,14 +22,47 @@ 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 = {}; + + // Add API key if provided + if (transportConfig.apiKey) { + httpHeaders['X-API-Key'] = transportConfig.apiKey; + } + + // Merge custom headers + 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 = {}; + + // Add API key if provided + if (transportConfig.apiKey) { + sseHeaders['X-API-Key'] = transportConfig.apiKey; + } + + // Merge custom headers + if (transportConfig.headers) { + Object.assign(sseHeaders, transportConfig.headers); + } + return new SSEClientTransport( - new URL(transportConfig.sseUrl) + new URL(transportConfig.sseUrl), + Object.keys(sseHeaders).length > 0 ? { + eventSourceInit: { headers: sseHeaders }, + requestInit: { headers: sseHeaders } + } : undefined ) as unknown as Transport; + } case 'websocket': return new WebSocketClientTransport( new URL(transportConfig.url) From 0abeaa549c9651ac690e635eeb02b0b0e11a174c Mon Sep 17 00:00:00 2001 From: Stan Date: Mon, 6 Oct 2025 20:53:13 +0200 Subject: [PATCH 2/3] Update factory.ts --- src/transports/factory.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/transports/factory.ts b/src/transports/factory.ts index 8acc4b7..2b9db2f 100644 --- a/src/transports/factory.ts +++ b/src/transports/factory.ts @@ -25,12 +25,10 @@ export class TransportFactory { case 'http': { const httpHeaders: Record = {}; - // Add API key if provided if (transportConfig.apiKey) { httpHeaders['X-API-Key'] = transportConfig.apiKey; } - // Merge custom headers if (transportConfig.headers) { Object.assign(httpHeaders, transportConfig.headers); } @@ -45,12 +43,10 @@ export class TransportFactory { case 'sse': { const sseHeaders: Record = {}; - // Add API key if provided if (transportConfig.apiKey) { sseHeaders['X-API-Key'] = transportConfig.apiKey; } - // Merge custom headers if (transportConfig.headers) { Object.assign(sseHeaders, transportConfig.headers); } From 202cda4a9dd631f1753759f13848e748153c6fcc Mon Sep 17 00:00:00 2001 From: standujar Date: Mon, 6 Oct 2025 21:26:07 +0200 Subject: [PATCH 3/3] fix: remove unnecessary eventSourceInit headers from SSE transport configuration --- src/transports/factory.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/transports/factory.ts b/src/transports/factory.ts index 2b9db2f..c229a9c 100644 --- a/src/transports/factory.ts +++ b/src/transports/factory.ts @@ -54,7 +54,6 @@ export class TransportFactory { return new SSEClientTransport( new URL(transportConfig.sseUrl), Object.keys(sseHeaders).length > 0 ? { - eventSourceInit: { headers: sseHeaders }, requestInit: { headers: sseHeaders } } : undefined ) as unknown as Transport;