Pular para o conteúdo principal

Databricks SQL

info

Visualização

Esse recurso está em Pré-lançamento público.

O servidor MCP do Databricks SQL é um servidor MCP gerenciado pelo Databricks que permite aos agentes realizar a execução de SQL gerado por AI em suas tabelas do Unity Catalog para ler e gravar dados, com acesso governado pelas permissões do Unity Catalog. [[ ## completed ##]] Use-o para construir pipelines de dados a partir de ferramentas de codificação de AI. As queries têm execução assíncrona: o agente chama a ferramenta para começar uma query e, em seguida, faz o polling até que a resposta seja concluída. [[ ## completed ##]]

Padrão de URL

Escopo OAuth

https://<workspace-hostname>/api/2.0/mcp/sql

sql

Padrão de URL

Escopo OAuth

https://<workspace-hostname>/api/2.0/mcp/sql

sql

_meta parâmetros

_meta parâmetros são valores de configuração que você predefine no código do seu agente para definir o comportamento do servidor MCP de forma determinística, em vez de deixar que o LLM os gere dinamicamente no momento da chamada da ferramenta. O servidor MCP do Databricks SQL aceita o seguinte parâmetro _meta:

Nome do parâmetro

Tipo

Descrição

warehouse_id

str

O ID do SQL warehouse a ser usado para executar queries.

Exemplo: "a1b2c3d4e5f67890"

Se não for especificado, o sistema seleciona automaticamente um warehouse com base em recursos e permissões.

Nome do parâmetro

Tipo

Descrição

warehouse_id

str

O ID do SQL warehouse a ser usado para executar queries.

Exemplo: "a1b2c3d4e5f67890"

Se não for especificado, o sistema seleciona automaticamente um warehouse com base em recursos e permissões.

Exemplo: especificar um SQL warehouse para queries do Databricks SQL

Este exemplo mostra como usar o parâmetro warehouse_id _meta para especificar qual SQL Warehouse realiza a execução de queries do servidor Databricks SQL MCP usando o Python MCP SDK oficial. [[ ## completed ##]]

Nesse cenário, você deseja:

  • Use um SQL warehouse específico para a execução da query em vez de deixar o sistema selecionar um automaticamente
  • Verifique o desempenho consistente roteando queries para um warehouse dedicado

Para execução deste exemplo, configure seu ambiente Python para desenvolvimento de MCP gerenciado:

Para encontrar o ID do seu SQL warehouse, consulte Conectar a um SQL warehouse.

Python
# 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
&quot;name&quot;: &quot;execute_sql&quot;,

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

# Meta parameters - specify which warehouse to use
&quot;_meta&quot;: {
&quot;warehouse_id&quot;: &quot;a1b2c3d4e5f67890&quot; # 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())