diff --git a/mcp_server_snowflake/object_manager/tools.py b/mcp_server_snowflake/object_manager/tools.py index fba3a45..799699c 100644 --- a/mcp_server_snowflake/object_manager/tools.py +++ b/mcp_server_snowflake/object_manager/tools.py @@ -310,8 +310,7 @@ def validate_object_tool( # User has not added any permissions, so we default to disallowing all object actions if len(sql_allow_list) == 0 and len(sql_disallow_list) == 0: valid = False - - if func_type in sql_allow_list: + elif func_type in sql_allow_list: valid = True elif func_type in sql_disallow_list: valid = False diff --git a/mcp_server_snowflake/semantic_manager/tools.py b/mcp_server_snowflake/semantic_manager/tools.py index 98ff864..47c5294 100644 --- a/mcp_server_snowflake/semantic_manager/tools.py +++ b/mcp_server_snowflake/semantic_manager/tools.py @@ -214,7 +214,6 @@ def write_semantic_view_query( statement += ")" # Close out the semantic sub-select - # Add optional clauses if where_clause: statement += f" WHERE {where_clause}" @@ -278,7 +277,7 @@ def validate_semantic_view_tool( # User has not added any permissions, so we default to disallowing all object actions if len(sql_allow_list) == 0 and len(sql_disallow_list) == 0: valid = False - if func_type in sql_allow_list: + elif func_type in sql_allow_list: valid = True elif func_type in sql_disallow_list: valid = False diff --git a/mcp_server_snowflake/server_utils.py b/mcp_server_snowflake/server_utils.py index 074910d..67ed979 100644 --- a/mcp_server_snowflake/server_utils.py +++ b/mcp_server_snowflake/server_utils.py @@ -4,6 +4,7 @@ from mcp_server_snowflake.object_manager.tools import validate_object_tool from mcp_server_snowflake.query_manager.tools import validate_sql_type +from mcp_server_snowflake.semantic_manager.tools import validate_semantic_view_tool class CheckQueryType(Middleware): @@ -34,6 +35,11 @@ async def on_call_tool(self, context: MiddlewareContext, call_next): tool_name, self.sql_allow_list, self.sql_disallow_list ) + elif "semantic" in tool_name.lower(): + statement_type, valid = validate_semantic_view_tool( + tool_name, self.sql_allow_list, self.sql_disallow_list + ) + # Allow other tools to proceed else: valid = True