From 63f9008974be1f3118e981a2effc8fb9ca7cc8b3 Mon Sep 17 00:00:00 2001 From: Dinesh Date: Mon, 26 Jan 2026 23:01:42 +0530 Subject: [PATCH 1/4] feat(tools):exposed configurable parameter as property in McpToolset and added test cases --- src/google/adk/tools/mcp_tool/mcp_toolset.py | 31 +++++++++++++++++++ .../tools/mcp_tool/test_mcp_toolset.py | 26 ++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/src/google/adk/tools/mcp_tool/mcp_toolset.py b/src/google/adk/tools/mcp_tool/mcp_toolset.py index fed0684ed2..3cf60f957c 100644 --- a/src/google/adk/tools/mcp_tool/mcp_toolset.py +++ b/src/google/adk/tools/mcp_tool/mcp_toolset.py @@ -140,6 +140,37 @@ def __init__( self._auth_credential = auth_credential self._require_confirmation = require_confirmation + @property + def connection_params(self) -> Union[ + StdioServerParameters, + StdioConnectionParams, + SseConnectionParams, + StreamableHTTPConnectionParams, + ]: + return self._connection_params + + @property + def auth_scheme(self) -> Optional[AuthScheme]: + return self._auth_scheme + + @property + def auth_credential(self) -> Optional[AuthCredential]: + return self._auth_credential + + @property + def require_confirmation(self) -> Union[bool, Callable[..., bool]]: + return self._require_confirmation + + @property + def header_provider( + self, + ) -> Optional[Callable[[ReadonlyContext], Dict[str, str]]]: + return self._header_provider + + @property + def errlog(self) -> TextIO: + return self._errlog + @retry_on_errors async def get_tools( self, diff --git a/tests/unittests/tools/mcp_tool/test_mcp_toolset.py b/tests/unittests/tools/mcp_tool/test_mcp_toolset.py index 83b112d8b9..fa9581884d 100644 --- a/tests/unittests/tools/mcp_tool/test_mcp_toolset.py +++ b/tests/unittests/tools/mcp_tool/test_mcp_toolset.py @@ -76,6 +76,32 @@ def test_init_basic(self): assert toolset._auth_scheme is None assert toolset._auth_credential is None + def test_connection_params(self): + """Test getting connection params.""" + toolset = MCPToolset(connection_params=self.mock_stdio_params) + assert toolset.connection_params == self.mock_stdio_params + + def test_auth_scheme(self): + """Test getting auth scheme.""" + toolset = MCPToolset(connection_params=self.mock_stdio_params) + assert toolset.auth_scheme is None + + def test_auth_credential(self): + """Test getting auth credential.""" + toolset = MCPToolset(connection_params=self.mock_stdio_params) + assert toolset.auth_credential is None + + def test_error_log(self): + """Test getting error log.""" + toolset = MCPToolset(connection_params=self.mock_stdio_params) + assert toolset.errlog == sys.stderr + + def test_auth_credential_updates(self): + """Test setting auth credential.""" + toolset = MCPToolset(connection_params=self.mock_stdio_params) + toolset._auth_credential = "test_auth_credential" + assert toolset.auth_credential == "test_auth_credential" + def test_init_with_stdio_connection_params(self): """Test initialization with StdioConnectionParams.""" stdio_params = StdioConnectionParams( From b25a373d142d453c9a129e12941c2a8cb62032b1 Mon Sep 17 00:00:00 2001 From: Dinesh Thumma <160909147+DineshThumma9@users.noreply.github.com> Date: Mon, 26 Jan 2026 23:12:05 +0530 Subject: [PATCH 2/4] Update tests/unittests/tools/mcp_tool/test_mcp_toolset.py Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- tests/unittests/tools/mcp_tool/test_mcp_toolset.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tests/unittests/tools/mcp_tool/test_mcp_toolset.py b/tests/unittests/tools/mcp_tool/test_mcp_toolset.py index fa9581884d..ae09f6f337 100644 --- a/tests/unittests/tools/mcp_tool/test_mcp_toolset.py +++ b/tests/unittests/tools/mcp_tool/test_mcp_toolset.py @@ -96,11 +96,14 @@ def test_error_log(self): toolset = MCPToolset(connection_params=self.mock_stdio_params) assert toolset.errlog == sys.stderr - def test_auth_credential_updates(self): - """Test setting auth credential.""" - toolset = MCPToolset(connection_params=self.mock_stdio_params) - toolset._auth_credential = "test_auth_credential" - assert toolset.auth_credential == "test_auth_credential" + def test_auth_credential_with_value(self): + """Test getting auth credential when provided at initialization.""" + mock_credential = Mock(spec=AuthCredential) + toolset = MCPToolset( + connection_params=self.mock_stdio_params, + auth_credential=mock_credential, + ) + assert toolset.auth_credential == mock_credential def test_init_with_stdio_connection_params(self): """Test initialization with StdioConnectionParams.""" From 4966b2d438f63c65512c59ddb8e61cc542d2c8ac Mon Sep 17 00:00:00 2001 From: Dinesh Date: Wed, 28 Jan 2026 19:45:33 +0530 Subject: [PATCH 3/4] linted ,formated and merged with main --- src/google/adk/tools/mcp_tool/mcp_toolset.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/google/adk/tools/mcp_tool/mcp_toolset.py b/src/google/adk/tools/mcp_tool/mcp_toolset.py index 8932291fbb..f34c1cc985 100644 --- a/src/google/adk/tools/mcp_tool/mcp_toolset.py +++ b/src/google/adk/tools/mcp_tool/mcp_toolset.py @@ -179,8 +179,7 @@ def header_provider( @property def errlog(self) -> TextIO: return self._errlog - - + async def _execute_with_session( self, coroutine_func: Callable[[Any], Awaitable[T]], From 34742e24255334349d7f0bf89597db5c4a0c2f2f Mon Sep 17 00:00:00 2001 From: Dinesh Date: Thu, 29 Jan 2026 07:10:05 +0530 Subject: [PATCH 4/4] added more and proper testcases --- .../tools/mcp_tool/test_mcp_toolset.py | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tests/unittests/tools/mcp_tool/test_mcp_toolset.py b/tests/unittests/tools/mcp_tool/test_mcp_toolset.py index eb843755ba..95c9201920 100644 --- a/tests/unittests/tools/mcp_tool/test_mcp_toolset.py +++ b/tests/unittests/tools/mcp_tool/test_mcp_toolset.py @@ -100,6 +100,32 @@ def test_error_log(self): toolset = MCPToolset(connection_params=self.mock_stdio_params) assert toolset.errlog == sys.stderr + def test_auth_scheme_with_value(self): + """Test getting auth scheme when provided at initialization.""" + mock_scheme = Mock() + toolset = MCPToolset( + connection_params=self.mock_stdio_params, + auth_scheme=mock_scheme, + ) + assert toolset.auth_scheme == mock_scheme + + def test_require_confirmation(self): + """Test getting require_confirmation flag.""" + toolset = MCPToolset( + connection_params=self.mock_stdio_params, + require_confirmation=True, + ) + assert toolset.require_confirmation is True + + def test_header_provider(self): + """Test getting header_provider.""" + mock_header_provider = Mock() + toolset = MCPToolset( + connection_params=self.mock_stdio_params, + header_provider=mock_header_provider, + ) + assert toolset.header_provider == mock_header_provider + def test_auth_credential_with_value(self): """Test getting auth credential when provided at initialization.""" mock_credential = Mock(spec=AuthCredential)