From 9d65c88821ac3dbaf28a31123e7fa0c8879f61f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=AF=E5=9F=BA=E9=AD=81?= <1412414664@qq.com> Date: Wed, 24 Jun 2026 00:06:37 +0800 Subject: [PATCH] fix: preserve boolean additionalProperties schemas --- google/genai/_mcp_utils.py | 9 ++++---- .../tests/mcp/test_mcp_to_gemini_tools.py | 22 +++++++++++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/google/genai/_mcp_utils.py b/google/genai/_mcp_utils.py index cc7a1642b..090e3ec0f 100644 --- a/google/genai/_mcp_utils.py +++ b/google/genai/_mcp_utils.py @@ -21,9 +21,6 @@ import typing from typing import Any -import google.auth -from google.auth.transport.requests import Request - from . import _common from . import types from ._api_client import _MULTI_REGIONAL_LOCATIONS @@ -144,7 +141,11 @@ def _filter_to_supported_schema( filtered_schema: dict[str, Any] = {} for field_name, field_value in schema.items(): if field_name in schema_field_names: - filtered_schema[field_name] = _filter_to_supported_schema(field_value) + filtered_schema[field_name] = ( + _filter_to_supported_schema(field_value) + if isinstance(field_value, dict) + else field_value + ) elif field_name in list_schema_field_names: filtered_schema[field_name] = [ _filter_to_supported_schema(value) for value in field_value diff --git a/google/genai/tests/mcp/test_mcp_to_gemini_tools.py b/google/genai/tests/mcp/test_mcp_to_gemini_tools.py index 61d64102c..4b4390db2 100644 --- a/google/genai/tests/mcp/test_mcp_to_gemini_tools.py +++ b/google/genai/tests/mcp/test_mcp_to_gemini_tools.py @@ -285,6 +285,28 @@ def test_update_endpoint_labels_conversion(): assert 'additionalProperties' in labels_schema +def test_additional_properties_boolean_conversion(): + """Test boolean additionalProperties schemas are preserved.""" + + mcp_tools = [ + mcp_types.Tool( + name='test_func', + description='Test function.', + inputSchema={ + 'type': 'object', + 'properties': { + 'arg1': {'type': 'string'}, + }, + 'additionalProperties': False, + }, + ), + ] + result = _mcp_utils.mcp_to_gemini_tools(mcp_tools, is_agent_platform=True) + schema = result[0].function_declarations[0].parameters_json_schema + + assert schema['additionalProperties'] is False + + def test_agent_platform_preserves_unknown_fields(): """Test that Agent Platform translation passes all schema fields directly to the backend.