From 1453598e8d844cf0b4fdf495d6903a47501c1234 Mon Sep 17 00:00:00 2001 From: 20syldev Date: Thu, 9 Apr 2026 20:25:22 +0200 Subject: [PATCH] fix: close MCP transport gracefully on shutdown When the MCP host (e.g. Claude Code) sends SIGTERM to terminate the server, the shutdown handler was calling process.exit(0) without first closing the MCP server transport. The host received an abrupt EOF on the stdio channel and interpreted it as a server failure, reporting "1 MCP server failed" even though the exit code was 0. Call await server.close() in index.ts shutdown() before process.exit() so the MCP SDK can send a proper close notification over the transport. Fixes #126 Relates to #113 --- src/index.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 75f93d0..66540d8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -176,9 +176,19 @@ async function main() { log('Server started') - const shutdown = () => { + const shutdown = async () => { log('Server terminated') + // Close the MCP server transport before exiting so the host (e.g. Claude + // Code) receives a clean EOF on the stdio channel instead of an abrupt + // disconnect. Without this the host reports "MCP server failed" even + // though the exit code is 0. + try { + await server.close() + } catch { + // Ignore close errors during shutdown + } + const aggregationJSON = getSessionAggregationJSON() if (aggregationJSON) {