Databricks SQL

Importante

Questa funzionalità è in Anteprima Pubblica.

Il server SQL MCP di Databricks è un server MCP gestito da Azure Databricks che permette agli agenti di eseguire SQL generato dall'IA sulle tabelle del tuo Catalogo Unity per leggere e scrivere dati, con accesso governato dai permessi del Catalogo Unity. Le query vengono eseguite in modo asincrono: l'agente chiama lo strumento per avviare una query, poi interroga fino al completamento della risposta.

Usa questo server per lo sviluppo e l'ingegneria dei dati: eseguire una query specifica scritta da te o il tuo agente di programmazione, ispezionare gli schemi, validare la sintassi SQL e creare pipeline dati da strumenti di codifica AI. Ti offre un controllo preciso e deterministico sull'esatta istruzione SQL che viene eseguita.

Modello URL Ambito OAuth
https://<workspace-hostname>/api/2.0/mcp/sql sql

Genie One MCP vs. Databricks server SQL MCP

Per casi d'uso nell'analisi, in cui un utente pone una domanda aziendale in linguaggio naturale, usa invece il server MCP di Genie One . Genie risolve i termini aziendali tramite Genie Ontology, il tuo livello semantico governato, quindi produce risposte più accurate rispetto a un agente che scrive SQL direttamente su tabelle grezze.

Usa il server SQL MCP di Databricks quando devi eseguire una query specifica già scritta, come per validare la sintassi o per creare una pipeline.

_meta Parametri

_meta i parametri sono valori di configurazione che preimposta nel codice dell'agente per impostare il comportamento del server MCP in modo deterministico, invece di lasciare che l'LLM li generi dinamicamente al momento della chiamata dello strumento. Il server SQL MCP di Databricks supporta il seguente _meta parametro:

Nome del parametro Type Description
warehouse_id str ID del warehouse SQL da usare per l'esecuzione di query.
Esempio: "a1b2c3d4e5f67890"
Se non specificato, il sistema seleziona automaticamente un magazzino in base alle risorse e alle autorizzazioni.

Esempio: specificare un warehouse SQL per le query SQL di Databricks

Questo esempio illustra come usare il warehouse_id_meta parametro per specificare quale SQL Warehouse esegue query dal server SQL MCP di Databricks usando il Python MCP SDK ufficiale.

In questo scenario si vuole:

  • Usare un'istanza specifica di SQL Warehouse per l'esecuzione di query anziché lasciare che il sistema ne selezioni automaticamente uno
  • Verifica prestazioni costanti instradando le query a un warehouse dedicato

Per eseguire questo esempio, configurare l'ambiente Python per lo sviluppo MCP gestito:

Per trovare l'ID del tuo SQL Warehouse, vedere Connetti a un SQL Warehouse.

# 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

  • Nessun contesto semantico. Il server gestisce l'SQL che gli viene assegnato. Non risolve termini di business, definizioni di metriche o relazioni di tabelle, quindi un agente deve dedurli solo dagli schemi. Per domande di analisi poste in linguaggio naturale, usa il server MCP di Genie One, che basa le risposte in Ontologia Genie.
  • Dimensione del risultato. Il server tronca grandi insiemi di risultati nelle risposte degli strumenti per evitare di esaurire la finestra contestuale del modello. Restituisci meno righe e colonne, oppure aggrega in SQL, per mantenere i risultati entro il limite.
  • Esecuzione asincrona. Le query non restituiscono risultati sincronamente. L'agente avvia una query, poi interroga fino al completamento, quindi deve gestire gli stati in corso.