/ Каталог / Песочница / Azure Data API Builder (MCP)
● Официальный Azure 🔑 Нужен свой ключ

Azure Data API Builder (MCP)

автор Azure · Azure/data-api-builder

Официальный open-source инструмент Microsoft, который превращает Azure SQL, Cosmos DB, Postgres или MySQL в REST + GraphQL + MCP-эндпоинты — один конфиг-файл, без кода.

Data API Builder (DAB) — это поддерживаемый Azure способ разместить реляционное или NoSQL-хранилище за хорошо известными протоколами, включая MCP. Вы пишете JSON-конфиг, перечисляя сущности, связи и политики; DAB запускает процесс, который открывает их как REST, GraphQL и (с 2026 года) MCP-инструменты. Поддерживаются Azure SQL, SQL Server, Cosmos DB (NoSQL + PostgreSQL), Postgres, MySQL и Azure Data Lake. Аутентификация через Static Web Apps, Easy Auth или JWT.

Зачем использовать

Ключевые функции

Живое демо

Как выглядит на практике

azure-data-api-builder-mcp.replay ▶ готово
0/0

Установка

Выберите клиент

~/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"
      ]
    }
  }
}

Откройте Claude Desktop → Settings → Developer → Edit Config. Перезапустите после сохранения.

~/.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 использует ту же схему mcpServers, что и Claude Desktop. Конфиг проекта приоритетнее глобального.

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"
      ]
    }
  }
}

Щёлкните значок MCP Servers на боковой панели Cline, затем "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"
      ]
    }
  }
}

Тот же формат, что и Claude Desktop. Перезапустите Windsurf для применения.

~/.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 использует массив объектов серверов, а не map.

~/.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"
        ]
      }
    }
  }
}

Добавьте в context_servers. Zed перезагружается автоматически.

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

Однострочная команда. Проверить: claude mcp list. Удалить: claude mcp remove.

Сценарии использования

Реальные сценарии: Azure Data API Builder (MCP)

Открыть Azure SQL для Claude с контролем доступа по ролям

👤 Azure-команды; аналитики, которым нужны запросы, а не дамп данных ⏱ ~30 min intermediate

Когда использовать: У вас есть внутренняя Azure SQL БД и вы хотите, чтобы AI-агент читал её со строгими правами по таблицам, а не с правами администратора.

Предварительные требования
  • Строка подключения Azure SQL — Azure Portal → SQL DB → Строки подключения
  • Docker установлен локально — Docker Desktop или любая OCI-среда выполнения
Поток
  1. Сгенерировать dab-config.json
    Create a DAB config that exposes the Customers and Orders tables read-only over MCP. Connect to my Azure SQL via env var DAB_CONN.✓ Скопировано
    → dab-config.json записан с обеими сущностями и actions: ["read"]
  2. Запустить локально
    Spin up DAB locally via Docker on port 5000 and verify the MCP endpoint responds.✓ Скопировано
    → GET /api/Customers возвращает строки; список MCP-инструментов показывает сущности
  3. Подключить к Claude
    Add the local DAB MCP to my Claude config and ask: 'Top 10 customers by orders in 2026.'✓ Скопировано
    → Claude возвращает результат, составляя read-вызовы

Итог: Claude может запрашивать базу данных в строго заданных границах, а не через прямой SQL.

Подводные камни
  • Брандмауэр Azure SQL блокирует локальный IP Docker — Разрешите свой IP в Azure Portal → SQL Server → Networking, или запустите DAB внутри Azure

Обернуть Cosmos DB NoSQL в слой GraphQL+MCP

👤 Команды на Cosmos, которым нужен доступ LLM без написания отдельного API ⏱ ~40 min advanced

Когда использовать: У вас есть контейнер Cosmos NoSQL и нужен доступ на чтение/запись из Claude с политиками на уровне полей.

Предварительные требования
  • Аккаунт и контейнер Cosmos DB — Azure Portal — запишите строку подключения и имена базы/контейнера
Поток
  1. Настроить сущность
    Add an entity for Cosmos container products with a JSON schema mapped from the actual docs. Allow read+update; require role 'editor' for updates.✓ Скопировано
    → Обновлённый dab-config.json с блоком permissions
  2. Настроить Easy Auth
    Add a JWT auth provider config with the issuer of my Entra tenant.✓ Скопировано
    → Добавлен блок аутентификации; DAB его применяет
  3. Проверить политики
    Try a write as anonymous (should fail), then with editor token (should succeed).✓ Скопировано
    → 401, затем 200 — политики работают

Итог: Безопасная поверхность Cosmos для Claude — чтение открыто, запись ограничена.

Подводные камни
  • Схема Cosmos динамическая, но DAB требует типов GraphQL — Предоставьте файл схемы GraphQL; DAB переключится на REST, если схемы нет

Открыть хранимую процедуру как MCP-инструмент

👤 DBA с закалённой бизнес-логикой в TSQL ⏱ ~25 min advanced

Когда использовать: Существующие хранимые процедуры инкапсулируют бизнес-правила, и лучше открыть их для Claude, чем давать прямой доступ к таблицам.

Поток
  1. Определить сущность
    In dab-config, add entity GetSalesByRegion of type stored-procedure pointing to dbo.usp_GetSalesByRegion. Map parameters to MCP tool inputs.✓ Скопировано
    → Хранимая процедура отображается как вызываемый MCP-инструмент
  2. Проверить
    Call GetSalesByRegion for region='APAC', period='2026Q1'.✓ Скопировано
    → Возвращены строки результата

Итог: Бизнес-логика остаётся в БД, AI просто вызывает её.

Подводные камни
  • Хранимая процедура возвращает несколько наборов результатов — DAB возвращает первый; рефакторьте до одного набора или разбейте на несколько процедур

Комбинации

Сочетайте с другими MCP — эффект x10

azure-data-api-builder-mcp + filesystem

Сохранять dab-config.json и сгенерированную GraphQL-схему в репозитории

azure-data-api-builder-mcp + github

Открывать PR при изменении конфига DAB

Инструменты

Что предоставляет этот MCP

ИнструментВходные данныеКогда вызыватьСтоимость
list_entities (нет) Узнать, что открыто бесплатно
<entity>.read filter?, top?, select?, orderby? Стандартное чтение; замените <entity> на имя сущности 1 запрос к БД за вызов
<entity>.create fields object Только при наличии прав на создание 1 INSERT в БД
<storedproc> настроенные параметры Инкапсулированная бизнес-логика 1 вызов БД

Стоимость и лимиты

Во что обходится

Квота API
Ограничен уровнем вашей Azure БД
Токенов на вызов
100–2000 в зависимости от возвращаемых строк
Деньги
DAB бесплатен; вы платите за БД. Локальный Docker не добавляет затрат.
Совет
Используйте top + select, чтобы ограничивать наборы результатов и делать token-затраты предсказуемыми

Безопасность

Права, секреты, радиус поражения

Минимальные скоупы: Роль чтения в БД (например, db_datareader для read-only)
Хранение учётных данных: Строка подключения через переменную среды или Azure Managed Identity (предпочтительно в Azure)
Исходящий трафик: Остаётся в Azure при развёртывании DAB в Azure
Никогда не давайте: db_owner DDL rights

Устранение неполадок

Частые ошибки и исправления

Login failed for user

Проверьте строку подключения — DAB нужен SQL или Entra-аккаунт, которые существуют; брандмауэр должен разрешать хост

Проверить: Запустите `sqlcmd` с того же хоста с теми же учётными данными
Сущность не найдена в списке MCP-инструментов

Перезапустите DAB после редактирования dab-config.json — конфиг загружается один раз при старте

Проверить: Проверьте логи контейнера на наличие 'Entity X registered'
Отсутствуют GraphQL-типы для Cosmos

Предоставьте schema.graphql рядом с dab-config.json или установите GraphQL.Mode = REST-only

Альтернативы

Azure Data API Builder (MCP) в сравнении

АльтернативаКогда использоватьКомпромисс
HasuraВам нужна более полноценная GraphQL-поверхность и MCP пока не требуетсяHasura шире, но тяжелее; DAB ориентирован на Azure и легче
Direct Postgres MCP / Postgres MCP serverВы не на Azure и просто хотите прямой доступ к PostgresPostgres MCP проще; DAB применяет политики на уровне сущностей и строк

Ещё

Ресурсы

📖 Читать официальный README на GitHub

🐙 Открытые задачи

🔍 Все 400+ MCP-серверов и Skills