mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-09 03:18:44 +00:00
fix(mcp): resolve OAuth endpoints by server_id when name lookup fails
The OAuth broker endpoints (authorize, register, token, callback, and metadata) use get_mcp_server_by_name() to resolve the MCP server from the URL path parameter. However, the LiteLLM UI sends the server_id (SHA-256 hash) in the path, which doesn't match any alias, server_name, or name — causing the lookup to fail with "MCP server authorization url is not set". Add get_mcp_server_by_id() as a fallback at all five call sites in discoverable_endpoints.py so that servers can be resolved by either name or ID. Fixes #30997
This commit is contained in:
parent
2be0183cc7
commit
cdecfe24e1
1 changed files with 16 additions and 0 deletions
|
|
@ -611,6 +611,8 @@ async def authorize(
|
|||
if lookup_name
|
||||
else None
|
||||
)
|
||||
if mcp_server is None and lookup_name:
|
||||
mcp_server = global_mcp_server_manager.get_mcp_server_by_id(lookup_name)
|
||||
if mcp_server is None and mcp_server_name is None:
|
||||
mcp_server = _resolve_oauth2_server_for_root_endpoints(client_ip=client_ip)
|
||||
if mcp_server is None:
|
||||
|
|
@ -673,6 +675,8 @@ async def token_endpoint(
|
|||
mcp_server = global_mcp_server_manager.get_mcp_server_by_name(
|
||||
lookup_name, client_ip=client_ip
|
||||
)
|
||||
if mcp_server is None and lookup_name:
|
||||
mcp_server = global_mcp_server_manager.get_mcp_server_by_id(lookup_name)
|
||||
if mcp_server is None and mcp_server_name is None:
|
||||
mcp_server = _resolve_oauth2_server_for_root_endpoints(client_ip=client_ip)
|
||||
if mcp_server is None:
|
||||
|
|
@ -991,6 +995,10 @@ async def _build_oauth_protected_resource_response(
|
|||
mcp_server = global_mcp_server_manager.get_mcp_server_by_name(
|
||||
mcp_server_name, client_ip=client_ip
|
||||
)
|
||||
if mcp_server is None:
|
||||
mcp_server = global_mcp_server_manager.get_mcp_server_by_id(
|
||||
mcp_server_name
|
||||
)
|
||||
|
||||
# Build resource URL based on the pattern
|
||||
if mcp_server_name:
|
||||
|
|
@ -1144,6 +1152,10 @@ def _build_oauth_authorization_server_response(
|
|||
mcp_server = global_mcp_server_manager.get_mcp_server_by_name(
|
||||
mcp_server_name, client_ip=client_ip
|
||||
)
|
||||
if mcp_server is None:
|
||||
mcp_server = global_mcp_server_manager.get_mcp_server_by_id(
|
||||
mcp_server_name
|
||||
)
|
||||
|
||||
return {
|
||||
"issuer": request_base_url, # point to your proxy
|
||||
|
|
@ -1310,6 +1322,10 @@ async def register_client(request: Request, mcp_server_name: Optional[str] = Non
|
|||
mcp_server = global_mcp_server_manager.get_mcp_server_by_name(
|
||||
mcp_server_name, client_ip=client_ip
|
||||
)
|
||||
if mcp_server is None:
|
||||
mcp_server = global_mcp_server_manager.get_mcp_server_by_id(
|
||||
mcp_server_name
|
||||
)
|
||||
if mcp_server is None:
|
||||
return dummy_return
|
||||
return await register_client_with_server(
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue