From 0fd602eb43eea7abca980dc2ae3fd7bf2ba76a2a Mon Sep 17 00:00:00 2001 From: Adam Spiers Date: Mon, 30 Jun 2025 01:09:08 +0100 Subject: feat: add support to remote MCP servers for custom HTTP headers (#2477) --- packages/core/src/tools/mcp-client.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'packages/core/src/tools/mcp-client.ts') diff --git a/packages/core/src/tools/mcp-client.ts b/packages/core/src/tools/mcp-client.ts index 72382ac1..52196b80 100644 --- a/packages/core/src/tools/mcp-client.ts +++ b/packages/core/src/tools/mcp-client.ts @@ -7,7 +7,10 @@ import { Client } from '@modelcontextprotocol/sdk/client/index.js'; import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js'; import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js'; -import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'; +import { + StreamableHTTPClientTransport, + StreamableHTTPClientTransportOptions, +} from '@modelcontextprotocol/sdk/client/streamableHttp.js'; import { parse } from 'shell-quote'; import { MCPServerConfig } from '../config/config.js'; import { DiscoveredMCPTool } from './mcp-tool.js'; @@ -169,8 +172,17 @@ async function connectAndDiscover( let transport; if (mcpServerConfig.httpUrl) { + const transportOptions: StreamableHTTPClientTransportOptions = {}; + + if (mcpServerConfig.headers) { + transportOptions.requestInit = { + headers: mcpServerConfig.headers, + }; + } + transport = new StreamableHTTPClientTransport( new URL(mcpServerConfig.httpUrl), + transportOptions, ); } else if (mcpServerConfig.url) { transport = new SSEClientTransport(new URL(mcpServerConfig.url)); @@ -222,10 +234,11 @@ async function connectAndDiscover( const safeConfig = { command: mcpServerConfig.command, url: mcpServerConfig.url, + httpUrl: mcpServerConfig.httpUrl, cwd: mcpServerConfig.cwd, timeout: mcpServerConfig.timeout, trust: mcpServerConfig.trust, - // Exclude args and env which may contain sensitive data + // Exclude args, env, and headers which may contain sensitive data }; let errorString = -- cgit v1.2.3