import type { McpRemoteServerConfig, McpServerConfig } from './config-schema'; import { ErrorCodes, Error2 } from '#/errors'; export function buildMcpRemoteHeaders( config: McpRemoteServerConfig, envLookup: (name: string) => string | undefined, ): Record | undefined { const headers: Record = { ...config.headers }; if (config.bearerTokenEnvVar !== undefined) { const token = envLookup(config.bearerTokenEnvVar); if (token === undefined || token.length === 0) { throw new Error2( ErrorCodes.CONFIG_INVALID, `MCP ${config.transport.toUpperCase()} bearer token env var "${config.bearerTokenEnvVar}" is not set or is empty`, ); } for (const key of Object.keys(headers)) { if (key.toLowerCase() === 'authorization') { delete headers[key]; } } headers['Authorization'] = `Bearer ${token}`; } return Object.keys(headers).length > 0 ? headers : undefined; } export function isRemoteMcpConfig(config: McpServerConfig): config is McpRemoteServerConfig { return config.transport === 'http' || config.transport === 'sse'; }