Skip to main content

MCP

Puoi usare i server MCP specificandoli in mcpServers di SessionConfig. Se usi Laravel Boost con Copilot CLI, considera anche laravel-boost-copilot-cli. Si è verificato che 'type' => 'stdio' (oppure 'local') e 'tools' => ['*'] sono obbligatori. Senza di questi non viene riconosciuto come server MCP. args è facoltativo.

MCP Apps (sperimentale)

In una sessione con enableMcpApps abilitato, usa $session->rpc()->mcp()->apps() per lavorare con gli strumenti e le risorse di MCP Apps. listTools() restituisce gli strumenti che un’app può chiamare, callTool() esegue uno strumento e readResource() recupera una risorsa ui://, ad esempio HTML. listTools() e callTool() richiedono originServerName, che identifica il server chiamante. Usa getHostContext() e setHostContext() per leggere e scrivere il contesto dell’host, come il tema e la lingua. diagnose() restituisce lo stato del supporto MCP Apps del server.
callTool() restituisce un risultato MCP in formato libero. L’SDK fornisce le RPC per recuperare e impostare i dati, ma non esegue il rendering dell’HTML recuperato né gestisce gli iframe. Implementa il rendering nella tua applicazione, ad esempio con Livewire o Inertia.

Fornire token OAuth MCP dall’host

Quando un server MCP richiede l’autenticazione OAuth, usa onMcpAuthRequest per gestire l’autenticazione nella tua applicazione. La callback riceve un McpAuthRequest e un array di contesto che contiene sessionId. Restituisci un McpAuthToken per passare il token al runtime della CLI. Restituisci null oppure un McpAuthResult con kind: 'cancelled' per annullare l’autenticazione.
McpAuthRequest include requestId, serverName, serverUrl e reason (initial, refresh, reauth o upscope). Quando imposti l’handler, l’SDK si iscrive automaticamente agli eventi mcp.oauth_required. In questo modo puoi autenticarti in contesti che non possono aprire un browser, come richieste web, code ed elaborazioni batch. Quando riprendi una sessione, passa lo stesso handler in ResumeSessionConfig.

Verificare il supporto OAuth MCP (Server RPC)

Dopo che un server MCP remoto ha richiesto l’autenticazione OAuth, usa la Server RPC per verificare se supporta la Dynamic Client Registration (DCR). authorizationServerUrl viene restituito quando il server di autorizzazione può essere individuato dai metadati. Se supportsDcr è false, la registrazione dinamica non è disponibile.
resourceMetadataText sono i metadati della risorsa protetta provenienti dalla challenge WWW-Authenticate. Se lo ometti, il server di autorizzazione viene individuato a partire dall’URL del server. Se passi sessionId, si applicano la policy di destinazione e il proxy sandbox di quella sessione locale. Microsoft Entra ID non supporta la DCR. Se il server di autorizzazione è Microsoft, puoi usare un client preregistrato invece di chiedere all’utente le credenziali del client. Queste sono Server RPC (Copilot::client()->rpc()). Appartengono a un namespace separato rispetto alla RPC di sessione $session->rpc()->mcp()->oauth(), che gestisce il login e le richieste OAuth.

Stato dei server MCP

Lo stato dei server MCP in una sessione può assumere i seguenti valori: Ogni server restituito da $session->rpc()->mcp()->listConfigured() può includere il proprio stato di runtime osservato come live. Convertilo in un oggetto tipizzato con McpConfiguredServerState::fromArray($server['live']). Il bool facoltativo toolsLoaded di McpConfiguredServerState indica se la connessione corrente ha caricato l’elenco degli strumenti. Quando il runtime non lo ha segnalato, toolsLoaded è null, quindi non considerare un valore mancante come false.
Lo stato connected da solo non significa che gli strumenti siano stati caricati. Ascolta l’evento session.mcp_server_tools_loaded per sapere quando l’elenco degli strumenti di un server diventa disponibile. Questo evento effimero viene emesso una volta per connessione con data.serverName e data.toolCount e non viene salvato. Quando vengono usati strumenti in cache, può arrivare prima di connected.

Gestione della configurazione dei server MCP (Server RPC)

Indipendentemente dalla sessione, puoi gestire la configurazione dei server MCP a livello di server.

Server disabilitati durante il ricaricamento MCP

Quando passi la configurazione a reloadWithConfig(), configuredDisabledServers è l’elenco dei server disabilitati dalle impostazioni risolte dalla tua applicazione. Specificalo separatamente da disabledServers a livello di sessione e da cliEnabledServers della CLI. La disabilitazione tramite impostazioni ha priorità inferiore rispetto all’abilitazione da CLI e alla disabilitazione esplicita della sessione, quindi non unire configuredDisabledServers a disabledServers.
Per le informazioni più recenti fai riferimento al repository GitHub.
Ultima modifica il 19 ottobre 2026