From 4dd2ce82cd861e1f47b5a7ea6884044e24666283 Mon Sep 17 00:00:00 2001 From: Jurie Smit Date: Mon, 8 Jun 2026 15:36:43 +0200 Subject: [PATCH] fix(mcp): serve streamable HTTP GET --- backend/src/mcp/server.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/backend/src/mcp/server.ts b/backend/src/mcp/server.ts index d148699..eb1cc42 100644 --- a/backend/src/mcp/server.ts +++ b/backend/src/mcp/server.ts @@ -60,7 +60,7 @@ function slugify(name: string): string { export function mcpRouter(pool: Pool): Router { const router = Router(); - router.post('/', async (req: Request, res: Response) => { + const handleMcpHttpRequest = async (req: Request, res: Response, body?: unknown) => { const secret = process.env.MCP_SECRET; if (!secret) { return res.status(500).json({ error: 'MCP_SECRET not configured — endpoint disabled' }); @@ -1260,13 +1260,21 @@ export function mcpRouter(pool: Pool): Router { try { const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined }); await server.connect(transport); - await transport.handleRequest(req, res, req.body); + await transport.handleRequest(req, res, body); } catch (err) { console.error('[MCP] Unhandled error in MCP request handler', { err: String(err) }); if (!res.headersSent) { res.status(500).json({ error: 'MCP handler failed' }); } } + }; + + router.post('/', async (req: Request, res: Response) => { + await handleMcpHttpRequest(req, res, req.body); + }); + + router.get('/', async (req: Request, res: Response) => { + await handleMcpHttpRequest(req, res); }); return router;