@@ -49,20 +49,25 @@ async def set_client_info(self, client_info: OAuthClientInformationFull) -> None
4949
5050
5151def _get_authorization_base_url (server_url : str ) -> str :
52- """Return the authorization base URL for ``server_url``.
52+ """
53+ Return the authorization base URL for ``server_url``.
5354
5455 Per MCP spec 2.3.2, the path component must be discarded so that
5556 ``https://api.example.com/v1/mcp`` becomes ``https://api.example.com``.
5657 """
5758 from urllib .parse import urlparse , urlunparse
5859
5960 parsed = urlparse (server_url )
61+ # Remove path component
6062 return urlunparse ((parsed .scheme , parsed .netloc , "" , "" , "" , "" ))
6163
6264
6365async def _discover_oauth_metadata (server_url : str ) -> OAuthMetadata | None :
64- """Discover OAuth metadata from the server's well-known endpoint."""
66+ """
67+ Discover OAuth metadata from the server's well-known endpoint.
68+ """
6569
70+ # Extract base URL per MCP spec
6671 auth_base_url = _get_authorization_base_url (server_url )
6772 url = urljoin (auth_base_url , "/.well-known/oauth-authorization-server" )
6873 headers = {"MCP-Protocol-Version" : LATEST_PROTOCOL_VERSION }
@@ -73,14 +78,19 @@ async def _discover_oauth_metadata(server_url: str) -> OAuthMetadata | None:
7378 if response .status_code == 404 :
7479 return None
7580 response .raise_for_status ()
76- return OAuthMetadata .model_validate (response .json ())
81+ metadata_json = response .json ()
82+ logger .debug (f"OAuth metadata discovered: { metadata_json } " )
83+ return OAuthMetadata .model_validate (metadata_json )
7784 except Exception :
85+ # Retry without MCP header for CORS compatibility
7886 try :
7987 response = await client .get (url )
8088 if response .status_code == 404 :
8189 return None
8290 response .raise_for_status ()
83- return OAuthMetadata .model_validate (response .json ())
91+ metadata_json = response .json ()
92+ logger .debug (f"OAuth metadata discovered (no MCP header): { metadata_json } " )
93+ return OAuthMetadata .model_validate (metadata_json )
8494 except Exception :
8595 logger .exception ("Failed to discover OAuth metadata" )
8696 return None
0 commit comments