UNPKG

middy-mcp

Version:

Middy middleware for Model Context Protocol server

42 lines 1.62 kB
const isRequestMessage = (message) => "method" in message && "id" in message; const isResponseMessage = (message) => "id" in message; export class HttpServerTransport { _started = false; _pendingRequests = new Map(); onmessage; start = async () => { if (this._started) { throw new Error("HttpServerTransport already started"); } this._started = true; }; send = async (message) => { if (isResponseMessage(message)) { const pendingRequest = this._pendingRequests.get(message.id); if (pendingRequest !== undefined) { pendingRequest.resolve(message); this._pendingRequests.delete(message.id); } } }; close = async () => { }; _startFreshSession = () => { this._pendingRequests.clear(); }; handleJSONRPCMessages = async (jsonRPCMessages) => { this._startFreshSession(); jsonRPCMessages.map((message) => { this.onmessage?.(message); }); const requestMessages = jsonRPCMessages.filter(isRequestMessage); if (requestMessages.length === 0) { return; } // Create promises for each request and collect their responses const responseMessages = await Promise.all(requestMessages.map((requestMessage) => new Promise((resolve, reject) => { this._pendingRequests.set(requestMessage.id, { resolve, reject }); }))); return responseMessages.length > 1 ? responseMessages : responseMessages[0]; }; } //# sourceMappingURL=HttpServerTransport.js.map