1818from unittest .mock import MagicMock
1919from unittest .mock import patch
2020
21+ from google .adk .tools import api_registry
2122from google .adk .tools .api_registry import ApiRegistry
2223from google .adk .tools .mcp_tool .mcp_session_manager import StreamableHTTPConnectionParams
2324import httpx
3536 {
3637 "name" : "test-mcp-server-no-url" ,
3738 },
39+ {
40+ "name" : "test-mcp-server-http" ,
41+ "urls" : ["http://mcp.server_http.com" ],
42+ },
43+ {
44+ "name" : "test-mcp-server-https" ,
45+ "urls" : ["https://mcp.server_https.com" ],
46+ },
3847 ]
3948}
4049
@@ -70,10 +79,12 @@ def test_init_success(self, MockHttpClient):
7079 api_registry_project_id = self .project_id , location = self .location
7180 )
7281
73- self .assertEqual (len (api_registry ._mcp_servers ), 3 )
82+ self .assertEqual (len (api_registry ._mcp_servers ), 5 )
7483 self .assertIn ("test-mcp-server-1" , api_registry ._mcp_servers )
7584 self .assertIn ("test-mcp-server-2" , api_registry ._mcp_servers )
7685 self .assertIn ("test-mcp-server-no-url" , api_registry ._mcp_servers )
86+ self .assertIn ("test-mcp-server-http" , api_registry ._mcp_servers )
87+ self .assertIn ("test-mcp-server-https" , api_registry ._mcp_servers )
7788 mock_client_instance .get .assert_called_once_with (
7889 f"https://cloudapiregistry.googleapis.com/v1beta/projects/{ self .project_id } /locations/{ self .location } /mcpServers" ,
7990 headers = {
@@ -95,10 +106,12 @@ def test_init_with_quota_project_id_success(self, MockHttpClient):
95106 api_registry_project_id = self .project_id , location = self .location
96107 )
97108
98- self .assertEqual (len (api_registry ._mcp_servers ), 3 )
109+ self .assertEqual (len (api_registry ._mcp_servers ), 5 )
99110 self .assertIn ("test-mcp-server-1" , api_registry ._mcp_servers )
100111 self .assertIn ("test-mcp-server-2" , api_registry ._mcp_servers )
101112 self .assertIn ("test-mcp-server-no-url" , api_registry ._mcp_servers )
113+ self .assertIn ("test-mcp-server-http" , api_registry ._mcp_servers )
114+ self .assertIn ("test-mcp-server-https" , api_registry ._mcp_servers )
102115 mock_client_instance .get .assert_called_once_with (
103116 f"https://cloudapiregistry.googleapis.com/v1beta/projects/{ self .project_id } /locations/{ self .location } /mcpServers" ,
104117 headers = {
@@ -232,6 +245,41 @@ async def test_get_toolset_with_filter_and_prefix(
232245 )
233246 self .assertEqual (toolset , MockMcpToolset .return_value )
234247
248+ def test_get_toolset_url_scheme (self ):
249+ params = [
250+ ("test-mcp-server-http" , "http://mcp.server_http.com" ),
251+ ("test-mcp-server-https" , "https://mcp.server_https.com" ),
252+ ]
253+ for mock_server_name , mock_url in params :
254+ with self .subTest (server_name = mock_server_name ):
255+ with (
256+ patch .object (httpx , "Client" , autospec = True ) as MockHttpClient ,
257+ patch .object (
258+ api_registry , "McpToolset" , autospec = True
259+ ) as MockMcpToolset ,
260+ ):
261+ mock_response = create_autospec (httpx .Response , instance = True )
262+ mock_response .json .return_value = MOCK_MCP_SERVERS_LIST
263+ mock_client_instance = MockHttpClient .return_value
264+ mock_client_instance .__enter__ .return_value = mock_client_instance
265+ mock_client_instance .get .return_value = mock_response
266+
267+ api_registry_instance = ApiRegistry (
268+ api_registry_project_id = self .project_id , location = self .location
269+ )
270+
271+ api_registry_instance .get_toolset (mock_server_name )
272+
273+ MockMcpToolset .assert_called_once_with (
274+ connection_params = StreamableHTTPConnectionParams (
275+ url = mock_url ,
276+ headers = {"Authorization" : "Bearer mock_token" },
277+ ),
278+ tool_filter = None ,
279+ tool_name_prefix = None ,
280+ header_provider = None ,
281+ )
282+
235283 @patch ("httpx.Client" , autospec = True )
236284 async def test_get_toolset_server_not_found (self , MockHttpClient ):
237285 mock_response = MagicMock ()
0 commit comments