UNPKG

@kya-os/mcp-i

Version:

The TypeScript MCP framework with identity features built-in

49 lines (48 loc) 2.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.xmcpHandler = xmcpHandler; const server_1 = require("../../utils/server"); const stateless_streamable_http_1 = require("../../transports/http/stateless-streamable-http"); const setup_cors_1 = require("../../transports/http/setup-cors"); const http_context_1 = require("../../transports/http/http-context"); const node_crypto_1 = require("node:crypto"); // HTTP config injected by compiler // @ts-expect-error: injected by compiler const httpConfig = HTTP_CONFIG; // CORS config injected by compiler // @ts-expect-error: injected by compiler const corsConfig = HTTP_CORS_CONFIG; async function xmcpHandler(req, res) { return new Promise((resolve) => { const id = (0, node_crypto_1.randomUUID)(); (0, http_context_1.httpContextProvider)({ id, headers: req.headers }, async () => { try { (0, setup_cors_1.setResponseCorsHeaders)(corsConfig, res); const server = await (0, server_1.createServer)(); const transport = new stateless_streamable_http_1.StatelessHttpServerTransport(httpConfig.debug, httpConfig.bodySizeLimit || "10mb"); // cleanup when request/connection closes res.on("close", () => { transport.close(); server.close(); }); await server.connect(transport); await transport.handleRequest(req, res, req.body).then(() => { resolve(res); }); } catch (error) { console.error("[HTTP-server] Error handling MCP request:", error); if (!res.headersSent) { res.status(500).json({ jsonrpc: "2.0", error: { code: -32603, message: "Internal server error", }, id: null, }); } } }); }); }