From e78d17cd0a6be09a2a7b39b62fc58f2b89edf5cd Mon Sep 17 00:00:00 2001 From: jquinter Date: Fri, 6 Feb 2026 13:02:30 -0300 Subject: [PATCH] Fix/mcp health check cancelled error (#19851) * Fix MCP health check CancelledError handling for parallel test execution Add asyncio.CancelledError handler in health_check_server() and missing @pytest.mark.asyncio decorator on test_mcp_server_manager_config_integration_with_database. In Python 3.8+, CancelledError inherits from BaseException, not Exception, so it bypassed the generic exception handler when pytest-xdist cancels running tasks after a failure. Co-Authored-By: Claude Opus 4.5 * Regenerate poetry.lock to resolve merge conflict markers The lock file had unresolved conflict markers from a previous merge, causing poetry to fail with "Invalid statement (at line 8534, column 1)". Co-Authored-By: Claude Opus 4.5 --------- Co-authored-by: Claude Opus 4.5 --- litellm/proxy/_experimental/mcp_server/mcp_server_manager.py | 3 +++ tests/mcp_tests/test_mcp_server.py | 1 + 2 files changed, 4 insertions(+) diff --git a/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py b/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py index fd251488db..54047932ad 100644 --- a/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py +++ b/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py @@ -2481,6 +2481,9 @@ class MCPServerManager: except asyncio.TimeoutError: health_check_error = "Health check timed out after 10 seconds" status = "unhealthy" + except asyncio.CancelledError: + health_check_error = "Health check was cancelled" + status = "unknown" except Exception as e: health_check_error = str(e) status = "unhealthy" diff --git a/tests/mcp_tests/test_mcp_server.py b/tests/mcp_tests/test_mcp_server.py index ea823df1fb..9718d714cf 100644 --- a/tests/mcp_tests/test_mcp_server.py +++ b/tests/mcp_tests/test_mcp_server.py @@ -1053,6 +1053,7 @@ async def test_mcp_server_manager_access_groups_from_config(): mcp_server_manager_mod.global_mcp_server_manager = original_manager +@pytest.mark.asyncio async def test_mcp_server_manager_config_integration_with_database(): """ Test that config-based servers properly integrate with database servers,