@@ -556,9 +556,33 @@ async def test_oauth_protected_resource_respects_x_forwarded_proto():
556556 from litellm .proxy ._experimental .mcp_server .discoverable_endpoints import (
557557 oauth_protected_resource_mcp ,
558558 )
559+ from litellm .proxy ._experimental .mcp_server .mcp_server_manager import (
560+ global_mcp_server_manager ,
561+ )
562+ from litellm .types .mcp import MCPAuth
563+ from litellm .types .mcp_server .mcp_server_manager import MCPServer
564+ from litellm .proxy ._types import MCPTransport
559565 from fastapi import Request
560566 except ImportError :
561567 pytest .skip ("MCP discoverable endpoints not available" )
568+ # Clear registry
569+ global_mcp_server_manager .registry .clear ()
570+
571+ # Create mock OAuth2 server
572+ oauth2_server = MCPServer (
573+ server_id = "test_oauth_server" ,
574+ name = "test_oauth" ,
575+ server_name = "test_oauth" ,
576+ alias = "test_oauth" ,
577+ transport = MCPTransport .http ,
578+ auth_type = MCPAuth .oauth2 ,
579+ client_id = "test_client_id" ,
580+ client_secret = "test_client_secret" ,
581+ authorization_url = "https://provider.com/oauth/authorize" ,
582+ token_url = "https://provider.com/oauth/token" ,
583+ scopes = ["read" , "write" ],
584+ )
585+ global_mcp_server_manager .registry [oauth2_server .server_id ] = oauth2_server
562586
563587 # Mock request with http base_url but X-Forwarded-Proto: https
564588 mock_request = MagicMock (spec = Request )
@@ -568,13 +592,14 @@ async def test_oauth_protected_resource_respects_x_forwarded_proto():
568592 # Call the endpoint
569593 response = await oauth_protected_resource_mcp (
570594 request = mock_request ,
571- mcp_server_name = "test_server " ,
595+ mcp_server_name = "test_oauth " ,
572596 )
573597
574598 # Verify response uses HTTPS URLs
575599 assert response ["authorization_servers" ][0 ].startswith (
576600 "https://litellm.example.com/"
577601 )
602+ assert response ["scopes_supported" ] == oauth2_server .scopes
578603
579604
580605@pytest .mark .asyncio
@@ -584,9 +609,33 @@ async def test_oauth_authorization_server_respects_x_forwarded_proto():
584609 from litellm .proxy ._experimental .mcp_server .discoverable_endpoints import (
585610 oauth_authorization_server_mcp ,
586611 )
612+ from litellm .proxy ._experimental .mcp_server .mcp_server_manager import (
613+ global_mcp_server_manager ,
614+ )
615+ from litellm .types .mcp import MCPAuth
616+ from litellm .types .mcp_server .mcp_server_manager import MCPServer
617+ from litellm .proxy ._types import MCPTransport
587618 from fastapi import Request
588619 except ImportError :
589620 pytest .skip ("MCP discoverable endpoints not available" )
621+ # Clear registry
622+ global_mcp_server_manager .registry .clear ()
623+
624+ # Create mock OAuth2 server
625+ oauth2_server = MCPServer (
626+ server_id = "test_oauth_server" ,
627+ name = "test_oauth" ,
628+ server_name = "test_oauth" ,
629+ alias = "test_oauth" ,
630+ transport = MCPTransport .http ,
631+ auth_type = MCPAuth .oauth2 ,
632+ client_id = "test_client_id" ,
633+ client_secret = "test_client_secret" ,
634+ authorization_url = "https://provider.com/oauth/authorize" ,
635+ token_url = "https://provider.com/oauth/token" ,
636+ scopes = ["read" , "write" ],
637+ )
638+ global_mcp_server_manager .registry [oauth2_server .server_id ] = oauth2_server
590639
591640 # Mock request with http base_url but X-Forwarded-Proto: https
592641 mock_request = MagicMock (spec = Request )
@@ -596,14 +645,15 @@ async def test_oauth_authorization_server_respects_x_forwarded_proto():
596645 # Call the endpoint
597646 response = await oauth_authorization_server_mcp (
598647 request = mock_request ,
599- mcp_server_name = "test_server " ,
648+ mcp_server_name = "test_oauth " ,
600649 )
601650
602651 # Verify response uses HTTPS URLs
603652 assert response ["authorization_endpoint" ].startswith ("https://litellm.example.com/" )
604653 assert response ["token_endpoint" ].startswith ("https://litellm.example.com/" )
605654 assert response ["registration_endpoint" ].startswith ("https://litellm.example.com/" )
606655 assert response ["grant_types_supported" ] == ["authorization_code" , "refresh_token" ]
656+ assert response ["scopes_supported" ] == oauth2_server .scopes
607657
608658
609659@pytest .mark .asyncio
0 commit comments