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.
Note
La fonctionnalité SQL MCP Server 2.0 décrite dans cette section est actuellement en préversion et peut changer avant la disponibilité générale. Pour plus d’informations, consultez Nouveautés de la version 2.0.
SQL MCP Server expose des tables et des vues par le biais d’outils DML (Generic Data Manipulation Language). Pour les procédures stockées, vous pouvez aller plus loin : définir custom-tool: true sur l’entité afin que la procédure apparaisse dans la liste des outils MCP en tant qu’outil nommé et conçu à usage. Les agents IA le découvrent par nom, consultez sa description et appelez-le directement, sans SQL requis.
Important
Les noms d’outils personnalisés sont dérivés du nom de l’entité, mais convertis en snake_case. Par exemple, une entité nommée GetProductById devient get_product_by_id dans la liste des outils MCP. Utilisez le nom snake_case lors de l’appel de l’outil. Le nom de l’entité PascalCase n’est pas accepté comme nom d’outil.
Le reste de cet article montre comment ajouter, configurer et tester un outil MCP personnalisé soutenu par une procédure stockée.
Prerequisites
- Générateur d’API de données version 2.0 ou ultérieure
- Base de données SQL Server avec au moins une procédure stockée
- Existant
dab-config.jsonavec MCP activé - Interface CLI DAB installée
Activer MCP dans votre configuration
Si ce n’est déjà fait, activez MCP dans la section runtime.
dab configure --runtime.mcp.enabled true
Cela ajoute ce qui suit à votre dab-config.json:
{
"runtime": {
"mcp": {
"enabled": true
}
}
}
Ajouter la procédure stockée en tant qu’outil personnalisé
Utiliser dab add avec --source.type stored-procedure et --mcp.custom-tool true.
dab add GetProductById \
--source dbo.get_product_by_id \
--source.type "stored-procedure" \
--permissions "anonymous:execute" \
--mcp.custom-tool true
Cela produit l’entité suivante dans dab-config.json:
{
"entities": {
"GetProductById": {
"source": {
"object": "dbo.get_product_by_id",
"type": "stored-procedure"
},
"graphql": {
"enabled": true,
"operation": "mutation",
"type": {
"singular": "GetProductById",
"plural": "GetProductByIds"
}
},
"rest": {
"enabled": true,
"methods": [
"post"
]
},
"permissions": [
{
"role": "anonymous",
"actions": [
{
"action": "execute"
}
]
}
],
"mcp": {
"custom-tool": true
}
}
}
}
Important
La custom-tool propriété est valide uniquement sur les entités de procédure stockée. Le placement de cette entité sur une table ou une vue entraîne une erreur de configuration au démarrage du système.
Ajouter une description pour améliorer la précision de l’agent
Sans description, les agents ne voient que le nom GetProductByIdtechnique . Avec une description, ils comprennent ce qu’il fait et quand l’utiliser.
dab update GetProductById \
--description "Returns full product details including pricing and inventory for a given product ID"
{
"entities": {
"GetProductById": {
"description": "Returns full product details including pricing and inventory for a given product ID",
"source": {
"object": "dbo.get_product_by_id",
"type": "stored-procedure"
},
"fields": [],
"graphql": {
"enabled": true,
"operation": "mutation",
"type": {
"singular": "GetProductById",
"plural": "GetProductByIds"
}
},
"rest": {
"enabled": true,
"methods": [
"post"
]
},
"permissions": [
{
"role": "anonymous",
"actions": [
{
"action": "execute"
}
]
}
],
"mcp": {
"custom-tool": true
}
}
}
}
Vérifier que l’outil apparaît dans la liste des outils
Démarrez DAB et appelez le tools/list point de terminaison MCP pour confirmer que l’outil est inscrit.
dab start
Lorsqu’un client MCP appelle tools/list, la réponse inclut votre outil personnalisé en même temps que les outils DML :
{
"tools": [
{
"name": "get_product_by_id",
"description": "Returns full product details including pricing and inventory for a given product ID",
"inputSchema": {
"type": "object",
"properties": {}
}
}
]
}
Note
Le nom de l’outil utilise snake_case (par exemple, get_product_by_id pour l’entité GetProductById ). Actuellement, le inputSchema renvoie vide properties. Les agents s’appuient sur la description de l’outil et describe_entities pour déterminer les paramètres appropriés.
Configurer plusieurs outils personnalisés
Vous pouvez inscrire plusieurs procédures stockées en tant qu’outils personnalisés dans la même configuration.
dab add SearchProducts \
--source dbo.search_products \
--source.type "stored-procedure" \
--permissions "anonymous:execute" \
--mcp.custom-tool true \
--description "Full-text search across product names and descriptions"
dab add GetOrderSummary \
--source dbo.get_order_summary \
--source.type "stored-procedure" \
--permissions "authenticated:execute" \
--mcp.custom-tool true \
--description "Returns order totals and line item counts for a given customer"
Contrôler quels rôles peuvent appeler l’outil
Les outils personnalisés respectent le même contrôle d’accès en fonction du rôle (RBAC) que toutes les autres entités DAB. Définissez l’entité permissions pour restreindre les rôles pouvant exécuter la procédure.
{
"entities": {
"GetOrderSummary": {
"source": {
"object": "dbo.get_order_summary",
"type": "stored-procedure"
},
"graphql": {
"enabled": true,
"operation": "mutation",
"type": {
"singular": "GetOrderSummary",
"plural": "GetOrderSummarys"
}
},
"rest": {
"enabled": true,
"methods": [
"post"
]
},
"permissions": [
{
"role": "authenticated",
"actions": [
{
"action": "execute"
}
]
}
],
"mcp": {
"custom-tool": true
}
}
}
}
Lorsqu’un agent appelle avec le rôle anonymous, get_order_summary ne s'affiche pas dans tools/list et toute tentative directe de tools/call génère une erreur de permission.
Désactiver un outil personnalisé sans le supprimer
Définissez custom-tool sur false pour masquer l’outil aux agents sans supprimer l’entité.
dab update GetProductById \
--mcp.custom-tool false
L’entité reste dans la configuration et vous pouvez la réactiver ultérieurement en définissant --mcp.custom-tool true.