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.
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 minintermediate
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
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"]
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
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 minadvanced
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
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
Configurer Easy Auth
Add a JWT auth provider config with the issuer of my Entra tenant.✓ Copié
→ Bloc Authentication ajouté ; DAB l'applique
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 minadvanced
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
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
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
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_ownerDroits DDL
Les politiques par table sont appliquées par DAB, pas par la DB. Si vous contournez DAB et vous connectez directement à la DB, ces politiques ne s'appliquent pas.
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
Alternative
Quand l'utiliser
Compromis
Hasura
Vous voulez une surface GraphQL plus soignée et n'avez pas encore besoin de MCP
Hasura est plus large mais plus lourd ; DAB est aligné Azure et plus léger
Postgres MCP direct / serveur Postgres MCP
Vous n'êtes pas sur Azure et voulez simplement un accès Postgres brut
Postgres MCP est plus simple ; DAB applique des politiques par entité/par ligne