/ Verzeichnis / Playground / Azure Data API Builder (MCP)
● Offiziell Azure 🔑 Eigener Schlüssel nötig

Azure Data API Builder (MCP)

von Azure · Azure/data-api-builder

Microsofts offizielles Open-Source-Tool, das Azure SQL, Cosmos DB, Postgres oder MySQL per Konfigurationsdatei — ohne Code — in REST-, GraphQL- und MCP-Endpunkte verwandelt.

Data API Builder (DAB) ist der von Azure unterstützte Weg, einen relationalen oder NoSQL-Speicher hinter bekannten Protokollen, einschließlich MCP, zu exponieren. Eine JSON-Konfiguration mit Entitäten, Beziehungen und Richtlinien wird geschrieben; DAB startet einen Prozess, der diese als REST, GraphQL und (seit 2026) MCP-Tools bereitstellt. Azure SQL, SQL Server, Cosmos DB (NoSQL + PostgreSQL), Postgres, MySQL und Azure Data Lake werden unterstützt. Authentifizierung über Static Web Apps, Easy Auth oder JWT.

Warum nutzen

Hauptfunktionen

Live-Demo

In der Praxis

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

Installieren

Wählen Sie Ihren Client

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

Öffne Claude Desktop → Settings → Developer → Edit Config. Nach dem Speichern neu starten.

~/.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 nutzt das gleiche mcpServers-Schema wie Claude Desktop. Projektkonfiguration schlägt die globale.

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

Klicken Sie auf das MCP-Servers-Symbol in der Cline-Seitenleiste, dann "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"
      ]
    }
  }
}

Gleiche Struktur wie Claude Desktop. Windsurf neu starten zum Übernehmen.

~/.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 nutzt ein Array von Serverobjekten statt einer 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"
        ]
      }
    }
  }
}

In context_servers hinzufügen. Zed lädt beim Speichern neu.

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

Einzeiler. Prüfen mit claude mcp list. Entfernen mit claude mcp remove.

Anwendungsfälle

Praxisnahe Nutzung: Azure Data API Builder (MCP)

Eine Azure-SQL-Datenbank mit rollenbasiertem Zugriff für Claude bereitstellen

👤 Azure-Teams; Analysten, die abfragen, nicht nur exportieren möchten ⏱ ~30 min intermediate

Wann einsetzen: Du hast eine interne Azure-SQL-DB und möchtest, dass der AI-Agent sie mit strikten Tabellenberechtigungen lesen kann, nicht mit Administratorzugriff.

Voraussetzungen
  • Azure-SQL-Verbindungszeichenfolge — Im Azure-Portal → SQL DB → Verbindungszeichenfolgen
  • Docker lokal installiert — Docker Desktop oder eine beliebige OCI-Runtime
Ablauf
  1. dab-config.json generieren
    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.✓ Kopiert
    → dab-config.json mit beiden Entitäten und actions: ["read"] geschrieben
  2. Lokal ausführen
    Spin up DAB locally via Docker on port 5000 and verify the MCP endpoint responds.✓ Kopiert
    → GET /api/Customers gibt Zeilen zurück; MCP-Tool-Liste zeigt Entitäten
  3. Mit Claude verbinden
    Add the local DAB MCP to my Claude config and ask: 'Top 10 customers by orders in 2026.'✓ Kopiert
    → Claude gibt das Ergebnis durch kombinierte Read-Aufrufe zurück

Ergebnis: Claude kann die Datenbank innerhalb streng konfigurierter Grenzen abfragen, nicht per direktem SQL.

Fallstricke
  • Azure-SQL-Firewall blockiert die lokale Docker-IP — Deine IP im Azure-Portal → SQL Server → Netzwerk hinzufügen oder DAB innerhalb von Azure betreiben

Cosmos DB NoSQL hinter einer GraphQL+MCP-Schicht kapseln

👤 Teams, die bereits Cosmos nutzen und LLM-Zugriff ohne eigene API wünschen ⏱ ~40 min advanced

Wann einsetzen: Du hast einen Cosmos-NoSQL-Container und benötigst Lese-/Schreibzugriff von Claude mit Richtlinien auf Feldebene.

Voraussetzungen
  • Cosmos-DB-Konto und Container — Im Azure-Portal — Verbindungszeichenfolge sowie Datenbank- und Container-Namen notieren
Ablauf
  1. Entität konfigurieren
    Add an entity for Cosmos container products with a JSON schema mapped from the actual docs. Allow read+update; require role 'editor' for updates.✓ Kopiert
    → dab-config.json mit Berechtigungsblock aktualisiert
  2. Easy Auth einrichten
    Add a JWT auth provider config with the issuer of my Entra tenant.✓ Kopiert
    → Authentifizierungsblock hinzugefügt; DAB erzwingt ihn
  3. Richtlinien verifizieren
    Try a write as anonymous (should fail), then with editor token (should succeed).✓ Kopiert
    → 401, dann 200 — beweist die Richtliniendurchsetzung

Ergebnis: Eine sichere Cosmos-Oberfläche für Claude — Lesen offen, Schreiben gesperrt.

Fallstricke
  • Cosmos-Schema ist dynamisch, DAB benötigt jedoch GraphQL-Typen — Eine GraphQL-Schemadatei bereitstellen; DAB fällt ohne diese auf REST zurück

Eine Stored Procedure als MCP-Tool bereitstellen

👤 DBAs mit in TSQL eingebetteter Geschäftslogik ⏱ ~25 min advanced

Wann einsetzen: Bestehende Stored Procedures kodieren Geschäftsregeln und sollen Claude eher diese als direkten Tabellenzugriff exponieren.

Ablauf
  1. Entität definieren
    In dab-config, add entity GetSalesByRegion of type stored-procedure pointing to dbo.usp_GetSalesByRegion. Map parameters to MCP tool inputs.✓ Kopiert
    → Stored Proc erscheint als aufrufbares MCP-Tool
  2. Testen
    Call GetSalesByRegion for region='APAC', period='2026Q1'.✓ Kopiert
    → Ergebniszeilen zurückgegeben

Ergebnis: Geschäftslogik verbleibt in der Datenbank, der AI-Agent ruft sie nur auf.

Fallstricke
  • Stored Proc liefert mehrere Ergebnismengen — DAB gibt nur die erste zurück; Stored Proc refaktorieren oder in mehrere aufteilen

Kombinationen

Mit anderen MCPs für 10-fache Wirkung

azure-data-api-builder-mcp + filesystem

dab-config.json und das generierte GraphQL-Schema im Repository persistieren

azure-data-api-builder-mcp + github

Einen PR öffnen, wenn sich die DAB-Konfiguration ändert

Werkzeuge

Was dieses MCP bereitstellt

WerkzeugEingabenWann aufrufenKosten
list_entities (keine) Verfügbare Entitäten erkunden kostenlos
<entity>.read filter?, top?, select?, orderby? Standard-Lesen; <entity> ersetzen 1 DB-Abfrage pro Aufruf
<entity>.create fields object Nur wenn Berechtigungen das Erstellen erlauben 1 DB-Insert
<storedproc> konfigurierte Parameter Gekapselte Geschäftslogik 1 DB-Aufruf

Kosten & Limits

Was der Betrieb kostet

API-Kontingent
Durch das Azure-DB-Tier begrenzt
Tokens pro Aufruf
100–2000 je nach zurückgegebenen Zeilen
Kosten in €
DAB ist kostenlos; du zahlst deine DB-Kosten. Lokales Docker hat keine Zusatzkosten.
Tipp
top + select nutzen, um Ergebnismengen begrenzt zu halten, damit Token-Kosten vorhersehbar bleiben

Sicherheit

Rechte, Secrets, Reichweite

Minimale Scopes: DB-Leserolle (z. B. db_datareader für Read-Only)
Credential-Speicherung: Verbindungszeichenfolge per Umgebungsvariable oder Azure Managed Identity (in Azure bevorzugt)
Datenabfluss: Bleibt in Azure, wenn DAB in Azure betrieben wird
Niemals gewähren: db_owner DDL-Rechte

Fehlerbehebung

Häufige Fehler und Lösungen

Login fehlgeschlagen für Benutzer

Verbindungszeichenfolge prüfen — DAB benötigt ein vorhandenes SQL- oder Entra-Konto; Firewall erlaubt den Host

Prüfen: `sqlcmd` vom selben Host mit denselben Anmeldedaten ausführen
Entität nicht in der MCP-Tool-Liste gefunden

DAB nach Bearbeitung von dab-config.json neu starten — Konfiguration wird einmalig beim Start geladen

Prüfen: Container-Logs auf 'Entity X registered' prüfen
GraphQL-Typen für Cosmos fehlen

schema.graphql neben dab-config.json bereitstellen oder GraphQL.Mode = REST-only setzen

Alternativen

Azure Data API Builder (MCP) vs. andere

AlternativeWann stattdessenKompromiss
HasuraDu möchtest eine ausgefeiltere GraphQL-Oberfläche und benötigst noch kein MCPHasura ist umfangreicher, aber schwerer; DAB ist Azure-ausgerichtet und schlanker
Direct Postgres MCP / Postgres MCP serverDu nutzt kein Azure und möchtest einfach rohen Postgres-ZugriffPostgres MCP ist einfacher; DAB erzwingt Entitäts- und Zeilenrichtlinien

Mehr

Ressourcen

📖 Offizielle README auf GitHub lesen

🐙 Offene Issues ansehen

🔍 Alle 400+ MCP-Server und Skills durchsuchen