A ferramenta oficial open source da Microsoft que transforma Azure SQL, Cosmos DB, Postgres ou MySQL em endpoints REST, GraphQL e MCP — apenas um arquivo de configuração, sem código.
O Data API Builder (DAB) é a forma suportada pelo Azure de colocar seu banco de dados relacional ou NoSQL por trás de protocolos bem conhecidos, incluindo MCP. Você escreve um arquivo JSON de configuração que lista entidades, relacionamentos e políticas; o DAB inicia um processo que os expõe como ferramentas REST, GraphQL e (desde 2026) MCP. Suporta Azure SQL, SQL Server, Cosmos DB (NoSQL + PostgreSQL), Postgres, MySQL e Azure Data Lake. Autenticação via Static Web Apps, Easy Auth ou JWT.
Adicione em context_servers. Zed recarrega automaticamente ao salvar.
claude mcp add azure-data-api-builder-mcp -- docker run --rm -i -v ${PWD}/dab-config.json:/App/dab-config.json:ro -e DAB_ENVIRONMENT=Production mcr.microsoft.com/azure-databases/data-api-builder:latest --ConfigFileName /App/dab-config.json
Uma linha só. Verifique com claude mcp list. Remova com claude mcp remove.
Casos de uso
Usos do mundo real: Azure Data API Builder (MCP)
Expor um banco de dados Azure SQL ao Claude com controle de acesso por papel
👤 Equipes do ecossistema Azure; analistas que precisam consultar, não apenas fazer dump⏱ ~30 minintermediate
Quando usar: Você tem um Azure SQL interno e quer que o agente de IA o leia com permissões restritas por tabela, não com acesso de administrador total.
Pré-requisitos
String de conexão do Azure SQL — Portal do Azure → SQL DB → Connection strings
Docker instalado localmente — Docker Desktop ou qualquer runtime OCI
Fluxo
Gerar dab-config.json
Crie uma configuração DAB que expõe as tabelas Customers e Orders somente leitura via MCP. Conecte ao Azure SQL via variável de ambiente DAB_CONN.✓ Copiado
→ dab-config.json escrito com ambas as entidades e actions: ["read"]
Executar localmente
Suba o DAB localmente via Docker na porta 5000 e verifique se o endpoint MCP responde.✓ Copiado
→ GET /api/Customers retorna linhas; a lista de ferramentas MCP mostra as entidades
Conectar ao Claude
Adicione o DAB MCP local à minha configuração do Claude e pergunte: 'Top 10 clientes por pedidos em 2026.'✓ Copiado
→ Claude retorna o resultado compondo chamadas de leitura
Resultado: O Claude pode consultar o banco de dados dentro dos limites configurados, não via SQL direto.
Armadilhas
O firewall do Azure SQL bloqueia o IP do Docker local — Permita seu IP no Portal do Azure → SQL Server → Networking, ou execute o DAB dentro do Azure
Encapsular o Cosmos DB NoSQL em uma camada GraphQL+MCP
👤 Equipes já no Cosmos que querem acesso via LLM sem uma API customizada⏱ ~40 minadvanced
Quando usar: Você tem um container Cosmos NoSQL e precisa de acesso de leitura/escrita pelo Claude com políticas por campo.
Pré-requisitos
Conta Cosmos DB + container — No Portal do Azure — anote a string de conexão e os nomes do banco de dados/container
Fluxo
Configurar entidade
Adicione uma entidade para o container Cosmos products com schema JSON mapeado dos documentos reais. Permita leitura e atualização; exija o papel 'editor' para atualizações.✓ Copiado
→ dab-config.json atualizado com bloco de permissões
Configurar Easy Auth
Adicione uma configuração de provedor JWT com o issuer do meu tenant Entra.✓ Copiado
→ Bloco de autenticação adicionado; DAB passa a aplicá-lo
Verificar políticas
Tente uma escrita como anônimo (deve falhar), depois com token de editor (deve ter sucesso).✓ Copiado
→ 401 depois 200 — comprova que as políticas estão sendo aplicadas
Resultado: Uma superfície Cosmos segura para o Claude — leituras abertas, escritas bloqueadas.
Armadilhas
O schema do Cosmos é dinâmico, mas o DAB exige tipos GraphQL — Forneça um arquivo de schema GraphQL; o DAB recai para REST se você não o fizer
Expor uma stored procedure como ferramenta MCP
👤 DBAs com lógica de negócio consolidada em TSQL⏱ ~25 minadvanced
Quando usar: Stored procedures existentes encapsulam regras de negócio e você prefere expô-las ao Claude em vez de dar acesso direto às tabelas.
Fluxo
Definir a entidade
No dab-config, adicione a entidade GetSalesByRegion do tipo stored-procedure apontando para dbo.usp_GetSalesByRegion. Mapeie os parâmetros para inputs da ferramenta MCP.✓ Copiado
→ A stored proc aparece como ferramenta MCP chamável
Testar
Chame GetSalesByRegion para region='APAC', period='2026Q1'.✓ Copiado
→ Linhas de resultado retornadas
Resultado: A lógica de negócio permanece no banco de dados; o agente simplesmente a chama.
Armadilhas
A stored proc retorna múltiplos conjuntos de resultado — O DAB retorna o primeiro; refatore para um único conjunto ou divida em múltiplas procs
Compare com a main; se houver alteração, abra um PR com o título 'DAB config update'.✓ Copiado
Ferramentas
O que este MCP expõe
Ferramenta
Entradas
Quando chamar
Custo
list_entities
(nenhum)
Descobrir o que está exposto
gratuito
<entity>.read
filter?, top?, select?, orderby?
Leitura padrão; substitua <entity>
1 query no banco de dados por chamada
<entity>.create
fields object
Apenas quando as permissões permitem criação
1 insert no banco de dados
<storedproc>
configured params
Lógica de negócio encapsulada
1 chamada ao banco de dados
Custo e limites
O que custa rodar
Cota de API
Limitado pelo tier do seu banco de dados Azure
Tokens por chamada
100 a 2000 dependendo das linhas retornadas
Monetário
DAB é gratuito; você paga pelo custo do banco de dados. Docker local sem custo adicional.
Dica
Use top + select para manter os conjuntos de resultados limitados e os custos de token previsíveis
Segurança
Permissões, segredos, alcance
Escopos mínimos:DB read role (ex.: db_datareader para somente leitura)
Armazenamento de credenciais: String de conexão via variável de ambiente ou Azure Managed Identity (preferido no Azure)
Saída de dados: Fica dentro do Azure se você implantar o DAB no Azure
Nunca conceda:db_ownerDDL rights
As políticas por tabela são aplicadas pelo DAB, não pelo banco de dados. Se você contornar o DAB e conectar diretamente ao banco, essas políticas não se aplicam.
Solução de problemas
Erros comuns e correções
Login failed for user
Verifique a string de conexão — o DAB precisa de uma conta SQL ou Entra que exista; o firewall deve permitir o host
Verificar: Execute `sqlcmd` do mesmo host com as mesmas credenciais
Entidade não encontrada na lista de ferramentas MCP
Reinicie o DAB após editar o dab-config.json — a configuração é carregada uma vez na inicialização
Verificar: Verifique os logs do container por 'Entity X registered'
Tipos GraphQL ausentes para o Cosmos
Forneça schema.graphql junto ao dab-config.json ou configure GraphQL.Mode = REST-only
Alternativas
Azure Data API Builder (MCP) vs. outros
Alternativa
Quando usar
Troca
Hasura
Você quer uma superfície GraphQL mais polida e ainda não precisa de MCP
O Hasura é mais abrangente, mas mais pesado; o DAB é alinhado ao Azure e mais leve
Postgres MCP direto / servidor Postgres MCP
Você não está no Azure e só quer acesso direto ao Postgres
O Postgres MCP é mais simples; o DAB aplica políticas por entidade e por linha