From 342a6b5f3e8eebda8f14f8fc3b6f2343b5060cb6 Mon Sep 17 00:00:00 2001 From: wangchen Date: Thu, 10 Jul 2025 10:42:48 +0800 Subject: [PATCH 1/2] Close server session after handle stateless request --- src/mcp/server/streamable_http_manager.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/mcp/server/streamable_http_manager.py b/src/mcp/server/streamable_http_manager.py index e953ca39f..ed167065b 100644 --- a/src/mcp/server/streamable_http_manager.py +++ b/src/mcp/server/streamable_http_manager.py @@ -190,6 +190,9 @@ async def run_stateless_server(*, task_status: TaskStatus[None] = anyio.TASK_STA # Handle the HTTP request and return the response await http_transport.handle_request(scope, receive, send) + # Terminate the session after the request is handled + await http_transport._terminate_session() # type: ignore[reportPrivateUsage] + async def _handle_stateful_request( self, scope: Scope, From 826ec0a3cec5e74525c034b5fa93cdcdf20a58c1 Mon Sep 17 00:00:00 2001 From: wangchen Date: Mon, 14 Jul 2025 23:13:13 +0800 Subject: [PATCH 2/2] Rename _terminate_session to terminal in StreamableHTTPServerTransport --- src/mcp/server/streamable_http.py | 4 ++-- src/mcp/server/streamable_http_manager.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mcp/server/streamable_http.py b/src/mcp/server/streamable_http.py index 10a388b6c..32b63c1ae 100644 --- a/src/mcp/server/streamable_http.py +++ b/src/mcp/server/streamable_http.py @@ -612,7 +612,7 @@ async def _handle_delete_request(self, request: Request, send: Send) -> None: if not await self._validate_request_headers(request, send): return - await self._terminate_session() + await self.terminate() response = self._create_json_response( None, @@ -620,7 +620,7 @@ async def _handle_delete_request(self, request: Request, send: Send) -> None: ) await response(request.scope, request.receive, send) - async def _terminate_session(self) -> None: + async def terminate(self) -> None: """Terminate the current session, closing all streams. Once terminated, all requests with this session ID will receive 404 Not Found. diff --git a/src/mcp/server/streamable_http_manager.py b/src/mcp/server/streamable_http_manager.py index ed167065b..f38e6afec 100644 --- a/src/mcp/server/streamable_http_manager.py +++ b/src/mcp/server/streamable_http_manager.py @@ -190,8 +190,8 @@ async def run_stateless_server(*, task_status: TaskStatus[None] = anyio.TASK_STA # Handle the HTTP request and return the response await http_transport.handle_request(scope, receive, send) - # Terminate the session after the request is handled - await http_transport._terminate_session() # type: ignore[reportPrivateUsage] + # Terminate the transport after the request is handled + await http_transport.terminate() async def _handle_stateful_request( self,