Skip to main content
Glama

execute_sql

Execute SQL queries on Snowflake databases, manage warehouses, and retrieve query results with specified row limits using the DataPilot MCP Server.

Instructions

Execute a SQL query on Snowflake and return results

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
requestYes

Implementation Reference

  • The primary handler function for the 'execute_sql' tool. Registered via @mcp.tool() decorator. Handles SQL execution using SnowflakeClient, provides user feedback via context, and returns QueryResult.
    @mcp.tool() async def execute_sql(request: SQLQueryRequest, ctx: Context) -> QueryResult: """Execute a SQL query on Snowflake and return results""" await ctx.info(f"Executing SQL query: {request.query[:100]}...") try: client = await get_snowflake_client() result = await client.execute_query( request.query, request.limit, request.warehouse ) if result.success: await ctx.info(f"Query executed successfully. {result.row_count} rows returned.") else: await ctx.error(f"Query failed: {result.error}") return result except Exception as e: logger.error(f"Error executing SQL: {str(e)}") await ctx.error(f"Failed to execute query: {str(e)}") return QueryResult( success=False, data=[], columns=[], row_count=0, error=str(e) )
  • Pydantic model defining the input parameters for the execute_sql tool: query (required), limit, warehouse.
    class SQLQueryRequest(BaseModel): """Request model for SQL query execution""" query: str = Field(..., description="SQL query to execute") limit: Optional[int] = Field(None, description="Maximum number of rows to return") warehouse: Optional[str] = Field(None, description="Warehouse to use for this query")
  • Pydantic model defining the output structure returned by the execute_sql tool.
    class QueryResult(BaseModel): """Result of a SQL query execution""" success: bool data: List[Dict[str, Any]] columns: List[str] row_count: int execution_time_ms: Optional[int] = None query_id: Optional[str] = None warehouse_used: Optional[str] = None error: Optional[str] = None
  • src/main.py:73-73 (registration)
    FastMCP @mcp.tool() decorator registers the execute_sql function as an MCP tool.
    @mcp.tool()

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/rickyb30/datapilot-mcp-server'

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