diff --git a/superset/mcp_service/system/tool/get_instance_info.py b/superset/mcp_service/system/tool/get_instance_info.py index 4ffa7b8bfc7..3f13ba874e4 100644 --- a/superset/mcp_service/system/tool/get_instance_info.py +++ b/superset/mcp_service/system/tool/get_instance_info.py @@ -30,7 +30,7 @@ from superset.mcp_service.mcp_core import InstanceInfoCore from superset.mcp_service.system.schemas import ( GetSupersetInstanceInfoRequest, InstanceInfo, - UserInfo, + serialize_user_object, ) from superset.mcp_service.system.system_utils import ( calculate_dashboard_breakdown, @@ -110,24 +110,7 @@ def get_instance_info( # Attach the authenticated user's identity to the response user = getattr(g, "user", None) if user is not None: - raw_roles = getattr(user, "roles", None) - user_roles = [] - if raw_roles is not None: - try: - user_roles = [ - role.name for role in raw_roles if hasattr(role, "name") - ] - except TypeError: - logger.debug("Could not iterate user.roles: %s", type(raw_roles)) - user_roles = [] - result.current_user = UserInfo( - id=getattr(user, "id", None), - username=getattr(user, "username", None), - first_name=getattr(user, "first_name", None), - last_name=getattr(user, "last_name", None), - email=getattr(user, "email", None), - roles=user_roles, - ) + result.current_user = serialize_user_object(user) return result diff --git a/tests/unit_tests/mcp_service/system/tool/test_get_current_user.py b/tests/unit_tests/mcp_service/system/tool/test_get_current_user.py index 7ed815342c4..01ac357f3eb 100644 --- a/tests/unit_tests/mcp_service/system/tool/test_get_current_user.py +++ b/tests/unit_tests/mcp_service/system/tool/test_get_current_user.py @@ -221,6 +221,7 @@ class TestGetInstanceInfoCurrentUserViaMCP: mock_g_user.first_name = "Sophie" mock_g_user.last_name = "Beaumont" mock_g_user.email = "sophie@preset.io" + mock_g_user.active = True mock_g_user.roles = [mock_role] with (