Databricks SQL MCP serwer

Serwer SQL MCP Databricks pozwala agentom uruchamiać generowany przez AI SQL na tabelach Unity Catalog, aby odczytywać i zapisywać dane, a dostęp jest regulowany uprawnieniami Unity Catalog. Zapytania działają asynchronicznie: agent wywołuje narzędzie, aby rozpocząć zapytanie, a następnie przeprowadza ankiety aż do zakończenia odpowiedzi.

Important

Aby używać system.ai.dbsql, system.ai.sandbox lub system.ai.web_search, administrator konta musi włączyć wersję beta Unity Gateway na stronie Wersje zapoznawcze w konsoli konta. Zobacz Podglądy konta.

Używaj tego serwera do programowania i inżynierii danych: uruchamiania konkretnego zapytania napisanego przez Ciebie lub agenta kodującego, sprawdzania schematów, weryfikowania składni SQL oraz tworzenia potoków danych przy użyciu narzędzi AI do kodowania. Daje pełną kontrolę nad dokładnie tym kodem SQL, który jest wykonywany.

MCP domyślnie pozwala na odczyty i zapisy. Aby ustawić go jako tylko do odczytu, ustaw disallow_writes na system.ai.dbsql_policy we wbudowanej zasadzie true. Zobacz Zastosuj zasady.

Genie One MCP kontra serwery SQL MCP Databricks

W przypadku pytań biznesowych zadawanych w języku naturalnym Databricks poleca serwer Genie One MCP. Genie rozpoznaje terminy biznesowe za pomocą Genie Ontology, czyli sterowanej warstwy semantycznej. Daje to dokładniejsze odpowiedzi niż agent piszący SQL bezpośrednio względem surowych tabel.

Korzystaj z serwera SQL MCP Databricks, gdy musisz uruchomić konkretne zapytanie, które napisałeś ty lub twój agent programujący, na przykład do weryfikacji składni lub tworzenia potoku.

Aby zadać pytania ograniczone do jednego wyselekcjonowanego agenta Genie, użyj serwera MCP Genie Agent. Porównanie wszystkich trzech serwerów można znaleźć w artykule Wybierz między Genie One, Genie Agent i Databricks SQL MCP serwerami.

Połącz swojego agenta

Użyj tego adresu URL z przewodnikiem konfiguracyjnym swojego agenta kodującego lub konfiguracją agenta Python:

Wzorzec adresu URL Zakres OAuth
https://<workspace-hostname>/ai-gateway/mcp-services/system.ai.dbsql ai-gateway

Poproś swojego agenta, żeby uruchomił SELECT 1 AS result. Potwierdź, że wywołuje narzędzie MCP i zwraca 1.

_meta Parametry

_meta parametry to wartości konfiguracyjne, które ustawiasz w kodzie agenta, aby deterministycznie ustawić zachowanie serwera MCP, zamiast pozwalać LLM generować je dynamicznie w czasie wywołania narzędzia. Serwer SQL MCP Databricks obsługuje następujące _meta parametry:

Nazwa parametru Typ Description
warehouse_id str Identyfikator usługi SQL Warehouse do użycia do wykonywania zapytań.
Przykład: "a1b2c3d4e5f67890"
Jeśli nie zostanie określony, system automatycznie wybiera magazyn na podstawie zasobów i uprawnień.

Przykład: określanie magazynu SQL dla zapytań SQL usługi Databricks

W tym przykładzie pokazano, jak użyć parametru warehouse_id_meta, aby określić, który magazyn SQL wykonuje zapytania z serwera Databricks SQL MCP przy użyciu oficjalnego SDK MCP dla języka Python.

W tym scenariuszu chcesz:

  • Używanie określonego magazynu SQL na potrzeby wykonywania zapytań zamiast zezwalania systemowi na automatyczne wybranie jednego
  • Weryfikowanie spójnej wydajności przez kierowanie zapytań do dedykowanego magazynu

Aby uruchomić ten przykład, skonfiguruj środowisko języka Python na potrzeby tworzenia zarządzanych aplikacji MCP:

Aby znaleźć identyfikator usługi SQL Warehouse, zobacz Nawiązywanie połączenia z usługą 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>/ai-gateway/mcp-services/system.ai.dbsql"

    # 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

  • Brak kontekstu semantycznego. Serwer uruchamia SQL, które otrzymał. Nie rozwiązuje terminów biznesowych, definicji metryk ani relacji tabelowych, więc agent musi je wywnioskować wyłącznie ze schematów. Do pytań analitycznych zadawanych w języku naturalnym używaj serwera MCP Genie One, który opiera odpowiedzi na ontologii Genie.
  • Rozmiar wyniku. Serwer obcina duże zbiory wyników w odpowiedziach narzędzi, aby uniknąć wyczerpania okna kontekstowego modelu. Zwracaj mniej wierszy i kolumn lub agreguj w SQL, aby wyniki mieściły się w limicie.
  • Wykonywanie asynchroniczne. Zapytania nie wracają synchronicznie. Agent rozpoczyna zapytanie, a następnie cyklicznie sprawdza jego status aż do jego zakończenia, więc musi obsługiwać stany pośrednie.

Punkt końcowy obszaru roboczego

Ten punkt końcowy znajduje się w podglądzie publicznym.

Dla istniejących integracji używaj https://<workspace-hostname>/api/2.0/mcp/sql z zakresem sql OAuth. Ten endpoint korzysta z podglądu przestrzeni roboczej Managed MCP Servers oraz uprawnień do zasobów bazowych. Wywołania omijają śledzenie Unity Gateway, granty MCP, polityki i zabezpieczenia. Do nowych integracji użyj system.ai.dbsql.