From 2e560e958e9df0b730d2c13c9bc102543b5c2a7a Mon Sep 17 00:00:00 2001 From: Ishaan Jaffer Date: Tue, 10 Mar 2026 19:32:57 -0700 Subject: [PATCH] =?UTF-8?q?fix(mcp):=20make=20client=5Fid=20optional=20in?= =?UTF-8?q?=20/authorize=20=E2=80=94=20use=20server's=20stored=20client=5F?= =?UTF-8?q?id=20when=20not=20provided?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mcp_server/discoverable_endpoints.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/litellm/proxy/_experimental/mcp_server/discoverable_endpoints.py b/litellm/proxy/_experimental/mcp_server/discoverable_endpoints.py index b731bc7bc2f..1e368787dbf 100644 --- a/litellm/proxy/_experimental/mcp_server/discoverable_endpoints.py +++ b/litellm/proxy/_experimental/mcp_server/discoverable_endpoints.py @@ -316,8 +316,8 @@ async def register_client_with_server( @router.get("/authorize") async def authorize( request: Request, - client_id: str, redirect_uri: str, + client_id: Optional[str] = None, state: str = "", mcp_server_name: Optional[str] = None, code_challenge: Optional[str] = None, @@ -330,19 +330,23 @@ async def authorize( global_mcp_server_manager, ) - lookup_name = mcp_server_name or client_id + lookup_name: Optional[str] = mcp_server_name or client_id client_ip = IPAddressUtils.get_mcp_client_ip(request) - mcp_server = global_mcp_server_manager.get_mcp_server_by_name( - lookup_name, client_ip=client_ip + mcp_server = ( + global_mcp_server_manager.get_mcp_server_by_name(lookup_name, client_ip=client_ip) + if lookup_name + else None ) if mcp_server is None and mcp_server_name is None: mcp_server = _resolve_oauth2_server_for_root_endpoints() if mcp_server is None: raise HTTPException(status_code=404, detail="MCP server not found") + # Use server's stored client_id when caller doesn't supply one + resolved_client_id: str = mcp_server.client_id or client_id or "" return await authorize_with_server( request=request, mcp_server=mcp_server, - client_id=client_id, + client_id=resolved_client_id, redirect_uri=redirect_uri, state=state, code_challenge=code_challenge,