card #98: update havre/src/http.js

This commit is contained in:
time committed 2026-10-19 16:15:06 +00:00
1 parent 89070f46a4
commit 086a028879
1 file changed
+26
+26
View File
@@ -0,0 +1,26 @@
import { createServer as createHttp } from "node:http";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
import { createServer } from "./server.js";
// Stateless streamable HTTP: a fresh MCP server + transport per request, nothing kept between requests.
export function createHttpServer() {
return createHttp(async (req, res) => {
const path = new URL(req.url, "http://x").pathname;
if (path === "/health") return res.writeHead(200, { "content-type": "text/plain" }).end("ok");
if (path !== "/mcp") return res.writeHead(404).end();
if (req.method !== "POST") return res.writeHead(405, { allow: "POST" }).end();
const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined, enableJsonResponse: true });
const server = createServer();
res.on("close", () => { transport.close(); server.close(); });
try {
await server.connect(transport);
await transport.handleRequest(req, res);
} catch {
if (!res.headersSent) res.writeHead(500).end();
}
});
}
if (import.meta.url === `file://${process.argv[1]}`) {
createHttpServer().listen(Number(process.env.PORT ?? 8080), "0.0.0.0");
}