UNPKG

mcp-simple-gateway

Version:
50 lines (49 loc) 1.6 kB
import { getRPCErrorFromError } from '../helpers/index.js'; export class SSEMcpProxy { serverTransport; proxyTransport; logger; constructor(params) { this.serverTransport = params.serverTransport; this.proxyTransport = params.proxyTransport; this.logger = params.logger; } get sessionId() { return this.proxyTransport.sessionId; } start = async () => { await this.serverTransport.start(); await this.proxyTransport.start(); this.serverTransport.onmessage = (msg) => { this.proxyTransport.send(msg); }; this.serverTransport.onerror = async (err) => { const rpcError = getRPCErrorFromError(err); try { await this.proxyTransport.send(rpcError); } catch (error) { this.logger?.error(error, 'Failed to send error'); } }; this.proxyTransport.onmessage = async (msg) => { try { await this.serverTransport.send(msg); } catch (error) { const rpcError = getRPCErrorFromError(error); await this.proxyTransport.send({ ...rpcError, id: rpcError.id || msg.id, }); } }; }; handleMessage = (req, res, parsedBody) => { return this.proxyTransport.handlePostMessage(req, res, parsedBody); }; close = async () => { await this.serverTransport.close(); await this.proxyTransport.close(); }; }