Cos’è un server MCP (guida avanzata)
Il Model Context Protocol (MCP) è una specifica che consente a client AI (Claude, Cursor, GitHub Copilot, ecc.) e applicazioni di comunicare tramite un protocollo standardizzato. MCP ha tre primitive principali.
Il vantaggio di costruire un server MCP in Laravel è poter riutilizzare tutto l’ecosistema Laravel: Eloquent, cache, autenticazione, validazione.
Questa guida avanzata entra nell’implementazione pratica. Per i concetti di base di MCP consulta Intermedio: Laravel MCP.
Installazione e setup iniziale
1
Installare il pacchetto
Installa con Composer.
2
Pubblicare il file delle rotte
Con
vendor:publish generi routes/ai.php, dove registrerai il server MCP.3
Generare la classe server
Crea la classe server con un comando Artisan.Nel file generato
app/Mcp/Servers/DatabaseServer.php registri tool, resource e prompt.4
Registrare il server
In Un server web viene raggiunto via HTTP POST. Un server locale gira come comando Artisan e serve per integrare client AI basati su CLI.
routes/ai.php colleghi il server a una rotta.Implementazione dei tool
I tool sono funzioni invocabili dai client AI. Puoi usare direttamente service container, validazione ed Eloquent di Laravel.Creare un tool
handle e schema.
Definizione dei parametri (schema)
Nel metodoschema usi il builder Illuminate\Contracts\JsonSchema\JsonSchema per definire i parametri accettati.
Annotazioni dei tool
Le annotazioni del protocollo MCP aiutano il client AI a valutare la sicurezza del tool.Risposte strutturate
Per restituire una risposta JSON facile da parsare per il client AI usaResponse::structured.
Risposte in streaming
Per elaborazioni lunghe puoi restituire un Generator per streammare l’avanzamento.Registrazione condizionale
Puoi esporre un tool solo a utenti che soddisfano certe condizioni.Implementazione delle risorse
Le risorse sono i dati che il client AI legge come contesto: documentazione, configurazioni, dati dinamici.Risorsa statica
Risorsa dinamica (URI template)
Con gli URI template puoi fornire risorse dinamiche in base ai parametri dell’URL.app://users/42/profile; il valore di {userId} è recuperabile con $request->get('userId').
Annotazioni delle risorse
Puoi indicare priorità e audience della risorsa.Implementazione dei prompt
I prompt sono template riutilizzabili usati dal client AI. Standardizzano query ricorrenti e workflow complessi.Creare un prompt
Autenticazione e autorizzazione
Autenticazione token con Sanctum
Il metodo più semplice. Il client MCP invia l’headerAuthorization: Bearer <token>.
Autenticazione con OAuth 2.1
Per un’autenticazione più solida, usa Laravel Passport.AppServiceProvider.
Autenticazione con middleware custom
Se usi API token proprietari, validali con un middleware custom sull’headerAuthorization.
Autorizzazione all’interno dei tool
Nel metodohandle di un tool o risorsa puoi usare $request->user() per controlli d’autorizzazione fine.
Esempio pratico: tool per operazioni sul database
Esempio completo di tool che cercano e creano dati usando Eloquent.Classe server
Tool di ricerca (sola lettura)
Tool di creazione (scrittura)
Esempio pratico: tool per il filesystem
Esempio di tool che opera sui file tramite il facade Storage.Test
Server MCP, tool, risorse e prompt sono testabili con gli strumenti di test standard di Laravel.Testare un tool
Chiami il tool direttamente con il metodoServer::tool().
Testare risorse e prompt
Metodi di assertion principali
Debug con MCP Inspector
Per debug interattivo usa MCP Inspector.Considerazioni per il deploy
HTTP streaming e SSE
Se usi risposte in streaming (Generator) sul server web, verifica la configurazione del server.Combinazione con Laravel Octane
Per server MCP ad alto traffico valuta Laravel Octane (FrankenPHP o Swoole). L’overhead per richiesta si riduce significativamente.Rate limit
Limita le richieste al server MCP con il middlewarethrottle.