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.
Hinweis
Die in diesem Abschnitt beschriebene SQL MCP Server 2.0-Funktionalität befindet sich derzeit in der Vorschau und kann sich vor der allgemeinen Verfügbarkeit ändern. Weitere Informationen finden Sie unter Neuigkeiten in Version 2.0.
SQL MCP Server macht Tabellen und Ansichten über generische DML-Tools (Data Manipulation Language) verfügbar. Bei gespeicherten Prozeduren können Sie fortfahren: Legen Sie die Entität so fest custom-tool: true , dass die Prozedur in der MCP-Toolliste als benanntes, zweckorientiertes Tool angezeigt wird. KI-Agents entdecken sie anhand des Namens, sehen ihre Beschreibung und rufen sie direkt auf – keine SQL erforderlich.
Von Bedeutung
Benutzerdefinierte Toolnamen werden vom Entitätsnamen abgeleitet, aber in snake_case konvertiert. Beispielsweise wird eine Entität namens GetProductById in der MCP-Toolliste zu get_product_by_id. Verwenden Sie den Namen snake_case, wenn Sie das Tool aufrufen. Der PascalCase-Entitätsname wird nicht als Toolname akzeptiert.
Der Rest dieses Artikels zeigt, wie Sie ein benutzerdefiniertes MCP-Tool hinzufügen, konfigurieren und testen, das von einer gespeicherten Prozedur unterstützt wird.
Voraussetzungen
- Daten-API-Generator, Version 2.0 oder höher
- SQL Server-Datenbank mit mindestens einer gespeicherten Prozedur
- Ein vorhandenes
dab-config.jsonmit aktiviertem MCP - DAB CLI installiert
Aktivieren von MCP in Ihrer Konfiguration
Sollte dies noch nicht der Fall sein, aktivieren Sie MCP in der Laufzeitumgebung.
dab configure --runtime.mcp.enabled true
Dadurch wird Folgendes zu Ihrem dab-config.json hinzugefügt:
{
"runtime": {
"mcp": {
"enabled": true
}
}
}
Hinzufügen der gespeicherten Prozedur als benutzerdefiniertes Tool
Verwenden Sie dab add mit --source.type stored-procedure und --mcp.custom-tool true.
dab add GetProductById \
--source dbo.get_product_by_id \
--source.type "stored-procedure" \
--permissions "anonymous:execute" \
--mcp.custom-tool true
Dies erzeugt die folgende Entität in 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
}
}
}
}
Von Bedeutung
Die custom-tool Eigenschaft ist nur für Entitäten gespeicherter Prozeduren gültig. Das Platzieren auf einem Tisch oder einer Ansicht führt beim Start zu einem Konfigurationsfehler.
Hinzufügen einer Beschreibung zur Verbesserung der Agentgenauigkeit
Ohne Beschreibung sehen Agenten nur den technischen Namen GetProductById. Mit einer Beschreibung verstehen sie, was es macht und wann es verwendet werden soll.
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
}
}
}
}
Überprüfen, ob das Tool in der Toolliste angezeigt wird
Starten Sie DAB, und rufen Sie den tools/list MCP-Endpunkt auf, um zu bestätigen, dass das Tool registriert ist.
dab start
Wenn ein MCP-Client aufruft tools/list, enthält die Antwort Ihr benutzerdefiniertes Tool zusammen mit den DML-Tools:
{
"tools": [
{
"name": "get_product_by_id",
"description": "Returns full product details including pricing and inventory for a given product ID",
"inputSchema": {
"type": "object",
"properties": {}
}
}
]
}
Hinweis
Der Toolname verwendet snake_case (z. B. get_product_by_id für die GetProductById-Entität). Derzeit gibt inputSchema leere properties zurück. Agents verlassen sich auf die Toolbeschreibung und describe_entities, um die richtigen Parameter zu bestimmen.
Konfigurieren mehrerer benutzerdefinierter Tools
Sie können mehrere gespeicherte Prozeduren als benutzerdefinierte Tools in derselben Konfiguration registrieren.
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"
Steuern, welche Rollen das Tool aufrufen können
Benutzerdefinierte Tools respektieren die gleiche rollenbasierte Zugriffssteuerung (RBAC) wie alle anderen DAB-Entitäten. Legen Sie die Einstellungen in der permissions Entität fest, um einzuschränken, welche Rolle die Prozedur ausführen kann.
{
"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
}
}
}
}
Wenn ein Agent mit der anonymous Rolle aufruft, erscheint get_order_summary nicht in tools/list und jede direkte tools/call gibt einen Berechtigungsfehler zurück.
Deaktivieren eines benutzerdefinierten Tools, ohne es zu entfernen
Legen Sie custom-tool auf false fest, damit das Tool vor den Agenten versteckt wird, ohne die Entität zu löschen.
dab update GetProductById \
--mcp.custom-tool false
Die Entität verbleibt in der Konfiguration, und Sie können sie später erneut aktivieren, indem Sie die Einstellung festlegen --mcp.custom-tool true.