Dela via


Verktyg för datamanipuleringsspråk (DML) i SQL MCP Server

Viktigt!

SQL MCP Server är en förhandsversion och den här dokumentationen och motorimplementeringen kan komma att ändras under den här utvärderingsperioden.

SQL MCP Server exponerar sex DML-verktyg (Data Manipulation Language) för AI-agenter. De här verktygen ger en typ av CRUD-yta för databasåtgärder – skapa, läsa, uppdatera och ta bort poster samt köra lagrade procedurer. Alla verktyg respekterar rollbaserad åtkomstkontroll (RBAC), entitetsbehörigheter och principer som definierats i konfigurationen.

Vad är DML-verktyg?

DML-verktyg (Data Manipulation Language) hanterar dataåtgärder: skapa, läsa, uppdatera och ta bort poster, samt köra lagrade procedurer. Till skillnad från DDL (Data Definition Language) som ändrar schemat, fungerar DML uteslutande på dataplanet i befintliga tabeller och vyer.

De sex DML-verktygen är:

  • describe_entities – Identifierar tillgängliga entiteter och åtgärder
  • create_record – Infogar nya rader
  • read_records – Ställer frågor till tabeller och vyer
  • update_record – Ändrar befintliga rader
  • delete_record – Tar bort rader
  • execute_entity – Kör lagrade procedurer

När DML-verktyg aktiveras globalt och för en entitet exponerar SQL MCP Server dem via MCP-protokollet. Agenter interagerar aldrig direkt med ditt databasschema – de fungerar via abstraktionsskiktet för Data API Builder.

Verktygen

list_tools för svar

När en agent anropar list_toolsreturnerar SQL MCP Server:

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

describe_entities

Returnerar de entiteter som är tillgängliga för den aktuella rollen. Varje post innehåller fältnamn, datatyper, primära nycklar och tillåtna åtgärder. Det här verktyget frågar inte databasen. I stället läser den från den minnesinterna konfigurationen som skapats från konfigurationsfilen.

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

Anmärkning

Entitetsalternativen som används av någon av CRUD:erna och kör DML-verktygen kommer direkt från describe_entities. Den interna semantiska beskrivningen som är kopplad till varje verktyg framtvingar det här tvåstegsflödet.

create_record

Skapar en ny rad i en tabell. Behörighet att skapa på entiteten krävs för den nuvarande rollen. Verktyget validerar indata mot entitetsschemat, tillämpar behörigheter på fältnivå, tillämpar skapa principer och returnerar den skapade posten med alla genererade värden.

read_records

Utför en fråga på en tabell eller vy. Stöder filtrering, sortering, sidnumrering och fältval. Verktyget skapar deterministisk SQL från strukturerade parametrar, tillämpar läsbehörigheter och fältprojektioner och tillämpar säkerhetsprinciper på radnivå.

Resultat från read_records cachelagras automatiskt med hjälp av Data API Builders cachelagringssystem. Du kan konfigurera TTL (time to live) för cachen globalt eller per entitet för att minska databasbelastningen.

update_record

Ändrar en befintlig rad. Kräver att primärnyckeln och fälten uppdateras. Verktyget verifierar att den primära nyckeln finns, framtvingar uppdateringsbehörigheter och principer och endast uppdaterar fält som den aktuella rollen kan ändra.

delete_record

Tar bort en befintlig rad. Kräver en primärnyckel. Verktyget verifierar att den primära nyckeln finns, framtvingar borttagningsbehörigheter och principer och utför säker borttagning med transaktionsstöd.

Varning

Vissa produktionsscenarier inaktiverar det här verktyget globalt för att i stort sett begränsa modeller.

execute_entity

Kör en lagrad procedur. Stöder indataparametrar och utdataresultat. Verktyget validerar indataparametrar mot procedurens signatur, framtvingar körningsbehörigheter och skickar parametrar på ett säkert sätt.

Körningskonfiguration

Konfigurera DML-verktyg globalt i körningsavsnittet i :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
      }
    }
  }
}

Använda CLI

Ange egenskaper individuellt med hjälp av 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

Inaktivera verktyg

När du inaktiverar ett verktyg på körningsnivå visas det aldrig för agenter, oavsett entitetsbehörighet eller rollkonfiguration. Den här inställningen är användbar när du behöver strikta driftsgränser.

Vanliga scenarier

  • Inaktivera delete-record för att förhindra dataförlust i produktion
  • Inaktivera create-record för skrivskyddade rapportslutpunkter
  • Inaktivera execute-entity när lagrade procedurer inte används

När ett verktyg är inaktiverat globalt döljs verktyget från list_tools svaret och kan inte anropas.

Enhetsinställningar

Entiteter deltar automatiskt i MCP om du inte uttryckligen begränsar dem. Egenskapen dml-tools finns så att du kan exkludera en entitet från MCP eller begränsa dess funktioner, men du behöver inte ange något för normal användning.

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

Om du inte anger mcp.dml-tools på en entitet är det som standard true när MCP är aktiverat globalt.

Detaljerad kontroll

Du kan inaktivera specifika verktyg för enskilda entiteter:

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

Den här konfigurationen gör att agenter kan skapa och läsa granskningsloggar men förhindrar ändringar eller borttagning.

RBAC-integrering

Varje DML-verktygsåtgärd tillämpar dina rollbaserade åtkomstkontrollregler. En agents roll avgör vilka entiteter som är synliga, vilka åtgärder som tillåts, vilka fält som ingår och om policyer på radnivå gäller.

anonymous Om rollen endast tillåter läsbehörighet på Products:

  • describe_entities visar endast read_records under funktioner
  • create_record, update_recordoch delete_record är inte tillgängliga
  • Endast fält som tillåts för anonymous visas i schemat

Konfigurera roller i :dab-config.json

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