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
SQL MCP Server est en préversion et cette documentation et l’implémentation du moteur est susceptible de changer pendant cette période d’évaluation.
SQL MCP Server expose six outils DML (Data Manipulation Language) aux agents IA. Ces outils fournissent une surface CRUD typée pour les opérations de base de données : création, lecture, mise à jour et suppression d’enregistrements, ainsi que l’exécution de procédures stockées. Tous les outils respectent le contrôle d’accès en fonction du rôle (RBAC), les autorisations d’entité et les stratégies définies dans votre configuration.
Qu’est-ce que les outils DML ?
Les outils DML (Data Manipulation Language) gèrent les opérations de données : création, lecture, mise à jour et suppression d’enregistrements, ainsi que l’exécution de procédures stockées. Contrairement à DDL (Data Definition Language) qui modifie le schéma, DML fonctionne exclusivement sur le plan de données dans les tables et vues existantes.
Les six outils DML sont les suivants :
-
describe_entities- Découvre les entités et les opérations disponibles -
create_record- Insère de nouvelles lignes -
read_records- Requêtes des tables et des vues -
update_record- Modifie les lignes existantes -
delete_record- Supprime les lignes -
execute_entity- Exécute des procédures stockées
Lorsque les outils DML sont activés globalement et pour une entité, SQL MCP Server les expose via le protocole MCP. Les agents n’interagissent jamais directement avec votre schéma de base de données : ils fonctionnent via la couche d’abstraction du générateur d’API de données.
Les outils
réponse liste_outils
Lorsqu’un agent appelle list_tools, SQL MCP Server retourne :
{
"tools": [
{ "name": "describe_entities" },
{ "name": "create_record" },
{ "name": "read_records" },
{ "name": "update_record" },
{ "name": "delete_record" },
{ "name": "execute_entity" }
]
}
décrire_les_entités
Retourne les entités disponibles pour le rôle actuel. Chaque entrée inclut les noms de champs, les types de données, les clés primaires et les opérations autorisées. Cet outil n’interroge pas la base de données. Au lieu de cela, il lit à partir de la configuration en mémoire générée à partir de votre fichier de configuration.
{
"entities": [
{
"name": "Products",
"description": "Product catalog with pricing and inventory",
"fields": [
{
"name": "ProductId",
"type": "int",
"isKey": true,
"description": "Unique product identifier"
},
{
"name": "ProductName",
"type": "string",
"description": "Display name of the product"
},
{
"name": "Price",
"type": "decimal",
"description": "Retail price in USD"
}
],
"operations": [
"read_records",
"update_record"
]
}
]
}
Note
Les options d’entité utilisées par l’un des outils CRUD et d’exécution DML proviennent directement de describe_entities. La description sémantique interne attachée à chaque outil applique ce flux en deux étapes.
créer_enregistrement
Crée une ligne dans une table. Nécessite une autorisation de création sur l’entité pour le rôle actuel. L’outil valide les entrées par rapport au schéma d’entité, applique les autorisations au niveau du champ, applique des stratégies de création et retourne l’enregistrement créé avec toutes les valeurs générées.
lire_enregistrements
Interroge une table ou une vue. Prend en charge le filtrage, le tri, la pagination et la sélection de champs. L’outil génère un SQL déterministe à partir de paramètres structurés, applique des autorisations de lecture et des projections de champs et applique des stratégies de sécurité au niveau des lignes.
Les résultats de read_records sont automatiquement mis en cache à l’aide du système de mise en cache du générateur de l'API de données. Vous pouvez configurer la durée de vie (TTL) du cache globalement ou par entité pour réduire la charge de la base de données.
mise_à_jour_enregistrement
Modifie une ligne existante. Nécessite la présence de la clé primaire et des champs pour effectuer une mise à jour. L’outil valide la clé primaire, applique des autorisations et des stratégies de mise à jour et met à jour uniquement les champs que le rôle actuel peut modifier.
supprimer_enregistrement
Supprime une ligne existante. Nécessite la clé primaire. L’outil valide la clé primaire, applique des autorisations et des stratégies de suppression et effectue une suppression sécurisée avec prise en charge des transactions.
Avertissement
Certains scénarios de production désactivent cet outil globalement pour limiter largement les modèles.
exécuter_entité
Exécute une procédure stockée. Prend en charge les paramètres d’entrée et les résultats de sortie. L’outil valide les paramètres d’entrée par rapport à la signature de procédure, applique les autorisations d’exécution et transmet les paramètres en toute sécurité.
Configuration du runtime
Configurez globalement les outils DML dans la section runtime de 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
}
}
}
}
Utilisation de l’CLI
Définissez des propriétés individuellement à l’aide de l’interface CLI du générateur d’API de données :
dab configure --runtime.mcp.enabled true
dab configure --runtime.mcp.path "/mcp"
dab configure --runtime.mcp.dml-tools.describe-entities true
dab configure --runtime.mcp.dml-tools.create-record true
dab configure --runtime.mcp.dml-tools.read-records true
dab configure --runtime.mcp.dml-tools.update-record true
dab configure --runtime.mcp.dml-tools.delete-record true
dab configure --runtime.mcp.dml-tools.execute-entity true
Désactivation des outils
Lorsque vous désactivez un outil au niveau du runtime, il n’apparaît jamais aux agents, quelles que soient les autorisations d’entité ou la configuration du rôle. Ce paramètre est utile lorsque vous avez besoin de limites opérationnelles strictes.
Scénarios courants
- Désactiver
delete-recordpour empêcher la perte de données en production - Désactiver
create-recordpour les points de terminaison de rapports en lecture seule - Désactiver
execute-entitylorsque les procédures stockées ne sont pas utilisées
Lorsqu’un outil est désactivé globalement, l’outil est masqué de la list_tools réponse et ne peut pas être appelé.
Paramètres de l’entité
Les entités participent automatiquement à MCP, sauf si vous les limitez explicitement. La dml-tools propriété existe afin que vous puissiez exclure une entité de MCP ou limiter ses fonctionnalités, mais vous n’avez pas besoin de définir quoi que ce soit pour une utilisation normale.
{
"entities": {
"Products": {
"mcp": {
"dml-tools": true
}
},
"SensitiveData": {
"mcp": {
"dml-tools": false
}
}
}
}
Si vous ne spécifiez pas mcp.dml-tools pour une entité, elle utilise true par défaut lorsque MCP est activé globalement.
Contrôle affiné
Vous pouvez désactiver des outils spécifiques pour des entités individuelles :
{
"entities": {
"AuditLogs": {
"mcp": {
"dml-tools": {
"create-record": true,
"read-records": true,
"update-record": false,
"delete-record": false
}
}
}
}
}
Cette configuration permet aux agents de créer et lire des journaux d’audit, mais empêche la modification ou la suppression.
Intégration de RBAC
Chaque opération d’outil DML applique vos règles de contrôle d’accès en fonction du rôle. Le rôle d’un agent détermine quelles entités sont visibles, quelles opérations sont autorisées, quels champs sont inclus et si les stratégies au niveau des lignes s’appliquent.
Si le rôle n'autorise que le droit anonymous de lecture sur Products:
-
describe_entitiesne montre queread_recordsdans les opérations -
create_record,update_recordetdelete_recordne sont pas disponibles - Seuls les champs autorisés pour
anonymousapparaissent dans le schéma
Configurez les rôles dans votre dab-config.json:
{
"entities": {
"Products": {
"permissions": [
{
"role": "anonymous",
"actions": [
{
"action": "read",
"fields": {
"include": ["ProductId", "ProductName", "Price"],
"exclude": ["Cost"]
}
}
]
},
{
"role": "admin",
"actions": ["*"]
}
]
}
}
}