Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Il server MCP (SQL Model Context Protocol) è disponibile in Generatore API dati versione 1.7 e successive.
Annotazioni
La funzionalità SQL MCP Server 2.0 descritta in questa sezione è attualmente in anteprima e potrebbe cambiare prima della disponibilità generale. Per altre informazioni, vedere Novità della versione 2.0.
SQL MCP Server espone tabelle e viste tramite strumenti DML (Data Manipulation Language) generici. Per le stored procedure, è possibile procedere ulteriormente: impostare custom-tool: true sull'entità in modo che la procedura venga visualizzata nell'elenco degli strumenti MCP come strumento denominato appositamente creato. Gli agenti di intelligenza artificiale lo individuano in base al nome, visualizzano la descrizione e lo chiamano direttamente, senza richiedere SQL.
Importante
I nomi degli strumenti personalizzati sono derivati dal nome dell'entità, ma convertiti in snake_case. Ad esempio, un'entità denominata GetProductById diventa get_product_by_id nell'elenco degli strumenti MCP. Usare il nome snake_case quando si chiama lo strumento. Il nome dell'entità PascalCase non viene accettato come nome dello strumento.
Nella parte restante di questo articolo viene illustrato come aggiungere, configurare e testare uno strumento MCP personalizzato supportato da una stored procedure.
Prerequisiti
- Generatore API dati versione 2.0 o successiva
- Database di SQL Server con almeno una stored procedure
-
dab-config.jsonesistente con MCP abilitato - DAB CLI installato
Abilitare MCP nella configurazione
Se non è già stato fatto, abilitare MCP nella sezione runtime.
dab configure --runtime.mcp.enabled true
Questo aggiunge quanto segue a dab-config.json:
{
"runtime": {
"mcp": {
"enabled": true
}
}
}
Aggiungere la procedura memorizzata come strumento personalizzato
Usare dab add con --source.type stored-procedure e --mcp.custom-tool true.
dab add GetProductById \
--source dbo.get_product_by_id \
--source.type "stored-procedure" \
--permissions "anonymous:execute" \
--mcp.custom-tool true
In questo modo viene prodotta la seguente entità 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
}
}
}
}
Importante
La custom-tool proprietà è valida solo nelle entità stored procedure. Impostarlo su una tabella o un'entità di visualizzazione genera un errore di configurazione all'avvio.
Aggiungere una descrizione per migliorare l'accuratezza dell'agente
Senza una descrizione, gli agenti visualizzano solo il nome GetProductByIdtecnico . Con una descrizione, capiscono cosa fa e quando usarlo.
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
}
}
}
}
Verificare che lo strumento venga visualizzato nell'elenco degli strumenti
Avviare DAB e chiamare l'endpoint tools/list MCP per verificare che lo strumento sia registrato.
dab start
Quando un client MCP chiama tools/list, la risposta include lo strumento personalizzato insieme agli strumenti DML:
{
"tools": [
{
"name": "get_product_by_id",
"description": "Returns full product details including pricing and inventory for a given product ID",
"inputSchema": {
"type": "object",
"properties": {}
}
}
]
}
Annotazioni
Il nome dello strumento usa il formato snake_case (ad esempio, get_product_by_id per l'entità GetProductById). L'oggetto inputSchema restituisce attualmente un valore vuoto properties. Gli agenti si basano sulla descrizione dello strumento e describe_entities per determinare i parametri corretti.
Configurare più strumenti personalizzati
È possibile registrare più stored procedure come strumenti personalizzati nella stessa configurazione.
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"
Controllare quali ruoli possono chiamare lo strumento
Gli strumenti personalizzati rispettano lo stesso controllo degli accessi in base al ruolo (RBAC) di tutte le altre entità DAB. Configurare l'attributo permissions sull'entità per vincolare i ruoli che possono eseguire la procedura.
{
"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
}
}
}
}
Quando un agente chiama con il anonymous ruolo, get_order_summary non viene visualizzato in tools/list e qualsiasi accesso diretto a tools/call restituisce un errore di autorizzazione.
Disabilitare uno strumento personalizzato senza rimuoverlo
Impostare custom-tool su false per nascondere lo strumento dagli agenti senza eliminare l'entità.
dab update GetProductById \
--mcp.custom-tool false
L'entità rimane nella configurazione ed è possibile riabilitarla in un secondo momento impostando --mcp.custom-tool true.