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 e953ca39f..f38e6afec 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 transport after the request is handled + await http_transport.terminate() + async def _handle_stateful_request( self, scope: Scope,