Skip to main content
Glama

execute-snowflake-sql

Run SQL queries on Snowflake and retrieve results directly through the Simple Snowflake MCP Server, designed to operate behind corporate proxies.

Instructions

Execute a SQL query on Snowflake and return the result.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sqlYesSQL query to execute

Implementation Reference

  • Handler logic for the 'execute-snowflake-sql' tool: parses arguments, executes SQL via helper, formats output in json/markdown/csv, returns TextContent.
    elif name == "execute-snowflake-sql": sql = args.get("sql") format_type = args.get("format", "json") if not sql: raise ValueError("'sql' parameter is required") result = _safe_snowflake_execute(sql, "SQL execution") if result["success"]: if format_type == "markdown" and isinstance(result["data"], list): output = _format_markdown_table(result["data"]) elif format_type == "csv" and isinstance(result["data"], list): if result["data"]: import csv, io output_buffer = io.StringIO() writer = csv.DictWriter(output_buffer, fieldnames=result["data"][0].keys()) writer.writeheader() writer.writerows(result["data"]) output = output_buffer.getvalue() else: output = "No data returned" else: output = json.dumps(result["data"], indent=2, default=str) return [types.TextContent(type="text", text=output)] else: return [types.TextContent(type="text", text=f"Snowflake error: {result['error']}")]
  • Input JSON schema for the tool defining 'sql' (required string) and 'format' (optional enum: json/markdown/csv).
    inputSchema={ "type": "object", "properties": { "sql": { "type": "string", "description": "SQL query to execute", "minLength": 1, "examples": ["SELECT CURRENT_TIMESTAMP()", "SHOW DATABASES"] }, "format": { "type": "string", "enum": ["json", "markdown", "csv"], "default": "json", "description": "Output format for results" } }, "required": ["sql"], "additionalProperties": False },
  • Tool registration in @server.list_tools() return list, including name, description, and input schema.
    types.Tool( name="execute-snowflake-sql", description="Execute a SQL query on Snowflake and return the result as JSON", inputSchema={ "type": "object", "properties": { "sql": { "type": "string", "description": "SQL query to execute", "minLength": 1, "examples": ["SELECT CURRENT_TIMESTAMP()", "SHOW DATABASES"] }, "format": { "type": "string", "enum": ["json", "markdown", "csv"], "default": "json", "description": "Output format for results" } }, "required": ["sql"], "additionalProperties": False }, ),
  • Helper function that performs the actual Snowflake connection, query execution, result fetching, and error handling used by the tool.
    def _safe_snowflake_execute(query: str, description: str = "Query") -> Dict[str, Any]: """ Safely execute a Snowflake query with proper error handling and logging. """ try: logger.info(f"Executing {description}: {query[:100]}...") ctx = snowflake.connector.connect(**SNOWFLAKE_CONFIG) cur = ctx.cursor() cur.execute(query) # Handle different query types if cur.description: rows = cur.fetchall() columns = [desc[0] for desc in cur.description] result = [dict(zip(columns, row)) for row in rows] else: result = {"status": "success", "rowcount": cur.rowcount} cur.close() ctx.close() logger.info(f"{description} completed successfully") return {"success": True, "data": result} except Exception as e: logger.error(f"{description} failed: {str(e)}") return {"success": False, "error": str(e), "data": None}

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/YannBrrd/simple_snowflake_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server