Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Der SQL Model Context Protocol (MCP)-Server ist in Daten-API-Generator, Version 1.7 und höher, verfügbar.
SQL MCP Server macht sechs DML-Tools (Data Manipulation Language) für KI-Agents verfügbar. Diese Tools bieten eine typierte CRUD-Oberfläche für Datenbankvorgänge – Erstellen, Lesen, Aktualisieren und Löschen von Datensätzen sowie ausführen von gespeicherten Prozeduren. Alle Tools respektieren rollenbasierte Zugriffssteuerung (RBAC), Entitätsberechtigungen und Richtlinien, die in Ihrer Konfiguration definiert sind.
Was sind DML-Tools?
DML-Tools (Data Manipulation Language) behandeln Datenvorgänge: Erstellen, Lesen, Aktualisieren und Löschen von Datensätzen sowie Ausführen gespeicherter Prozeduren. Im Gegensatz zu DDL (Data Definition Language), die das Schema ändert, funktioniert DML ausschließlich auf der Datenebene in vorhandenen Tabellen und Ansichten.
Die sechs DML-Tools sind:
- – Ermittelt verfügbare Entitäten und Vorgänge
- - Fügt neue Zeilen ein.
- - Abfragen von Tabellen und Ansichten
- - Ändert vorhandene Zeilen
- - Entfernt Zeilen
- - Führt gespeicherte Prozeduren aus.
Wenn DML-Tools global und für eine Entität aktiviert sind, macht SQL MCP Server sie über das MCP-Protokoll verfügbar. Agents interagieren niemals direkt mit Ihrem Datenbankschema – sie arbeiten über die Abstraktionsebene des Daten-API-Generators.
Die Tools
Antwort auf list_tools
Wenn ein Agent aufruft , gibt SQL MCP Server Folgendes zurück:
{
"tools": [
{ "name": "describe_entities" },
{ "name": "create_record" },
{ "name": "read_records" },
{ "name": "update_record" },
{ "name": "delete_record" },
{ "name": "execute_entity" }
]
}
describe_entities
Gibt die Entitäten zurück, die für die aktuelle Rolle verfügbar sind. Jeder Eintrag enthält Feldnamen, Datentypen, Primärschlüssel und zulässige Vorgänge. Dieses Tool fragt die Datenbank nicht ab. Stattdessen liest sie aus der speicherinternen Konfiguration, die aus Ihrer Konfigurationsdatei erstellt wurde.
Von Bedeutung
Die informationen in werden von den Daten abgeleitet, die Sie in der Konfiguration angeben. Da Feldmetadaten optional sind, werden agents nur Entitätsnamen mit einem leeren Array angezeigt, wenn Sie sie nicht einschließen. Es empfiehlt sich, sowohl Feldnamen als auch Feldbeschreibungen in Ihre Konfiguration einzuschließen. Diese Metadaten geben Agents mehr Kontext, um genaue Abfragen und Updates zu generieren. Weitere Informationen zu Feldbeschreibungen finden Sie hier.
{
"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"
]
}
]
}
Hinweis
Die Entitätsoptionen, die von einem der CRUD-Tools verwendet und DML-Tools ausgeführt werden, stammen direkt von . Die interne semantische Beschreibung, die jedem Tool zugeordnet ist, erzwingt diesen zweistufigen Fluss.
create_record
Erstellt eine neue Zeile in einer Tabelle. Erfordert die Berechtigung zum Erstellen der Entität für die aktuelle Rolle. Das Tool überprüft Eingaben für das Entitätsschema, erzwingt Berechtigungen auf Feldebene, wendet Richtlinien an und gibt den erstellten Datensatz mit allen generierten Werten zurück.
Datensätze_lesen
Fragt eine Tabelle oder Ansicht ab. Unterstützt das Filtern, Sortieren, Paginieren und Auswählen von Feldern. Das Tool erstellt deterministische SQL aus strukturierten Parametern, wendet Leseberechtigungen und Feldprojektionen an und erzwingt Sicherheitsrichtlinien auf Zeilenebene.
Von Bedeutung
Ergebnisse von werden automatisch mithilfe des Caching-Systems des Data API Builders zwischengespeichert. Sie können cache time-to-live (TTL) global oder pro Entität konfigurieren, um die Datenbanklast zu reduzieren.
JOIN-Vorgänge
Das Tool wurde für eine einzelne Tabelle oder Ansicht entwickelt. Daher werden JOIN-Vorgänge in diesem Tool nicht unterstützt. Dieses Design hilft dabei, Verantwortung zu isolieren, die Leistung zu verbessern und die Auswirkungen auf das Kontextfenster Ihrer Sitzung einzuschränken.
JOIN-Vorgänge sind jedoch kein Edgefall, und der Daten-API-Generator (DATA API Builder, DAB) unterstützt bereits anspruchsvolle Abfragen über den GraphQL-Endpunkt. Für komplexere Abfragen empfehlen wir die Verwendung einer Ansicht anstelle einer Tabelle. Sie können das Tool auch verwenden, um gespeicherte Prozeduren auszuführen, um parametrisierte Abfragen zu kapseln.
Datensatz_aktualisieren
Ändert eine vorhandene Zeile. Erfordert die Aktualisierung des Primärschlüssels und der Felder. Das Tool überprüft, ob der Primärschlüssel vorhanden ist, erzwingt Updateberechtigungen und Richtlinien und aktualisiert nur Felder, die die aktuelle Rolle ändern kann.
Datensatz löschen
Entfernt eine vorhandene Zeile. Erfordert den Primärschlüssel. Das Tool überprüft, ob der Primärschlüssel vorhanden ist, erzwingt Löschberechtigungen und -richtlinien und führt einen sicheren Löschvorgang mit Transaktionsunterstützung durch.
Hinweis
Einige Produktionsszenarien deaktivieren dieses Tool global, um Modelle allgemein einzuschränken. Diese Wahl liegt bei Ihnen, und es lohnt sich, sich daran zu erinnern, dass Berechtigungen auf Entitätsebene die wichtigste Möglichkeit zur Steuerung des Zugriffs bleiben. Auch wenn die Verwendung aktiviert ist, wenn eine Rolle keine Löschberechtigung für eine Entität besitzt, kann diese Rolle dieses Tool nicht für diese Entität verwenden.
execute_entity
Führt eine gespeicherte Prozedur aus. Unterstützt Eingabeparameter und Ausgabeergebnisse. Das Tool überprüft Eingabeparameter anhand der Prozedursignatur, erzwingt Ausführungsberechtigungen und übergibt Parameter sicher.
Laufzeitkonfiguration
Konfigurieren Sie DML-Tools global im Laufzeitabschnitt Ihrer :
{
"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
}
}
}
}
Verwenden der CLI
Eigenschaften individuell festlegen mithilfe der Data API-Generator-CLI:
dab configure --runtime.mcp.enabled true
dab configure --runtime.mcp.path "/mcp"
dab configure --runtime.mcp.dml-tools.describe-entities.enabled true
dab configure --runtime.mcp.dml-tools.create-record.enabled true
dab configure --runtime.mcp.dml-tools.read-records.enabled true
dab configure --runtime.mcp.dml-tools.update-record.enabled true
dab configure --runtime.mcp.dml-tools.delete-record.enabled true
dab configure --runtime.mcp.dml-tools.execute-entity.enabled true
Deaktivieren von Tools
Wenn Sie ein Tool auf Laufzeitebene deaktivieren, wird es nie für Agents angezeigt, unabhängig von Entitätsberechtigungen oder Rollenkonfiguration. Diese Einstellung ist nützlich, wenn Sie strenge betriebstechnische Grenzen benötigen.
Häufige Szenarien
- Deaktivieren , um Datenverlust in der Produktion zu verhindern
- Deaktivieren Sie für schreibgeschützte Berichts-Endpunkte
- Deaktivieren , wenn gespeicherte Prozeduren nicht verwendet werden
Wenn ein Tool global deaktiviert ist, wird das Tool in der Antwort ausgeblendet und kann nicht aufgerufen werden.
Entitätseinstellungen
Entitäten nehmen automatisch an MCP teil, es sei denn, Sie schränken sie explizit ein. Die Eigenschaft ist vorhanden, sodass Sie eine Entität von MCP ausschließen oder deren Funktionen einschränken können, aber Sie müssen nichts für die normale Verwendung festlegen.
{
"entities": {
"Products": {
"mcp": {
"dml-tools": true
}
},
"SensitiveData": {
"mcp": {
"dml-tools": false
}
}
}
}
Wenn Sie für eine Entität nicht angeben, wird standardmäßig festgelegt, wenn MCP global aktiviert ist.
Umfang der Steuerung für jedes Tool
Die Umschaltfläche pro Tool wird nur auf der globalen Laufzeitebene unter . konfiguriert.
Auf Entitätsebene ist ein boolesches Gatter, das alle DML-Tools für diese Entität ein- oder ausschaltet.
{
"entities": {
"AuditLogs": {
"mcp": {
"dml-tools": false
}
}
}
}
{
"runtime": {
"mcp": {
"dml-tools": {
"describe-entities": true,
"create-record": true,
"read-records": true,
"update-record": true,
"delete-record": false,
"execute-entity": true
}
}
}
}
Ein Tool ist nur verfügbar, wenn es global aktiviert ist und die Entität DML-Tools zulässt.
RBAC-Integration
Jeder DML-Toolvorgang erzwingt Ihre rollenbasierten Zugriffssteuerungsregeln. Die Rolle eines Agents bestimmt, welche Entitäten sichtbar sind, welche Vorgänge zulässig sind, welche Felder enthalten sind und ob Richtlinien auf Zeilenebene gelten.
Wenn die Rolle nur Leseberechtigungen zulässt für :
- wird nur in Vorgängen angezeigt
- , und sind nicht verfügbar
- Nur Felder, die im Schema erlaubt sind, werden angezeigt.
Konfigurieren Sie Rollen in Ihrem :
{
"entities": {
"Products": {
"permissions": [
{
"role": "anonymous",
"actions": [
{
"action": "read",
"fields": {
"include": ["ProductId", "ProductName", "Price"],
"exclude": ["Cost"]
}
}
]
},
{
"role": "admin",
"actions": ["*"]
}
]
}
}
}
Verwandte Inhalte
- Übersicht über SQL MCP Server
- Hinzufügen von semantischen Beschreibungen zu SQL MCP Server
- Konfigurationsreferenz für den Daten-API-Generator (DAB)
- Deploy SQL MCP Server to Azure Container Apps