Skip to main content

Cos’è MCP

Il Model Context Protocol (MCP) è una specifica che consente a client AI (Claude, Cursor, GitHub Copilot, ecc.) e alle applicazioni di comunicare tramite un protocollo standardizzato. Implementando un server MCP fai in modo che gli agenti AI possano accedere ai dati della tua app Laravel ed eseguire azioni.
Laravel MCP è il pacchetto ufficiale aggiunto in Laravel 13, laravel/mcp. Offre tutto il necessario per costruire server MCP.
Un server MCP può offrire tre tipi di funzionalità:

Installazione

Poi:
Viene creato routes/ai.php per registrare i server MCP.

Creazione del server

In app/Mcp/Servers:

Registrazione

In routes/ai.php puoi registrarlo come web o locale.

Server web

Accessibile via POST HTTP. Adatto a client AI remoti e integrazioni web.
Con middleware:

Server locale

Comando Artisan. Adatto a client AI locali (es. Claude Desktop).
Di solito il client MCP avvia automaticamente il server locale: non serve eseguire manualmente mcp:start.

Tool

I tool sono funzioni chiamabili dai client AI.

Creare un tool

Registralo:
Esempio:

Nome e titolo

Dedotti dal nome della classe (CurrentWeatherToolcurrent-weather, “Current Weather Tool”). Personalizzabili con Name e Title.
La Description non è generata automaticamente ed è indispensabile perché l’AI capisca come usare il tool.

Schema di input

Schema di output

Validazione

Alle validation errors i client AI riprovano seguendo il messaggio: rendilo chiaro e azionabile.

Dependency injection

Annotazioni

Registrazione condizionale

Response

Prompt

Prompt riutilizzabili.

Creare un prompt

Argomenti

Validazione

Messaggi personalizzati:

Dependency injection

Registrazione condizionale

Response del prompt

Messaggi utente e assistente con asAssistant().

Resource

Dati/informazioni che il client legge come contesto.

Creare una resource

URI e MIME type

Default: URI generato dal nome della classe (weather://resources/weather-guidelines). Personalizza con Uri e MimeType.

Template di URI

Con HasUriTemplate:
Le variabili dall’URI sono disponibili con get.

Richiesta della resource

Le resource non hanno schema di input né argomenti, ma puoi accedere alle info della richiesta.

DI nelle resource

Annotazioni

Registrazione condizionale

Response di una resource

Passando una classe registrata eredita URI, nome, titolo, descrizione, MIME.

Blob

Errore

App

Laravel MCP supporta le MCP Apps: estensione del protocollo per applicazioni HTML interattive renderizzate in iframe sandbox all’interno dell’host. Puoi costruire dashboard, form, visualizzazioni. Un’app MCP ha due parti:
  • App resource — restituisce l’HTML autonomo
  • Tool — collegato alla resource con l’attribute #[RendersApp]

Creare una app resource

Crea due file: PHP in app/Mcp/Resources e vista Blade in resources/views/mcp (dedotta dal nome della classe; WeatherDashboardAppmcp.weather-dashboard-app).
AppResource estende Resource e configura URI ui:// e MIME text/html;profile=mcp-app. Registrala nel server come le altre. La vista Blade usa <x-mcp::app>, che include l’SDK client-side MCP.
createMcpApp è fornita dall’SDK. Gestisce connessione dell’iframe, tema dell’host, helper come callServerTool, sendMessage, openLink. Vedi le specifiche MCP Apps.

Renderizzare l’app da un tool

Con #[RendersApp]:
Con una AppResource registrata, Laravel MCP annuncia automaticamente la capability io.modelcontextprotocol/ui.

Visibilità dei tool app

Con visibility limiti chi può chiamare il tool. Utile per tool riservati all’UI dell’app.
L’enum Visibility ha Model e App (default: entrambi). [Visibility::App] per backend usati dall’UI; [Visibility::Model] per nascondere all’UI.

Configurazione dell’app

Con #[AppMeta] configuri CSP dell’iframe, permessi del browser, script di libreria da includere nel <head>.
Library::Tailwind, Library::Alpine ecc. hanno gli script CDN preimpostati; le origini vanno automaticamente in CSP. Permission::Camera, Microphone, Geolocation, ClipboardWrite per i permessi.
Per config dinamica, sovrascrivi appMeta sulla resource usando i builder fluenti AppMeta, Csp, Permissions in Laravel\Mcp\Server\Ui.

Sviluppo con Boost

Laravel MCP include un riferimento di Boost mcp-development per costruire MCP Apps. L’agente può generare automaticamente app resource, viste Blade e tool collegati. Per il riferimento completo del protocollo consulta la documentazione ufficiale MCP Apps.

Metadata

Puoi aggiungere _meta alle response.
All’envelope della response:
Metadata di classe con $meta:

Icone

Con Icon puoi dichiarare icone su server, tool, resource, prompt.
L’attribute è ripetibile: puoi fornire varianti di dimensione e tema. Oppure sovrascrivi icons() per definire icone in modo programmatico.
Icone da attribute e metodo si uniscono. I path si risolvono così:
  • URI (https:, data:) restano invariati
  • Path relativi passano dall’helper asset di Laravel

Autenticazione

I server web possono usare i middleware standard di Laravel.

Sanctum

OAuth 2.1

Con Passport:
Pubblica le viste e configurale:

Autorizzazione

Client MCP

Oltre al server, Laravel MCP offre un client per connettersi ad altri server MCP e usare i tool esposti. Utile per fornire tool esterni ai propri agenti AI.

Connessione

HTTP:
Locale:
Il client fa lazy connect. Puoi gestire la connessione:
Timeout:

Client con nome

Registra client riutilizzabili:
I client con nome sono risolti una volta per richiesta e disconnessi automaticamente a fine ciclo.

Autenticazione del client

Bearer token:
OAuth 2.1:
Se il server MCP supporta la Dynamic Client Registration, puoi omettere clientId e clientSecret.
Registra le route OAuth in routes/ai.php con oAuthRoutesFor. La closure riceve il nome del client e il TokenSet dopo lo scambio del codice.
Vengono create due route con nome: mcp.oauth.{client}.connect (redirect al server di autorizzazione) e mcp.oauth.{client}.callback (scambio del codice, chiamata all’handler). Usano il middleware web (sovrascrivibile via argomento middleware). Per iniziare il flow:

Tool

Paginazione gestita automaticamente. Limita con limit:
Chiamata:
Dall’istanza del tool:
Se usi il Laravel AI SDK, passa i tool del client direttamente all’agente: Tool MCP.

Prompt

Limita con limit:
Recupero:

Resource

Lettura:

Test

MCP Inspector

Copia la config del client. Se hai autenticazione, includi l’header Authorization.

Test unitari

Prompt e resource:
Come utente autenticato:
Asserzioni principali:
Errori:
Nome, titolo, descrizione:
Notifiche di streaming:
Debug:
Ultima modifica il 13 luglio 2026