From 502ddf75228748682256bac520fb088551f725cc Mon Sep 17 00:00:00 2001 From: Filipe Constantinov Menezes Date: Tue, 22 Jul 2025 16:09:39 +0100 Subject: [PATCH 1/7] chore: address more comments from #361 --- src/index.ts | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/index.ts b/src/index.ts index fca9b83f..99fb6f70 100644 --- a/src/index.ts +++ b/src/index.ts @@ -31,15 +31,8 @@ async function main() { try { await transportRunner.start(); } catch (error: unknown) { - logger.emergency(LogId.serverStartFailure, "server", `Fatal error running server: ${error as string}`); - try { - await transportRunner.close(); - logger.error(LogId.serverClosed, "server", "Server closed"); - } catch (error: unknown) { - logger.error(LogId.serverCloseFailure, "server", `Error closing server: ${error as string}`); - } finally { - process.exit(1); - } + await transportRunner.close(); + throw error; } } From 444cb43d19423923c0d1ad041844b42a88737e27 Mon Sep 17 00:00:00 2001 From: Filipe Constantinov Menezes Date: Tue, 22 Jul 2025 16:11:17 +0100 Subject: [PATCH 2/7] chore: address more comments --- src/transports/streamableHttp.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/transports/streamableHttp.ts b/src/transports/streamableHttp.ts index 282cd7bc..21985ac2 100644 --- a/src/transports/streamableHttp.ts +++ b/src/transports/streamableHttp.ts @@ -50,7 +50,7 @@ export class StreamableHttpRunner extends TransportRunnerBase { app.enable("trust proxy"); // needed for reverse proxy support app.use(express.json()); - const handleRequest = async (req: express.Request, res: express.Response) => { + const handleSessionRequest = async (req: express.Request, res: express.Response) => { const sessionId = req.headers["mcp-session-id"]; if (!sessionId) { res.status(400).json({ @@ -91,7 +91,7 @@ export class StreamableHttpRunner extends TransportRunnerBase { promiseHandler(async (req: express.Request, res: express.Response) => { const sessionId = req.headers["mcp-session-id"]; if (sessionId) { - await handleRequest(req, res); + await handleSessionRequest(req, res); return; } @@ -141,8 +141,8 @@ export class StreamableHttpRunner extends TransportRunnerBase { }) ); - app.get("/mcp", promiseHandler(handleRequest)); - app.delete("/mcp", promiseHandler(handleRequest)); + app.get("/mcp", promiseHandler(handleSessionRequest)); + app.delete("/mcp", promiseHandler(handleSessionRequest)); this.httpServer = await new Promise((resolve, reject) => { const result = app.listen(this.userConfig.httpPort, this.userConfig.httpHost, (err?: Error) => { From 2844c406bd388f521f0484d85c859e28e6a6598e Mon Sep 17 00:00:00 2001 From: Filipe Constantinov Menezes Date: Tue, 22 Jul 2025 16:16:08 +0100 Subject: [PATCH 3/7] chore: address more comments --- src/transports/streamableHttp.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/transports/streamableHttp.ts b/src/transports/streamableHttp.ts index 21985ac2..4615d79f 100644 --- a/src/transports/streamableHttp.ts +++ b/src/transports/streamableHttp.ts @@ -14,7 +14,7 @@ const JSON_RPC_ERROR_CODE_SESSION_ID_INVALID = -32002; const JSON_RPC_ERROR_CODE_SESSION_NOT_FOUND = -32003; const JSON_RPC_ERROR_CODE_INVALID_REQUEST = -32004; -function promiseHandler( +function withErrorHandling( fn: (req: express.Request, res: express.Response, next: express.NextFunction) => Promise ) { return (req: express.Request, res: express.Response, next: express.NextFunction) => { @@ -88,7 +88,7 @@ export class StreamableHttpRunner extends TransportRunnerBase { app.post( "/mcp", - promiseHandler(async (req: express.Request, res: express.Response) => { + withErrorHandling(async (req: express.Request, res: express.Response) => { const sessionId = req.headers["mcp-session-id"]; if (sessionId) { await handleSessionRequest(req, res); @@ -141,8 +141,8 @@ export class StreamableHttpRunner extends TransportRunnerBase { }) ); - app.get("/mcp", promiseHandler(handleSessionRequest)); - app.delete("/mcp", promiseHandler(handleSessionRequest)); + app.get("/mcp", withErrorHandling(handleSessionRequest)); + app.delete("/mcp", withErrorHandling(handleSessionRequest)); this.httpServer = await new Promise((resolve, reject) => { const result = app.listen(this.userConfig.httpPort, this.userConfig.httpHost, (err?: Error) => { From 07de8a5a0d8dad3fb7dc99ffa9a3ce4476408ab6 Mon Sep 17 00:00:00 2001 From: Filipe Constantinov Menezes Date: Tue, 22 Jul 2025 17:14:13 +0100 Subject: [PATCH 4/7] fix: error in index --- src/index.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/index.ts b/src/index.ts index 99fb6f70..e5cce4f6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -31,8 +31,14 @@ async function main() { try { await transportRunner.start(); } catch (error: unknown) { - await transportRunner.close(); - throw error; + try { + await transportRunner.close(); + } catch (error: unknown) { + logger.error(LogId.serverCloseFailure, "server", `Error closing server: ${error as string}`); + } + finally { + throw error; + } } } From 5c9582ddb91fa848989db6fc29e9a4509bd2a344 Mon Sep 17 00:00:00 2001 From: Filipe Constantinov Menezes Date: Tue, 22 Jul 2025 17:18:02 +0100 Subject: [PATCH 5/7] fix --- src/index.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/index.ts b/src/index.ts index e5cce4f6..9e160fd4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -36,9 +36,7 @@ async function main() { } catch (error: unknown) { logger.error(LogId.serverCloseFailure, "server", `Error closing server: ${error as string}`); } - finally { - throw error; - } + throw error; } } From 0f9a8740a488632d66211efd5388fa2fcaf9b384 Mon Sep 17 00:00:00 2001 From: Filipe Constantinov Menezes Date: Tue, 22 Jul 2025 17:20:04 +0100 Subject: [PATCH 6/7] fix --- src/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/index.ts b/src/index.ts index 9e160fd4..715ce327 100644 --- a/src/index.ts +++ b/src/index.ts @@ -31,8 +31,10 @@ async function main() { try { await transportRunner.start(); } catch (error: unknown) { + logger.error(LogId.serverStartFailure, "server", "Closing server"); try { await transportRunner.close(); + logger.info(LogId.serverClosed, "server", "Server closed"); } catch (error: unknown) { logger.error(LogId.serverCloseFailure, "server", `Error closing server: ${error as string}`); } From 759d120a23b1b5add01706ac26a122ff92997392 Mon Sep 17 00:00:00 2001 From: Filipe Constantinov Menezes Date: Tue, 22 Jul 2025 17:20:53 +0100 Subject: [PATCH 7/7] fix --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 715ce327..59a6c76c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -31,7 +31,7 @@ async function main() { try { await transportRunner.start(); } catch (error: unknown) { - logger.error(LogId.serverStartFailure, "server", "Closing server"); + logger.info(LogId.serverCloseRequested, "server", "Closing server"); try { await transportRunner.close(); logger.info(LogId.serverClosed, "server", "Server closed");