UNPKG

mcp-simple-gateway

Version:
52 lines (51 loc) 1.81 kB
import { getDefaultEnvironment, StdioClientTransport, } from '@modelcontextprotocol/sdk/client/stdio.js'; import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js'; import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'; import { isSSEConfig, isStdioConfig, isStreamableHTTPConfig } from '../guards/index.js'; const buildHeaders = (config) => { const headers = {}; if (config.headers) { for (const [key, value] of Object.entries(config.headers)) { headers[key] = value; } } return headers; }; export const createServerTransport = (serverConfig) => { if (isSSEConfig(serverConfig)) { const url = new URL(serverConfig.url); const headers = buildHeaders(serverConfig); return new SSEClientTransport(url, { eventSourceInit: { fetch: (url, init) => globalThis.fetch(url, { ...init, headers: { ...init?.headers, ...headers, }, }), }, }); } if (isStreamableHTTPConfig(serverConfig)) { const url = new URL(serverConfig.url); const headers = buildHeaders(serverConfig); return new StreamableHTTPClientTransport(url, { requestInit: { headers, }, }); } if (isStdioConfig(serverConfig)) { return new StdioClientTransport({ command: serverConfig.command, args: serverConfig.args, env: { ...getDefaultEnvironment(), ...serverConfig.env, }, cwd: serverConfig.cwd, }); } throw new Error('Invalid server config'); };