/ Annuaire / Playground / Azure Data API Builder (MCP)
● Officiel Azure 🔑 Nécessite votre clé

Azure Data API Builder (MCP)

par Azure · Azure/data-api-builder

L'outil open source officiel de Microsoft qui transforme Azure SQL, Cosmos DB, Postgres ou MySQL en endpoints REST + GraphQL + MCP — un fichier de config, pas de code.

Data API Builder (DAB) est la façon officielle d'Azure d'exposer votre store relationnel ou NoSQL derrière des protocoles connus, y compris MCP. Vous écrivez une config JSON qui liste les entités, les relations et les politiques ; DAB démarre un processus qui les expose en REST, GraphQL et (depuis 2026) en outils MCP. Il supporte Azure SQL, SQL Server, Cosmos DB (NoSQL + PostgreSQL), Postgres, MySQL et Azure Data Lake. Authentification via Static Web Apps, Easy Auth ou JWT.

Pourquoi l'utiliser

Fonctionnalités clés

Démo en direct

Aperçu en pratique

azure-data-api-builder-mcp.replay ▶ prêt
0/0

Installer

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

Ouvrez Claude Desktop → Settings → Developer → Edit Config. Redémarrez après avoir enregistré.

~/.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 utilise le même schéma mcpServers que Claude Desktop. La config projet l'emporte sur la 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"
      ]
    }
  }
}

Cliquez sur l'icône MCP Servers dans la barre latérale Cline, puis "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"
      ]
    }
  }
}

Même format que Claude Desktop. Redémarrez Windsurf pour appliquer.

~/.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 utilise un tableau d'objets serveur plutôt qu'une 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"
        ]
      }
    }
  }
}

Ajoutez dans context_servers. Zed recharge à chaud à la sauvegarde.

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

Une seule ligne. Vérifiez avec claude mcp list. Supprimez avec claude mcp remove.

Cas d'usage

Usages concrets : Azure Data API Builder (MCP)

Exposer une base de données Azure SQL à Claude avec accès basé sur les rôles

👤 Équipes sur Azure ; analystes qui ont besoin d'interroger, pas seulement de dumper ⏱ ~30 min intermediate

Quand l'utiliser : Vous avez une Azure SQL interne et souhaitez que l'agent AI la lise avec des permissions strictes par table, pas en mode admin tout-puissant.

Prérequis
  • Chaîne de connexion Azure SQL — Depuis Azure Portal → SQL DB → Connection strings
  • Docker installé localement — Docker Desktop ou tout runtime OCI
Déroulement
  1. Générer 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.✓ Copié
    → dab-config.json écrit avec les deux entités et actions: ["read"]
  2. Exécuter localement
    Spin up DAB locally via Docker on port 5000 and verify the MCP endpoint responds.✓ Copié
    → GET /api/Customers retourne des lignes ; la liste d'outils MCP affiche les entités
  3. Connecter à Claude
    Add the local DAB MCP to my Claude config and ask: 'Top 10 customers by orders in 2026.'✓ Copié
    → Claude retourne le résultat en composant des appels en lecture

Résultat : Claude peut interroger la base de données dans des limites strictement configurées, pas via SQL direct.

Pièges
  • Le pare-feu Azure SQL bloque l'IP Docker locale — Autorisez votre IP dans Azure Portal → SQL Server → Networking, ou exécutez DAB dans Azure

Envelopper Cosmos DB NoSQL derrière une couche GraphQL+MCP

👤 Équipes déjà sur Cosmos qui veulent un accès LLM sans API personnalisée ⏱ ~40 min advanced

Quand l'utiliser : Vous avez un conteneur Cosmos NoSQL et avez besoin d'un accès lecture/écriture depuis Claude avec des politiques au niveau champ.

Prérequis
  • Compte Cosmos DB + conteneur — Depuis Azure Portal — notez la chaîne de connexion et les noms base/conteneur
Déroulement
  1. Configurer l'entité
    Add an entity for Cosmos container products with a JSON schema mapped from the actual docs. Allow read+update; require role 'editor' for updates.✓ Copié
    → dab-config.json mis à jour avec le bloc permissions
  2. Configurer Easy Auth
    Add a JWT auth provider config with the issuer of my Entra tenant.✓ Copié
    → Bloc Authentication ajouté ; DAB l'applique
  3. Vérifier les politiques
    Try a write as anonymous (should fail), then with editor token (should succeed).✓ Copié
    → 401 puis 200 — prouve que les politiques sont appliquées

Résultat : Une surface Cosmos sécurisée pour Claude — lectures ouvertes, écritures protégées.

Pièges
  • Le schéma Cosmos est dynamique mais DAB nécessite des types GraphQL — Fournissez un fichier de schéma GraphQL ; DAB se replie sur REST si vous ne le faites pas

Exposer une procédure stockée comme outil MCP

👤 DBAs avec logique métier durcie en TSQL ⏱ ~25 min advanced

Quand l'utiliser : Les procédures stockées existantes encodent des règles métier et vous préférez les exposer à Claude plutôt qu'un accès direct aux tables.

Déroulement
  1. Définir l'entité
    In dab-config, add entity GetSalesByRegion of type stored-procedure pointing to dbo.usp_GetSalesByRegion. Map parameters to MCP tool inputs.✓ Copié
    → La procédure stockée apparaît comme outil MCP appelable
  2. Tester
    Call GetSalesByRegion for region='APAC', period='2026Q1'.✓ Copié
    → Lignes de résultats retournées

Résultat : La logique métier reste dans la base, l'AI l'appelle simplement.

Pièges
  • La procédure stockée retourne plusieurs jeux de résultats — DAB retourne le premier ; refactorisez en un seul jeu ou divisez en plusieurs procédures

Combinaisons

Associez-le à d'autres MCPs pour un effet X10

azure-data-api-builder-mcp + filesystem

Persister dab-config.json et le schéma GraphQL généré dans votre dépôt

azure-data-api-builder-mcp + github

Ouvrir une PR quand la config DAB change

Outils

Ce que ce MCP expose

OutilEntréesQuand appelerCoût
list_entities (aucun) Découvrir ce qui est exposé gratuit
<entity>.read filter?, top?, select?, orderby? Lecture standard ; remplacez <entity> 1 requête DB par appel
<entity>.create fields object Uniquement quand les permissions permettent la création 1 insertion DB
<storedproc> params configurés Logique métier encapsulée 1 appel DB

Coût et limites

Coût d'exécution

Quota d'API
Limité par votre tier Azure DB
Tokens par appel
100 à 2000 selon les lignes retournées
Monétaire
DAB est gratuit ; vous payez votre coût DB. Docker local n'ajoute aucun coût.
Astuce
Utilisez top + select pour garder les jeux de résultats bornés afin que les coûts en tokens restent prévisibles

Sécurité

Permissions, secrets, portée

Portées minimales : Rôle DB en lecture (ex. db_datareader pour lecture seule)
Stockage des identifiants : Chaîne de connexion via variable d'environnement ou Azure Managed Identity (préféré dans Azure)
Sortie de données : Reste dans Azure si vous déployez DAB dans Azure
Ne jamais accorder : db_owner Droits DDL

Dépannage

Erreurs courantes et correctifs

Échec de connexion pour l'utilisateur

Vérifiez la chaîne de connexion — DAB nécessite un compte SQL ou Entra qui existe ; le pare-feu autorise l'hôte

Vérifier : Exécutez `sqlcmd` depuis le même hôte avec les mêmes identifiants
Entité non trouvée dans la liste d'outils MCP

Redémarrez DAB après avoir modifié dab-config.json — la config est chargée une seule fois au démarrage

Vérifier : Vérifiez les logs du conteneur pour 'Entity X registered'
Types GraphQL manquants pour Cosmos

Fournissez schema.graphql aux côtés de dab-config.json ou définissez GraphQL.Mode = REST-only

Alternatives

Azure Data API Builder (MCP) vs autres

AlternativeQuand l'utiliserCompromis
HasuraVous voulez une surface GraphQL plus soignée et n'avez pas encore besoin de MCPHasura est plus large mais plus lourd ; DAB est aligné Azure et plus léger
Postgres MCP direct / serveur Postgres MCPVous n'êtes pas sur Azure et voulez simplement un accès Postgres brutPostgres MCP est plus simple ; DAB applique des politiques par entité/par ligne

Plus

Ressources

📖 Lire le README officiel sur GitHub

🐙 Voir les issues ouvertes

🔍 Parcourir les 400+ serveurs MCP et Skills