Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
MCP-servern (SQL Model Context Protocol) är tillgänglig i Data API Builder version 1.7 och senare.
Anmärkning
Funktionen SQL MCP Server 2.0 som beskrivs i det här avsnittet är för närvarande i förhandsversion och kan komma att ändras innan den allmänna tillgängligheten. Mer information finns i Nyheter i version 2.0.
SQL MCP Server exponerar tabeller och vyer via allmänna verktyg för datamanipuleringsspråk (DML). För lagrade procedurer kan du gå vidare: ange custom-tool: true på entiteten så att proceduren visas i MCP-verktygslistan som ett namngivet, specialbyggt verktyg. AI-agenter identifierar den med namn, ser dess beskrivning och anropar den direkt – ingen SQL krävs.
Viktigt!
Anpassade verktygsnamn härleds från entitetsnamnet men konverteras till snake_case. Till exempel blir GetProductById en entitet med namnet get_product_by_id i MCP-verktygslistan. Använd snake_case namn när du anropar verktyget. Entitetsnamnet PascalCase accepteras inte som ett verktygsnamn.
Resten av den här artikeln visar hur du lägger till, konfigurerar och testar ett anpassat MCP-verktyg som backas upp av en lagrad procedur.
Förutsättningar
- Data API Builder version 2.0 eller senare
- SQL Server-databas med minst en lagrad procedur
- En befintlig
dab-config.jsonmed MCP aktiverat - DAB CLI installerat
Aktivera MCP i konfigurationen
Om du inte redan har gjort det, aktivera MCP i körningsavsnittet.
dab configure --runtime.mcp.enabled true
Detta lägger till följande i din dab-config.json:
{
"runtime": {
"mcp": {
"enabled": true
}
}
}
Lägg till den lagrade proceduren som ett anpassat verktyg
Använd dab add med --source.type stored-procedure och --mcp.custom-tool true.
dab add GetProductById \
--source dbo.get_product_by_id \
--source.type "stored-procedure" \
--permissions "anonymous:execute" \
--mcp.custom-tool true
Detta skapar följande entitet i 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
}
}
}
}
Viktigt!
Egenskapen custom-tool är endast giltig för entiteter med lagrad procedur. Om du ställer in den i en tabell eller visar entitet resulterar det i ett konfigurationsfel vid start.
Lägga till en beskrivning för att förbättra agentens noggrannhet
Utan en beskrivning ser agenterna bara det tekniska namnet GetProductById. Med en beskrivning förstår de vad den gör och när den ska användas.
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
}
}
}
}
Kontrollera att verktyget visas i verktygslistan
Starta DAB och anropa tools/list MCP-slutpunkten för att bekräfta att verktyget är registrerat.
dab start
När en MCP-klient anropar tools/listinnehåller svaret ditt anpassade verktyg tillsammans med DML-verktygen:
{
"tools": [
{
"name": "get_product_by_id",
"description": "Returns full product details including pricing and inventory for a given product ID",
"inputSchema": {
"type": "object",
"properties": {}
}
}
]
}
Anmärkning
Verktygsnamnet använder snake_case (till exempel get_product_by_id för entiteten GetProductById ). Returnerar inputSchema för närvarande tom properties. Agenter förlitar sig på verktygsbeskrivningen och describe_entities för att fastställa rätt parametrar.
Konfigurera flera anpassade verktyg
Du kan registrera flera lagrade procedurer som anpassade verktyg i samma konfiguration.
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"
Kontrollera vilka roller som kan anropa verktyget
Anpassade verktyg respekterar samma rollbaserade åtkomstkontroll (RBAC) som alla andra DAB-entiteter. Ange permissions på entiteten för att begränsa vilka roller som kan köra proceduren.
{
"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
}
}
}
}
När en agent med anonymous rollen ringer visas inte get_order_summary i tools/list och några direkta tools/call returnerar ett behörighetsfel.
Inaktivera ett anpassat verktyg utan att ta bort det
Ställ in custom-tool på false för att dölja verktyget för agenter utan att ta bort entiteten.
dab update GetProductById \
--mcp.custom-tool false
Entiteten finns kvar i konfigurationen och du kan aktivera den igen senare genom att ange --mcp.custom-tool true.