bricks and context

Servidor MCP de nível de produção para Databricks: SQL Warehouses, Jobs API, suporte a múltiplos workspaces.

Documentação

🧱 Bricks and Context

Servidor Model Context Protocol (MCP) de nível de produção para Databricks

CI Python 3.10+ License: MIT MCP

SQL Warehouses · Jobs API · Multi-Workspace · Construído para Agentes de IA


✨ O que é isso?

Bricks and Context permite que assistentes de IA (Cursor, Claude Desktop, etc.) conversem diretamente com seus workspaces Databricks por meio do Model Context Protocol.

Pense nisso como uma ponte: sua IA faz perguntas, este servidor as traduz em chamadas de API do Databricks e retorna respostas estruturadas e amigáveis para IA.

Por que usar isso?

Ponto de DorComo resolvemos
A IA fica sobrecarregada com resultados de consulta enormesSaídas limitadas — limites configuráveis de linhas/bytes/células
Conexões instáveis causam falhas aleatóriasTentativas + circuit breakers — tolerância a falhas automática
Gerenciar múltiplos ambientes é tediosoMulti-workspace — alterne entre dev/prod com um parâmetro
Respostas brutas da API confundem modelos de IATabelas Markdown — saída estruturada e otimizada para LLM

🔧 Ferramentas Disponíveis

Descoberta de SQL e Schemas
FerramentaO que faz
execute_sql_queryExecuta SQL com saída limitada e segura para IA
discover_schemasLista todos os schemas no workspace
discover_tablesLista tabelas em um schema com metadados
describe_tableObtém tipos de coluna, nulidade, estrutura
get_table_samplePré-visualiza linhas para exploração de dados
connection_healthVerifica a conectividade com Databricks
Gerenciamento de Jobs
FerramentaO que faz
list_jobsLista jobs com filtro opcional por nome
get_job_detailsConfiguração completa do job: agendamento, cluster, tarefas
get_job_runsHistórico de execuções com estado e duração
trigger_jobInicia um job com parâmetros opcionais
cancel_job_runPara um job em execução
get_job_run_outputRecupera logs, erros, saída do notebook
Observabilidade
FerramentaO que faz
cache_statsTaxas de acerto, uso de memória, detalhamento por categoria
performance_statsLatências de operação, taxas de erro, saúde

🚀 Início Rápido

1. Clone e Instale

git clone https://github.com/laraib-sidd/bricks-and-context.git
cd bricks-and-context
uv sync  # or: pip install -e .

2. Configure os Workspaces

Copie o modelo e adicione suas credenciais:

cp auth.template.yaml auth.yaml

Edite auth.yaml:

default_workspace: dev

workspaces:
  - name: dev
    host: your-dev.cloud.databricks.com
    token: dapi...
    http_path: /sql/1.0/warehouses/...

  - name: prod
    host: your-prod.cloud.databricks.com
    token: dapi...
    http_path: /sql/1.0/warehouses/...

💡 auth.yaml está no gitignore. Seus segredos permanecem locais.

3. Execute

python run_mcp_server.py

🎯 Integração com Cursor

O Cursor usa transporte stdio e não herda o ambiente do seu shell. Você precisa de caminhos explícitos.

Passo 1: Garanta que as dependências estejam instaladas

cd /path/to/bricks-and-context
uv sync

Passo 2: Abra as configurações de MCP no Cursor

Cmd+Shift+P"Abrir Configurações de MCP" → Abre ~/.cursor/mcp.json

Passo 3: Adicione esta configuração

Usando uv run (recomendado):

{
  "mcpServers": {
    "databricks": {
      "command": "uv",
      "args": [
        "--directory", "/path/to/bricks-and-context",
        "run", "python", "run_mcp_server.py"
      ],
      "env": {
        "MCP_AUTH_PATH": "/path/to/bricks-and-context/auth.yaml",
        "MCP_CONFIG_PATH": "/path/to/bricks-and-context/config.json"
      }
    }
  }
}

Ou usando venv diretamente:

{
  "mcpServers": {
    "databricks": {
      "command": "/path/to/bricks-and-context/.venv/bin/python",
      "args": ["/path/to/bricks-and-context/run_mcp_server.py"],
      "env": {
        "MCP_AUTH_PATH": "/path/to/bricks-and-context/auth.yaml",
        "MCP_CONFIG_PATH": "/path/to/bricks-and-context/config.json"
      }
    }
  }
}

Passo 4: Reinicie o Cursor

Recarregue a janela para ativar o servidor MCP.

Teste

Pergunte à sua IA:

  • "Liste meus jobs do Databricks"
  • "Execute SELECT 1 no Databricks"
  • "Descreva a tabela catalog.schema.my_table"

🌐 Multi-Workspace

Defina vários workspaces em auth.yaml e selecione por chamada:

execute_sql_query(sql="SELECT 1", workspace="prod")
list_jobs(limit=10, workspace="dev")

Quando workspace for omitido, o servidor usa default_workspace.


⚙️ Configuração

config.json — Configurações ajustáveis (commitadas)

ConfiguraçãoPadrãoDescrição
max_connections10Tamanho do pool de conexões
max_result_rows200Máximo de linhas retornadas por consulta
max_result_bytes262144Tamanho máximo da resposta (256KB)
max_cell_chars200Trunca valores longos de células
allow_write_queriesfalseHabilita INSERT/UPDATE/DELETE
enable_sql_retriestrueRepete falhas transitórias de SQL
enable_query_cachefalseArmazena em cache consultas repetidas
query_cache_ttl_seconds300TTL do cache
databricks_api_timeout_seconds30Timeout da API de Jobs

Qualquer configuração pode ser substituída por variável de ambiente (em maiúsculas, ex.: MAX_RESULT_ROWS=500).


🏗️ Arquitetura

┌─────────────────────────────────────────────────────────────────┐
│                   MCP Client (Cursor / Claude)                  │
└─────────────────────────────────────────────────────────────────┘
                                │ stdio
                                ▼
┌─────────────────────────────────────────────────────────────────┐
│                     FastMCP Server                              │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────────┐  │
│  │ SQL Tools   │  │ Job Tools   │  │ Observability           │  │
│  └──────┬──────┘  └──────┬──────┘  └───────────┬─────────────┘  │
└─────────┼────────────────┼─────────────────────┼────────────────┘
          │                │                     │
          ▼                ▼                     ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────────┐
│ Connection Pool  │ │  Job Manager     │ │ Cache / Perf Monitor │
│  (SQL Connector) │ │  (REST API 2.1)  │ │                      │
└────────┬─────────┘ └────────┬─────────┘ └──────────────────────┘
         │                    │
         └────────┬───────────┘
                  ▼
┌─────────────────────────────────────────────────────────────────┐
│                   Databricks Workspace(s)                       │
│              SQL Warehouse        Jobs Service                  │
└─────────────────────────────────────────────────────────────────┘

🛡️ Recursos de Confiabilidade

RecursoDescrição
Saídas limitadasLimites de linhas, bytes e caracteres por célula evitam estouro de memória
Pool de conexõesThread-safe com validação de saúde por conexão
Tentativas com backoffBackoff exponencial + jitter para falhas transitórias
Circuit breakersIsolamento automático de falhas, evita falhas em cascata
Cache de consultasCache opcional baseado em TTL para consultas repetidas

🧑‍💻 Desenvolvimento

uv sync --dev        # Install dev dependencies
uv run pytest        # Run tests
uv run black .       # Format code
uv run mypy src/     # Type check

📄 Licença

MIT — veja LICENSE