diff --git a/litellm/proxy/_experimental/mcp_server/server.py b/litellm/proxy/_experimental/mcp_server/server.py index f49ee7fda4e..d063363e215 100644 --- a/litellm/proxy/_experimental/mcp_server/server.py +++ b/litellm/proxy/_experimental/mcp_server/server.py @@ -2720,6 +2720,20 @@ if MCP_AVAILABLE: from starlette.responses import JSONResponse from starlette.status import HTTP_500_INTERNAL_SERVER_ERROR + error_response = JSONResponse( + status_code=HTTP_500_INTERNAL_SERVER_ERROR, + content={"error": "MCP request failed", "details": str(e)}, + ) + except HTTPException: + raise + except Exception as e: + verbose_logger.exception(f"Error handling MCP request: {e}") + # Instead of re-raising, try to send a graceful error response + try: + # Send a proper HTTP error response instead of letting the exception bubble up + from starlette.responses import JSONResponse + from starlette.status import HTTP_500_INTERNAL_SERVER_ERROR + error_response = JSONResponse( status_code=HTTP_500_INTERNAL_SERVER_ERROR, content={"error": "MCP request failed", "details": str(e)},