From a3d319acd169ffbd0d4f3a4b894245f451c3c44f Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 28 Mar 2026 21:59:19 +0000 Subject: [PATCH] Fix session never stored: move transports.set() after handleRequest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The session ID is generated inside StreamableHTTPServerTransport during handleRequest() when it processes the initialize method. The previous code called transports.set() BEFORE handleRequest(), at which point transport.sessionId was still undefined — so the session was never stored in the map. Every subsequent request got "No valid session." https://claude.ai/code/session_01S8iM5fK53kYa54tydpgsNq --- src/McpServer/autopilot-monitor-mcp/src/index.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/McpServer/autopilot-monitor-mcp/src/index.ts b/src/McpServer/autopilot-monitor-mcp/src/index.ts index a91d2ea6..04419d72 100644 --- a/src/McpServer/autopilot-monitor-mcp/src/index.ts +++ b/src/McpServer/autopilot-monitor-mcp/src/index.ts @@ -102,11 +102,14 @@ app.all('/mcp', async (req, res) => { const server = createMcpServer(); await server.connect(transport); + await transport.handleRequest(req, res, req.body); + + // Register AFTER handleRequest — the session ID is only assigned during + // initialize processing inside handleRequest, not before. if (transport.sessionId) { transports.set(transport.sessionId, transport); + console.error(`[mcp] Session ${transport.sessionId} registered`); } - - await transport.handleRequest(req, res, req.body); }); app.listen(PORT, '0.0.0.0', () => {