From c260e29a92c38f760985a57fadd64110d2a31d3d Mon Sep 17 00:00:00 2001 From: leweng Date: Mon, 21 Jul 2025 18:22:49 +0800 Subject: [PATCH] Fix: Replace threading.Lock with anyio.Lock for Ray deployment compatibility (#1151) --- src/mcp/server/streamable_http_manager.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/mcp/server/streamable_http_manager.py b/src/mcp/server/streamable_http_manager.py index f38e6afe..53d542d2 100644 --- a/src/mcp/server/streamable_http_manager.py +++ b/src/mcp/server/streamable_http_manager.py @@ -4,7 +4,6 @@ from __future__ import annotations import contextlib import logging -import threading from collections.abc import AsyncIterator from http import HTTPStatus from typing import Any @@ -75,7 +74,7 @@ class StreamableHTTPSessionManager: # The task group will be set during lifespan self._task_group = None # Thread-safe tracking of run() calls - self._run_lock = threading.Lock() + self._run_lock = anyio.Lock() self._has_started = False @contextlib.asynccontextmanager @@ -97,7 +96,7 @@ class StreamableHTTPSessionManager: yield """ # Thread-safe check to ensure run() is only called once - with self._run_lock: + async with self._run_lock: if self._has_started: raise RuntimeError( "StreamableHTTPSessionManager .run() can only be called "