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.
SQL MCP Server supporta due tipi di trasporto: HTTP streamable per scenari ospitati e cloud, e std per lo sviluppo locale e l'integrazione diretta dell'agente. Questo articolo illustra il trasporto stdio.
In modalità stdio, il generatore di API dati (DAB) comunica con un client MCP interamente su input/output standard (stdin/stdout). Non viene avviato alcun server HTTP o porta di rete. Il client MCP avvia DAB come processo figlio e invia messaggi avanti e indietro usando il protocollo MCP (Model Context Protocol).
Quando usare il trasporto stdio
| Scenario | Trasporto consigliato |
|---|---|
| Sviluppo locale in una workstation per sviluppatori | stdio |
| VS Code con GitHub Copilot (modalità agente) | stdio |
| Pipeline CI/CD o automazione degli agenti con script | stdio |
| Hosting cloud (app contenitore, servizio app) | HTTP |
| Agente di AI Foundry con endpoint MCP remoto | HTTP |
| Team di agenti che condividono lo stesso endpoint | HTTP |
Scegliere stdio quando si vuole la configurazione locale più semplice possibile senza porte aperte. Scegliere HTTP quando il server MCP deve essere raggiungibile attraverso una rete.
Prerequisiti
- CLI Generatore Data API installata (versione 1.7 o successiva)
- Esistente con MCP abilitato (vedere Configurazione necessaria)
- Un client compatibile con MCP (VS Code con GitHub Copilot, Claude Desktop o un agente personalizzato)
Configurazione richiesta
Prima di utilizzare il trasporto standard di input/output (stdio), abilitare MCP in:
"runtime": {
"mcp": {
"enabled": true,
"path": "/mcp",
"dml-tools": {
"create-record": true,
"read-records": true,
"update-record": true,
"delete-record": true
}
}
}
Il campo viene usato solo per il trasporto HTTP e viene ignorato in modalità stdio. Il blocco controlla quali operazioni di manipolazione dei dati sono disponibili come strumenti MCP.
Importante
Se uno dei due blocchi è mancante, DAB non viene avviato in modalità stdio.
Avvia in modalità stdio
Usare il flag in :
dab start --mcp-stdio --config ./dab-config.json
Eseguire con un ruolo di autorizzazione specifico:
dab start --mcp-stdio role:authenticated --config ./dab-config.json
L'argomento è posizionale e deve seguire immediatamente . Se omesso, per impostazione predefinita il ruolo è . Il nome del ruolo deve corrispondere a un ruolo definito nella sezione di almeno un'entità nella configurazione.
Funzionamento della modalità stdio
Quando viene rilevato, DAB apporta internamente le modifiche seguenti:
Codifica UTF-8 (senza marcatore di ordine dei byte)
L'input e l'output della console vengono forzati a UTF-8 senza un indicatore di ordine dei byte (BOM). Questa impostazione UTF-8 è necessaria per la comunicazione JSON-over-stdio pulita perché molti client MCP rifiutano flussi con prefisso BOM.
Autenticazione del simulatore
Il provider di autenticazione è sostituito in modalità simulatore, indipendentemente dal file di configurazione specificati. Questa modalità simulatore consente di applicare il ruolo specificato direttamente senza un vero token JSON Web (JWT) o un provider di identità. Il provider di simulatori è progettato per scenari di sviluppo e non deve essere usato per proteggere gli endpoint HTTP di produzione, ma è esattamente adatto per le sessioni stdio locali.
I valori seguenti vengono applicati in memoria ed eseguono l'override della configurazione durante la sessione:
| Chiave | Valore |
|---|---|
MCP:StdioMode |
"true" |
MCP:Role |
oppure |
Runtime:Host:Authentication:Provider |
"Simulator" |
Nessun listener HTTP
L'host ASP.NET Core viene avviato e tutti i servizi vengono registrati, ma DAB chiama stdio.RunAsync() anziché host.Run(). Non è associata alcuna porta TCP (Transmission Control Protocol). Tutti i messaggi del protocollo MCP passano attraverso stdin/stdout.
Strumenti MCP disponibili
Gli strumenti seguenti sono disponibili in modalità stdio, soggetti alle autorizzazioni di configurazione ed entità:
| Strumento | Descrizione |
|---|---|
describe_entities |
Elenca le entità disponibili e i relativi campi e autorizzazioni |
create_record |
Inserisce un nuovo record (solo tabelle) |
read_records |
Legge i record da un'entità |
update_record |
Aggiorna un record esistente |
delete_record |
Elimina un record esistente (tabelle e viste) |
execute_entity |
Esegue un'entità stored procedure |
Anche gli strumenti MCP personalizzati supportati dalle stored procedure vengono registrati quando si usa .
Configurare un client MCP per stdio
I client MCP che supportano il trasporto stdio avviano DAB come subprocesso e indirizzano i suoi stdin/stdout. La sintassi di configurazione client varia in base al client.
VS Code ()
{
"servers": {
"sql-mcp-server": {
"type": "stdio",
"command": "dab",
"args": [
"start",
"--mcp-stdio",
"role:anonymous",
"--config",
"${workspaceFolder}/dab-config.json"
]
}
}
}
Salvare il file come all'interno della cartella del progetto. VS Code rileva automaticamente la configurazione e mostra il server in MCP: Elenca server. Poiché il client gestisce il ciclo di vita del processo, non è necessario eseguire separatamente in un terminale.
Claude Desktop ()
{
"mcpServers": {
"sql-mcp-server": {
"command": "dab",
"args": [
"start",
"--mcp-stdio",
"role:anonymous",
"--config",
"/absolute/path/to/dab-config.json"
]
}
}
}
Combinare con altre opzioni
è compatibile con tutte le altre opzioni:
| Opzione | Comportamento con |
|---|---|
--config |
Usa il file di configurazione specificato (uguale alla modalità HTTP) |
--LogLevel |
Applica il livello di log specificato |
--verbose |
Imposta il livello di log al livello Informazione |
--no-https-redirect |
Accettato ma non ha alcun effetto—nessun server HTTP è in esecuzione |
dab start \
--mcp-stdio role:api-reader \
--config ./dab-config.json \
--LogLevel Information
Risoluzione dei problemi della modalità stdio
Failed to start the engine in MCP stdio mode.
DAB non è riuscito ad avviarsi. Controllare che:
- Il file di configurazione è valido: eseguire
- La stringa di connessione del database è corretta e raggiungibile
- MCP è abilitato nella configurazione:
Autorizzazione negata per le chiamate dello strumento MCP
Il ruolo specificato da non dispone delle autorizzazioni necessarie per l'entità e l'operazione. Controllare la sezione dell'entità pertinente nella configurazione.
Strumenti MCP non elencati
È impostato su globalmente oppure l'entità ha le relative impostazioni. Verificare anche che sia .
Errori di analisi JSON o output non chiaro
Assicurarsi che nulla nel codice di avvio scriva testo non JSON in stdout prima dell'avvio del server MCP. L'output del log dovrebbe essere indirizzato a stderr o a un file di registro, non su stdout. Usare per sopprimere i messaggi di avvio dettagliati, se necessario.
Contenuti correlati
- Informazioni di riferimento sul comando
- Panoramica di SQL MCP Server
- Quickstart: Usare SQL MCP Server con Visual Studio Code
- Configurare l'autenticazione per SQL MCP Server
- Strumenti di manipolazione dei dati