Databricks SQL

Important

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Databricks SQL MCP-server är en Azure Databricks-hanterad MCP-server som låter agenter köra AI-genererad SQL mot dina Unity Catalog-tabeller för att läsa och skriva data, med åtkomst styrd av Unity Catalog-behörigheter. Frågor körs asynkront: agenten anropar verktyget för att starta en förfrågan och pollar sedan tills svaret är klart.

Använd denna server för utveckling och datateknik: kör en specifik fråga som du eller din kodningsagent har skrivit, inspektera scheman, validera SQL-syntax och skapa datapipelines från AI-kodningsverktyg. Det ger dig deterministisk kontroll över exakt vilken SQL som körs.

URL-mönster OAuth-omfång
https://<workspace-hostname>/api/2.0/mcp/sql sql

Genie One MCP vs. Databricks SQL MCP-servrar

För analysanvändningsfall, där en användare ställer en affärsfråga på naturligt språk, använd istället Genie One MCP-servern . Genie löser affärstermer genom Genie-ontologi, ditt styrda semantiska lager, så den ger mer exakta svar än en agent som skriver SQL direkt mot råtabeller.

Använd Databricks SQL MCP-server när du behöver köra en specifik fråga du redan skrivit, som att validera syntax eller skapa en pipeline.

_meta Parametrar

_meta parametrar är konfigurationsvärden som du förinställer i din agentkod för att deterministiskt sätta MCP-serverns beteende, istället för att låta LLM:n generera dem dynamiskt vid verktygsanrop. Databricks SQL MCP-server stöder följande _meta parameter:

Parameternamn Type Description
warehouse_id str ID:t för SQL-datalagret som ska användas för att köra frågor.
Exempel: "a1b2c3d4e5f67890"
Om det inte anges väljer systemet automatiskt ett lager baserat på resurser och behörigheter.

Exempel: ange ett SQL-lager för Databricks SQL-frågor

Det här exemplet visar hur du använder parametern warehouse_id_meta för att ange vilket SQL-lager som kör frågor från Databricks SQL MCP-servern med hjälp av den officiella Python MCP SDK.

I det här scenariot vill du:

  • Använd ett specifikt SQL-lager för frågekörning i stället för att låta systemet välja ett automatiskt
  • Verifiera konsekventa prestanda genom att dirigera frågor till ett dedikerat lager

Om du vill köra det här exemplet konfigurerar du Python-miljön för hanterad MCP-utveckling:

Information om hur du hittar ditt SQL-lager-ID finns i Ansluta till ett SQL-lager.

# Import required libraries for MCP client and Databricks authentication
import asyncio
from databricks.sdk import WorkspaceClient
from databricks_mcp.oauth_provider import DatabricksOAuthClientProvider
from mcp.client.streamable_http import streamablehttp_client
from mcp.client.session import ClientSession
from mcp.types import CallToolRequest, CallToolResult

async def run_dbsql_tool_call_with_meta():
    # Initialize Databricks workspace client for authentication
    workspace_client = WorkspaceClient()

    # Construct the MCP server URL for DBSQL
    # Replace <workspace-hostname> with your workspace hostname
    mcp_server_url = "https://<workspace-hostname>/api/2.0/mcp/sql"

    # Establish connection to the MCP server with OAuth authentication
    async with streamablehttp_client(
        url=mcp_server_url,
        auth=DatabricksOAuthClientProvider(workspace_client),
    ) as (read_stream, write_stream, _):

        # Create an MCP session for making tool calls
        async with ClientSession(read_stream, write_stream) as session:
            # Initialize the session before making requests
            await session.initialize()

            # Create the tool call request with warehouse_id in _meta
            request = CallToolRequest(
                method="tools/call",
                params={
                    # Tool name for executing SQL queries
                    "name": "execute_sql",

                    # Dynamic arguments - typically provided by your AI agent
                    "arguments": {
                        "query": "SELECT * FROM my_catalog.my_schema.my_table LIMIT 10"
                    },

                    # Meta parameters - specify which warehouse to use
                    "_meta": {
                        "warehouse_id": "a1b2c3d4e5f67890"  # Your SQL warehouse ID
                    }
                }
            )

            # Send the request and get the response
            response = await session.send_request(request, CallToolResult)
            return response

# Execute the async function and get results
response = asyncio.run(run_dbsql_tool_call_with_meta())

Limitations

  • Ingen semantisk kontext. Servern kör den SQL den får. Den löser inte affärstermer, metrikdefinitioner eller tabellrelationer, så en agent måste dra slutsatser enbart från scheman. För analysfrågor som ställs på naturligt språk, använd Genie One MCP-servern, som grundar svaren i Genie-ontologi.
  • Resultatstorlek. Servern förkortar stora resultatmängder i verktygssvar för att undvika att modellens kontextfönster blir uttömt. Returnera färre rader och kolumner, eller aggregera i SQL, för att hålla resultaten inom gränsen.
  • Asynkron körning. Frågor returneras inte synkront. Agenten startar en förfrågan och kontrollerar sedan regelbundet tills den slutförs, så den måste kunna hantera tillstånd där processen fortfarande pågår.