card #98: update havre/src/http.js
This commit is contained in:
1 parent
89070f46a4
commit
086a028879
1 file changed
+26
@@ -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");
|
||||
}
|
||||
Reference in new issue
Block a user