diff --git a/src/everything/streamableHttp.ts b/src/everything/streamableHttp.ts index 9ea3a8fc14..7294e47b0b 100644 --- a/src/everything/streamableHttp.ts +++ b/src/everything/streamableHttp.ts @@ -8,7 +8,7 @@ console.error('Starting Streamable HTTP server...'); const app = express(); -const { server, cleanup } = createServer(); +const serverCleanupHooks: (() => Promise)[] = []; const transports: { [sessionId: string]: StreamableHTTPServerTransport } = {}; @@ -47,6 +47,8 @@ app.post('/mcp', async (req: Request, res: Response) => { // Connect the transport to the MCP server BEFORE handling the request // so responses can flow back through the same transport + const { server, cleanup } = createServer(); + serverCleanupHooks.push(() => cleanup().then(() => server.close())); await server.connect(transport); await transport.handleRequest(req, res); @@ -167,8 +169,7 @@ process.on('SIGINT', async () => { console.error(`Error closing transport for session ${sessionId}:`, error); } } - await cleanup(); - await server.close(); + await Promise.all(serverCleanupHooks); console.error('Server shutdown complete'); process.exit(0); });