/ Directorio / Playground / Azure Data API Builder (MCP)
● Oficial Azure 🔑 Requiere tu clave

Azure Data API Builder (MCP)

por Azure · Azure/data-api-builder

La herramienta oficial de código abierto de Microsoft que convierte Azure SQL, Cosmos DB, Postgres o MySQL en endpoints REST + GraphQL + MCP — un archivo de configuración, sin código.

Data API Builder (DAB) es la forma respaldada por Azure para poner tu almacén relacional o NoSQL detrás de protocolos bien conocidos, incluido MCP. Escribes un archivo de configuración JSON que lista entidades, relaciones y políticas; DAB arranca un proceso que las expone como REST, GraphQL y (desde 2026) herramientas MCP. Soporta Azure SQL, SQL Server, Cosmos DB (NoSQL + PostgreSQL), Postgres, MySQL y Azure Data Lake. Autenticación mediante Static Web Apps, Easy Auth o JWT.

Por qué usarlo

Características clave

Demo en vivo

Cómo se ve en la práctica

azure-data-api-builder-mcp.replay ▶ listo
0/0

Instalar

Elige tu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "azure-data-api-builder-mcp": {
      "command": "docker",
      "args": [
        "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"
      ]
    }
  }
}

Abre Claude Desktop → Settings → Developer → Edit Config. Reinicia después de guardar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "azure-data-api-builder-mcp": {
      "command": "docker",
      "args": [
        "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"
      ]
    }
  }
}

Cursor usa el mismo esquema mcpServers que Claude Desktop. La configuración del proyecto prevalece sobre la global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "azure-data-api-builder-mcp": {
      "command": "docker",
      "args": [
        "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"
      ]
    }
  }
}

Haz clic en el icono MCP Servers de la barra lateral de Cline y luego en "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "azure-data-api-builder-mcp": {
      "command": "docker",
      "args": [
        "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"
      ]
    }
  }
}

Mismo formato que Claude Desktop. Reinicia Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "azure-data-api-builder-mcp",
      "command": "docker",
      "args": [
        "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"
      ]
    }
  ]
}

Continue usa un array de objetos de servidor en lugar de un mapa.

~/.config/zed/settings.json
{
  "context_servers": {
    "azure-data-api-builder-mcp": {
      "command": {
        "path": "docker",
        "args": [
          "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"
        ]
      }
    }
  }
}

Añádelo a context_servers. Zed recarga en caliente al guardar.

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

Un solo comando. Verifica con claude mcp list. Quita con claude mcp remove.

Casos de uso

Usos del mundo real: Azure Data API Builder (MCP)

Exponer una base de datos Azure SQL a Claude con acceso basado en roles

👤 Equipos en el ecosistema Azure; analistas que necesitan consultar, no solo volcar datos ⏱ ~30 min intermediate

Cuándo usarlo: Tienes una Azure SQL interna y quieres que el agente de IA la lea con permisos estrictos por tabla, sin acceso de administrador total.

Requisitos previos
  • Cadena de conexión de Azure SQL — Desde Azure Portal → SQL DB → Cadenas de conexión
  • Docker instalado localmente — Docker Desktop o cualquier runtime OCI
Flujo
  1. Generar dab-config.json
    Crea una configuración DAB que exponga las tablas Customers y Orders solo lectura mediante MCP. Conéctate a mi Azure SQL mediante la variable de entorno DAB_CONN.✓ Copiado
    → dab-config.json escrito con ambas entidades y actions: ["read"]
  2. Ejecutar localmente
    Levanta DAB localmente mediante Docker en el puerto 5000 y verifica que el endpoint MCP responde.✓ Copiado
    → GET /api/Customers devuelve filas; la lista de herramientas MCP muestra las entidades
  3. Conectar a Claude
    Añade el DAB MCP local a mi configuración de Claude y pregunta: 'Los 10 mejores clientes por pedidos en 2026.'✓ Copiado
    → Claude devuelve el resultado componiendo llamadas de lectura

Resultado: Claude puede consultar la base de datos dentro de límites estrictos configurados, no mediante SQL directo.

Errores comunes
  • El firewall de Azure SQL bloquea la IP local de Docker — Permite tu IP en Azure Portal → SQL Server → Redes, o ejecuta DAB dentro de Azure

Envolver Cosmos DB NoSQL detrás de una capa GraphQL+MCP

👤 Equipos ya en Cosmos que quieren acceso LLM sin una API personalizada ⏱ ~40 min advanced

Cuándo usarlo: Tienes un contenedor Cosmos NoSQL y necesitas acceso de lectura/escritura desde Claude con políticas a nivel de campo.

Requisitos previos
  • Cuenta Cosmos DB + contenedor — Desde Azure Portal — anota la cadena de conexión y los nombres de base de datos/contenedor
Flujo
  1. Configurar la entidad
    Añade una entidad para el contenedor Cosmos products con un esquema JSON mapeado desde los documentos reales. Permite lectura+actualización; requiere rol 'editor' para actualizaciones.✓ Copiado
    → dab-config.json actualizado con bloque de permisos
  2. Configurar Easy Auth
    Añade una configuración de proveedor JWT con el emisor de mi tenant de Entra.✓ Copiado
    → Bloque de autenticación añadido; DAB lo aplica
  3. Verificar políticas
    Prueba una escritura como anónimo (debe fallar), luego con token de editor (debe funcionar).✓ Copiado
    → 401 y luego 200 — confirma que las políticas se aplican

Resultado: Una superficie Cosmos segura para Claude — lecturas abiertas, escrituras controladas.

Errores comunes
  • El esquema de Cosmos es dinámico pero DAB requiere tipos GraphQL — Proporciona un archivo de esquema GraphQL; DAB cae de vuelta a REST si no

Exponer un procedimiento almacenado como herramienta MCP

👤 DBAs con lógica de negocio consolidada en TSQL ⏱ ~25 min advanced

Cuándo usarlo: Los procedimientos almacenados existentes encapsulan reglas de negocio y prefieres exponerlos a Claude antes que dar acceso directo a las tablas.

Flujo
  1. Definir la entidad
    En dab-config, añade la entidad GetSalesByRegion de tipo stored-procedure apuntando a dbo.usp_GetSalesByRegion. Mapea los parámetros como inputs de herramienta MCP.✓ Copiado
    → El procedimiento almacenado aparece como herramienta MCP invocable
  2. Probar
    Llama a GetSalesByRegion para region='APAC', period='2026Q1'.✓ Copiado
    → Filas de resultado devueltas

Resultado: La lógica de negocio permanece en la base de datos; la IA simplemente la invoca.

Errores comunes
  • El procedimiento almacenado devuelve múltiples conjuntos de resultados — DAB devuelve el primero; refactoriza a un único conjunto o divide en múltiples procedimientos

Combinaciones

Combínalo con otros MCPs para multiplicar por 10

azure-data-api-builder-mcp + filesystem

Persiste dab-config.json y el esquema GraphQL generado en tu repo

azure-data-api-builder-mcp + github

Abrir un PR cuando cambia la configuración DAB

Herramientas

Lo que expone este MCP

HerramientaEntradasCuándo llamarCoste
list_entities (ninguno) Descubrir qué está expuesto gratis
<entity>.read filter?, top?, select?, orderby? Lectura estándar; reemplaza <entity> 1 consulta de BD por llamada
<entity>.create fields object Solo cuando los permisos permiten crear 1 inserción en BD
<storedproc> parámetros configurados Lógica de negocio encapsulada 1 llamada a BD

Coste y límites

Lo que cuesta ejecutarlo

Cuota de API
Limitado por tu nivel de Azure DB
Tokens por llamada
100–2000 dependiendo de las filas devueltas
Monetario
DAB es gratis; pagas el coste de tu BD. Docker local no añade coste.
Consejo
Usa top + select para mantener los conjuntos de resultados acotados y que los costes de tokens sean predecibles

Seguridad

Permisos, secretos, alcance

Ámbitos mínimos: Rol de lectura en BD (p. ej. db_datareader para solo lectura)
Almacenamiento de credenciales: Cadena de conexión mediante variable de entorno o Azure Managed Identity (preferido en Azure)
Salida de datos: Permanece dentro de Azure si despliegas DAB en Azure
No conceder nunca: db_owner derechos DDL

Resolución de problemas

Errores comunes y soluciones

Login failed for user

Verifica la cadena de conexión — DAB necesita una cuenta SQL o Entra que exista; el firewall debe permitir el host

Verificar: Ejecuta `sqlcmd` desde el mismo host con las mismas credenciales
Entidad no aparece en la lista de herramientas MCP

Reinicia DAB tras editar dab-config.json — la configuración se carga una sola vez al arrancar

Verificar: Revisa los logs del contenedor para 'Entity X registered'
Tipos GraphQL faltantes para Cosmos

Proporciona schema.graphql junto a dab-config.json o establece GraphQL.Mode = REST-only

Alternativas

Azure Data API Builder (MCP) vs otros

AlternativaCuándo usarlaContrapartida
HasuraQuieres una superficie GraphQL más pulida y no necesitas MCP todavíaHasura es más amplio pero más pesado; DAB está alineado con Azure y es más ligero
Postgres MCP directo / servidor Postgres MCPNo estás en Azure y solo quieres acceso directo a PostgresPostgres MCP es más simple; DAB aplica políticas por entidad y por fila

Más

Recursos

📖 Lee el README oficial en GitHub

🐙 Ver issues abiertas

🔍 Ver todos los 400+ servidores MCP y Skills