From b9eb05ea63ad090a214aadc72fc539be6317d23e Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Oct 2025 17:37:53 -0700 Subject: [PATCH] [Feature]: Include server_name in /v1/mcp/server/health endpoint response (#15431) * Initial plan * Add server_name to MCP health check response Co-authored-by: ishaan-jaff <29436595+ishaan-jaff@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: ishaan-jaff <29436595+ishaan-jaff@users.noreply.github.com> --- .../proxy/_experimental/mcp_server/mcp_server_manager.py | 3 +++ .../management_endpoints/test_mcp_management_endpoints.py | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py b/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py index 37a10385091..28581c778c6 100644 --- a/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py +++ b/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py @@ -1380,6 +1380,7 @@ class MCPServerManager: if not server: return { "server_id": server_id, + "server_name": None, "status": "unknown", "error": "Server not found", "last_health_check": datetime.now().isoformat(), @@ -1394,6 +1395,7 @@ class MCPServerManager: return { "server_id": server_id, + "server_name": server.name, "status": "healthy", "tools_count": len(tools), "last_health_check": datetime.now().isoformat(), @@ -1406,6 +1408,7 @@ class MCPServerManager: return { "server_id": server_id, + "server_name": server.name, "status": "unhealthy", "last_health_check": datetime.now().isoformat(), "response_time_ms": round(response_time, 2), diff --git a/tests/test_litellm/proxy/management_endpoints/test_mcp_management_endpoints.py b/tests/test_litellm/proxy/management_endpoints/test_mcp_management_endpoints.py index 215e0d050a3..b62fd6f177e 100644 --- a/tests/test_litellm/proxy/management_endpoints/test_mcp_management_endpoints.py +++ b/tests/test_litellm/proxy/management_endpoints/test_mcp_management_endpoints.py @@ -483,6 +483,7 @@ class TestMCPHealthCheckEndpoints: mock_manager.health_check_server = AsyncMock( return_value={ "server_id": "test-server", + "server_name": "Test Server", "status": "healthy", "tools_count": 3, "last_health_check": "2024-01-01T12:00:00", @@ -519,6 +520,7 @@ class TestMCPHealthCheckEndpoints: # Verify results assert result["server_id"] == "test-server" + assert result["server_name"] == "Test Server" assert result["status"] == "healthy" assert result["tools_count"] == 3 assert result["response_time_ms"] == 150.5 @@ -631,6 +633,7 @@ class TestMCPHealthCheckEndpoints: return_value={ "server1": { "server_id": "server1", + "server_name": "Test DB Server", "status": "healthy", "tools_count": 2, "last_health_check": "2024-01-01T12:00:00", @@ -639,6 +642,7 @@ class TestMCPHealthCheckEndpoints: }, "server2": { "server_id": "server2", + "server_name": "Test DB Server", "status": "unhealthy", "last_health_check": "2024-01-01T12:00:00", "response_time_ms": 5000.0, @@ -684,8 +688,10 @@ class TestMCPHealthCheckEndpoints: # Check individual server results assert result["servers"]["server1"]["status"] == "healthy" assert result["servers"]["server1"]["tools_count"] == 2 + assert result["servers"]["server1"]["server_name"] == "Test DB Server" assert result["servers"]["server2"]["status"] == "unhealthy" assert result["servers"]["server2"]["error"] == "Connection timeout" + assert result["servers"]["server2"]["server_name"] == "Test DB Server" @pytest.mark.asyncio async def test_fetch_all_mcp_servers_with_health_status(self):