@@ -81,11 +81,12 @@ def create_databend_client():
8181 config = get_config ()
8282
8383 if config .local_mode :
84+ logger .info ("Creating Databend client local" )
8485 # Use local in-memory Databend
8586 import databend
86-
8787 return databend .SessionContext ()
8888 else :
89+ logger .info ("Creating Databend client dsn" )
8990 # Use remote Databend server
9091 from databend_driver import BlockingDatabendClient
9192
@@ -184,6 +185,24 @@ def _execute_sql(sql: str) -> dict:
184185 return {"status" : "error" , "message" : error_msg }
185186
186187
188+ def execute_multi_sql (sqls : list [str ]) -> list [dict ]:
189+ """
190+ Execute multiple SQL queries against Databend database with MCP safe mode protection.
191+
192+ Safe mode (enabled by default) blocks dangerous operations like DROP, DELETE,
193+ TRUNCATE, ALTER, UPDATE, and REVOKE. Set SAFE_MODE=false to disable.
194+
195+ Args:
196+ sqls: List of SQL query strings to execute
197+
198+ Returns:
199+ List of dictionaries containing either query results or error information
200+ """
201+ results = []
202+ for sql in sqls :
203+ results .append (execute_sql (sql ))
204+ return results
205+
187206def execute_sql (sql : str ) -> dict :
188207 """
189208 Execute SQL query against Databend database with MCP safe mode protection.
@@ -316,6 +335,7 @@ def create_stage(
316335
317336# Register all tools
318337mcp .add_tool (Tool .from_function (execute_sql ))
338+ mcp .add_tool (Tool .from_function (execute_multi_sql ))
319339mcp .add_tool (Tool .from_function (show_databases ))
320340mcp .add_tool (Tool .from_function (show_tables ))
321341mcp .add_tool (Tool .from_function (show_functions ))
0 commit comments