Delen via


DML-hulpprogramma's (Data Manipulat Language) in SQL MCP Server

Belangrijk

SQL MCP Server bevindt zich in de preview-fase en deze documentatie en de implementatie van de engine kan tijdens deze evaluatieperiode worden aangepast.

SQL MCP Server maakt zes DML-hulpprogramma's (Data Manipulation Language) beschikbaar voor AI-agents. Deze hulpprogramma's bieden een getypt CRUD-oppervlak voor databasebewerkingen: het maken, lezen, bijwerken en verwijderen van records plus het uitvoeren van opgeslagen procedures. Alle hulpprogramma's respecteren op rollen gebaseerd toegangsbeheer (RBAC), entiteitsmachtigingen en beleidsregels die zijn gedefinieerd in uw configuratie.

Wat zijn DML-hulpprogramma's?

DML-hulpprogramma's (Data Manipulation Language) verwerken gegevensbewerkingen: records maken, lezen, bijwerken en verwijderen, plus het uitvoeren van opgeslagen procedures. In tegenstelling tot DDL (Data Definition Language) dat het schema wijzigt, werkt DML uitsluitend op het gegevensvlak in bestaande tabellen en weergaven.

De zes DML-hulpprogramma's zijn:

  • describe_entities - Detecteert beschikbare entiteiten en bewerkingen
  • create_record - Nieuwe rijen invoegen
  • read_records - Query's uitvoeren op tabellen en weergaven
  • update_record - Wijzigt bestaande rijen
  • delete_record - Verwijdert rijen
  • execute_entity - Voert opgeslagen procedures uit

Wanneer DML-tools wereldwijd en voor een entiteit zijn ingeschakeld, stelt de SQL MCP Server deze via het MCP-protocol beschikbaar. Agents communiceren nooit rechtstreeks met uw databaseschema. Ze werken via de abstractielaag van data-API's.

De hulpprogramma's

list_tools antwoord

Wanneer een agent aanroept, retourneert list_toolsSQL MCP Server:

{
  "tools": [
    { "name": "describe_entities" },
    { "name": "create_record" },
    { "name": "read_records" },
    { "name": "update_record" },
    { "name": "delete_record" },
    { "name": "execute_entity" }
  ]
}

describe_entities

Retourneert de entiteiten die beschikbaar zijn voor de huidige rol. Elke vermelding bevat veldnamen, gegevenstypen, primaire sleutels en toegestane bewerkingen. Met dit hulpprogramma wordt geen query uitgevoerd op de database. In plaats daarvan leest deze uit de configuratie in het geheugen die is gebouwd op basis van uw configuratiebestand.

{
  "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"
      ]
    }
  ]
}

Opmerking

De entiteitsopties die worden gebruikt door een van de CRUD-tools en DML-tools, zijn rechtstreeks afkomstig van describe_entities. De interne semantische beschrijving die aan elk hulpprogramma is gekoppeld, dwingt deze tweestapsstroom af.

maak_record aan

Hiermee maakt u een nieuwe rij in een tabel. Vereist toestemming om de entiteit aan te maken binnen de huidige rol. Het hulpprogramma valideert invoer op basis van het entiteitsschema, dwingt machtigingen op veldniveau af, past beleidsregels voor maken toe en retourneert de gemaakte record met gegenereerde waarden.

read_records

Query's uitvoeren op een tabel of weergave. Ondersteunt filteren, sorteren, pagineren en veldselectie. Het hulpprogramma bouwt deterministische SQL op basis van gestructureerde parameters, past leesmachtigingen en veldprojecties toe en dwingt beveiligingsbeleid op rijniveau af.

Resultaten van read_records worden automatisch in de cache opgeslagen met behulp van het cachesysteem van Data API Builder. U kunt TTL (Time-to-Live) in de cache globaal of per entiteit configureren om de belasting van de database te verminderen.

update_record bijwerken

Hiermee wijzigt u een bestaande rij. Vereist dat de primaire sleutel en velden worden bijgewerkt. De tool controleert of de primaire sleutel bestaat, dwingt updategerelateerde machtigingen en beleid af, en werkt alleen velden bij die de huidige rol kan wijzigen.

delete_record

Hiermee verwijdert u een bestaande rij. Hiervoor is de primaire sleutel vereist. Het hulpprogramma valideert dat de primaire sleutel bestaat, dwingt verwijdermachtigingen en beleid af en voert veilige verwijdering uit met transactieondersteuning.

Waarschuwing

In sommige productiescenario's wordt dit hulpprogramma globaal uitgeschakeld om modellen breed te beperken.

execute_entity

Voert een opgeslagen procedure uit. Ondersteunt invoerparameters en uitvoerresultaten. Het hulpprogramma valideert invoerparameters op basis van de procedurehandtekening, dwingt uitvoermachtigingen af en geeft parameters veilig door.

Runtime-configuratie

Configureer DML-hulpprogramma's globaal in de runtimesectie van uw 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
      }
    }
  }
}

De CLI gebruiken

Eigenschappen afzonderlijk instellen met behulp van de DATA API Builder CLI:

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

Hulpprogramma's uitschakelen

Wanneer u een hulpprogramma uitschakelt op runtimeniveau, is het voor agenten nooit zichtbaar, ongeacht entiteitsrechten of rolconfiguratie. Deze instelling is handig wanneer u strikte operationele grenzen nodig hebt.

Algemene scenario's

  • Uitschakelen delete-record om gegevensverlies in productie te voorkomen
  • Uitschakelen create-record voor alleen-lezen rapportage-eindpunten
  • Uitschakelen execute-entity wanneer opgeslagen procedures niet worden gebruikt

Wanneer een hulpprogramma globaal is uitgeschakeld, wordt het hulpprogramma verborgen voor het list_tools antwoord en kan het niet worden aangeroepen.

Entiteitsinstellingen

Entiteiten nemen automatisch deel aan MCP, tenzij u ze expliciet beperkt. De dml-tools eigenschap bestaat zodat u een entiteit kunt uitsluiten van MCP of de mogelijkheden ervan kunt beperken, maar u hoeft niets in te stellen voor normaal gebruik.

{
  "entities": {
    "Products": {
      "mcp": {
        "dml-tools": true
      }
    },
    "SensitiveData": {
      "mcp": {
        "dml-tools": false
      }
    }
  }
}

Als u mcp.dml-tools niet specificeert voor een entiteit, wordt deze automatisch ingesteld op true wanneer MCP wereldwijd is ingeschakeld.

Fijnmazige controle

U kunt specifieke hulpprogramma's voor afzonderlijke entiteiten uitschakelen:

{
  "entities": {
    "AuditLogs": {
      "mcp": {
        "dml-tools": {
          "create-record": true,
          "read-records": true,
          "update-record": false,
          "delete-record": false
        }
      }
    }
  }
}

Met deze configuratie kunnen agents auditlogboeken maken en lezen, maar voorkomt u dat wijzigingen of verwijderingen worden aangebracht.

RBAC-integratie

Elke DML-hulpprogrammabewerking dwingt uw regels voor op rollen gebaseerd toegangsbeheer af. De rol van een agent bepaalt welke entiteiten zichtbaar zijn, welke bewerkingen zijn toegestaan, welke velden zijn opgenomen en of beleid op rijniveau van toepassing is.

Als de anonymous rol alleen leesmachtigingen toestaat op Products:

  • describe_entities wordt alleen weergegeven read_records in bewerkingen
  • create_record, update_recorden delete_record zijn niet beschikbaar
  • Alleen velden die zijn toegestaan voor anonymous verschijnen in het schema

Configureer rollen in uw dab-config.json:

{
  "entities": {
    "Products": {
      "permissions": [
        {
          "role": "anonymous",
          "actions": [
            {
              "action": "read",
              "fields": {
                "include": ["ProductId", "ProductName", "Price"],
                "exclude": ["Cost"]
              }
            }
          ]
        },
        {
          "role": "admin",
          "actions": ["*"]
        }
      ]
    }
  }
}