File size: 1,133 Bytes
4e23b01 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | import type { McpRemoteServerConfig, McpServerConfig } from './config-schema';
import { ErrorCodes, Error2 } from '#/errors';
export function buildMcpRemoteHeaders(
config: McpRemoteServerConfig,
envLookup: (name: string) => string | undefined,
): Record<string, string> | undefined {
const headers: Record<string, string> = { ...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';
}
|