Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Le serveur MCP (SQL Model Context Protocol) est disponible dans le Générateur d’API de données version 1.7 et ultérieure.
SQL MCP Server prend en charge deux transports : http streamable pour les scénarios hébergés et cloud, ainsi que stdio pour le développement local et l’intégration directe de l’agent. Cet article traite du stdio transport.
En stdio mode, le générateur d’API de données (DAB) communique entièrement avec un client MCP sur une entrée/sortie standard (stdin/stdout). Aucun serveur HTTP ou port réseau n’est démarré. Le client MCP lance DAB en tant que processus enfant et canalise les messages à l’aide du protocole MCP (Model Context Protocol).
Quand utiliser stdio le transport
| Scénario | Transport recommandé |
|---|---|
| Développement local sur une station de travail développeur | stdio |
| VS Code avec GitHub Copilot (mode agent) | stdio |
| Pipelines CI/CD ou automatisation des agents via scripts | stdio |
| Hébergement cloud (Container Apps, App Service) | HTTP |
| Agent AI Foundry avec point de terminaison MCP distant | HTTP |
| Équipes d’agents partageant le même point de terminaison | HTTP |
Choisissez stdio quand vous souhaitez la configuration locale la plus simple possible sans ports ouverts. Choisissez HTTP lorsque le serveur MCP doit être accessible sur un réseau.
Prerequisites
- Interface CLI du Générateur d’API de données installée (version 1.7 ou ultérieure)
- Existant
dab-config.jsonavec MCP activé (voir Configuration requise) - Un client compatible MCP (VS Code avec GitHub Copilot, Claude Desktop ou un agent personnalisé)
Configuration nécessaire
Avant d’utiliser stdio le transport, activez MCP dans votre dab-config.json:
"runtime": {
"mcp": {
"enabled": true,
"path": "/mcp",
"dml-tools": {
"describe-entities": true,
"create-record": true,
"read-records": true,
"update-record": true,
"delete-record": true,
"execute-entity": true,
"aggregate-records": true
}
}
}
Le path champ est utilisé uniquement pour le transport HTTP et est ignoré en stdio mode. Le dml-tools bloc contrôle les opérations de manipulation de données disponibles en tant qu’outils MCP.
Important
Si "mcp": { "enabled": false } ou le mcp bloc est manquant, DAB ne parvient pas à démarrer en stdio mode.
Démarrer en stdio mode
Utilisez l’indicateur --mcp-stdio sur dab start:
dab start --mcp-stdio --config ./dab-config.json
Pour s’exécuter sous un rôle d’autorisation spécifique :
dab start --mcp-stdio role:authenticated --config ./dab-config.json
L’argument role:<name> est positionnel et doit immédiatement suivre --mcp-stdio. S’il est omis, le rôle est défini par défaut sur anonymous. Le nom du rôle doit correspondre à un rôle défini dans la permissions section d’au moins une entité de votre configuration.
Comment fonctionne le mode stdio
Lorsqu’il --mcp-stdio est détecté, DAB apporte les modifications suivantes en interne :
Encodage UTF-8 (aucune marque d’ordre d’octet)
Les entrées et sorties de la console sont forcées d'utiliser UTF-8 sans marque d'ordre des octets (BOM). Ce paramètre UTF-8 est requis pour la communication propre JSON-over-stdio , car de nombreux clients MCP rejettent les flux avec préfixe BOM.
Authentification du simulateur
Le fournisseur d’authentification est remplacé par le mode Simulateur , quel que soit le fichier de configuration spécifié. Ce mode simulateur permet d’appliquer directement le rôle spécifié sans un véritable jeton web JSON (JWT) ou un fournisseur d’identité. Le fournisseur de simulateur est conçu pour les scénarios de développement et ne doit pas être utilisé pour sécuriser les points de terminaison HTTP de production, mais il est exactement approprié pour les sessions locales stdio .
Les valeurs suivantes sont appliquées en mémoire et remplacent votre configuration pendant la session :
| Clé | Valeur |
|---|---|
MCP:StdioMode |
"true" |
MCP:Role |
"<role-name>" ou "anonymous" |
Runtime:Host:Authentication:Provider |
"Simulator" |
Aucun écouteur HTTP
L’hôte ASP.NET Core démarre ; tous les services sont enregistrés, mais DAB appelle stdio.RunAsync() au lieu de host.Run(). Aucun port TCP (Transmission Control Protocol) n’est lié. Tous les messages de protocole MCP transitent par stdin/stdout.
Outils MCP disponibles
Les outils suivants sont disponibles en stdio mode, en fonction de votre configuration de dml-tools et des autorisations d'entité :
| Outil | Description |
|---|---|
describe_entities |
Répertorie les entités disponibles et leurs champs et autorisations |
create_record |
Insère un nouvel enregistrement (tables uniquement) |
read_records |
Lit les enregistrements d’une entité |
update_record |
Met à jour un enregistrement existant |
delete_record |
Supprime un enregistrement existant (tables et vues) |
execute_entity |
Exécute une entité de procédure stockée |
aggregate_records |
Effectue des requêtes de type agrégation sur des tables et des vues |
Les outils MCP personnalisés soutenus par des procédures stockées sont également inscrits lorsque vous utilisez --mcp-stdio.
Configurer un client MCP pour stdio
Clients MCP prenant en charge le transport stdio lancent DAB comme sous-processus et transfèrent ses données viastdin/stdout. La syntaxe de configuration du client varie selon le client.
VS Code (mcp.json)
{
"servers": {
"sql-mcp-server": {
"type": "stdio",
"command": "dab",
"args": [
"start",
"--mcp-stdio", "role:anonymous",
"--config", "{path}/dab-config.json",
"--LogLevel", "error"
]
}
}
}
Enregistrez ce fichier sous le nom .vscode/mcp.json dans votre dossier de projet. VS Code détecte automatiquement la configuration et affiche le serveur dans MCP : Répertorier les serveurs. Étant donné que le client gère le cycle de vie du processus, vous n’avez pas besoin d’exécuter dab start séparément dans un terminal.
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"sql-mcp-server": {
"type": "stdio",
"command": "dab",
"args": [
"start",
"--mcp-stdio", "role:anonymous",
"--config", "{path}/dab-config.json",
"--LogLevel", "error"
]
}
}
}
Combiner avec d’autres dab start options
--mcp-stdio est compatible avec toutes les autres dab start options :
| Choix | Comportement avec --mcp-stdio |
|---|---|
--config |
Utilise le fichier de configuration spécifié (identique au mode HTTP) |
--LogLevel |
Applique le niveau de journal spécifié (errorrecommandé pour stdio) |
dab start \
--mcp-stdio role:api-reader \
--config ./dab-config.json \
--LogLevel Error
Résoudre les problèmes du stdio mode
Failed to start the engine in MCP stdio mode
DAB n’a pas pu démarrer. Vérifiez les éléments suivants :
- Votre fichier de configuration est valide : exécuter
dab validate --config <path> - Votre chaîne de connexion à la base de données est correcte et accessible
- MCP est activé dans votre configuration :
"mcp": { "enabled": true }
Autorisation refusée pour des appels de l’outil MCP
Le rôle spécifié par role:<name> ne dispose pas des autorisations requises pour l’entité et l’opération. Vérifiez la permissions section de l’entité appropriée dans votre configuration.
Outils MCP non répertoriés
Soit dml-tools est défini globalement, soit l'entité a false dans ses paramètres "dml-tools": false. Vérifiez également que mcp.enabled est true.
Erreurs de sortie ou d'analyse JSON illisibles.
Vérifiez que rien dans votre code de démarrage n'écrit de texte non JSON dans le flux de sortie standard (stdout) avant le démarrage du serveur MCP. La sortie du journal doit accéder à stderr ou à un fichier journal, et non à stdout. Utilisez --LogLevel pour supprimer les messages de démarrage détaillés si nécessaire.