@kya-os/mcp-i
Version:
The TypeScript MCP framework with identity features built-in
49 lines (48 loc) • 2.09 kB
JavaScript
;
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,
});
}
}
});
});
}