diff options
| author | Adam Spiers <[email protected]> | 2025-06-30 01:09:08 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-06-30 00:09:08 +0000 |
| commit | 0fd602eb43eea7abca980dc2ae3fd7bf2ba76a2a (patch) | |
| tree | b181996faa4e7ee66926ce68e2aeac2d823a91ed /packages/core/src/tools/mcp-client.ts | |
| parent | d1eb86581ce800778e5a093039ce237ec6da6118 (diff) | |
feat: add support to remote MCP servers for custom HTTP headers (#2477)
Diffstat (limited to 'packages/core/src/tools/mcp-client.ts')
| -rw-r--r-- | packages/core/src/tools/mcp-client.ts | 17 |
1 files changed, 15 insertions, 2 deletions
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 = |
