MCP
Je kunt MCP-servers gebruiken door ze op te geven inmcpServers van de SessionConfig.
Gebruik je Laravel Boost met de Copilot CLI, gebruik dan ook laravel-boost-copilot-cli.
Het is bekend dat 'type' => 'stdio' (of 'local') en 'tools' => ['*'] verplicht zijn. Zonder deze wordt de server niet als MCP-server herkend.
args is optioneel.
MCP Apps (experimenteel)
Gebruik in een sessie waarinenableMcpApps is ingeschakeld $session->rpc()->mcp()->apps() om met tools en resources van MCP Apps te werken. listTools() retourneert de tools die een app kan aanroepen, callTool() voert een tool uit en readResource() haalt een ui://-resource op, zoals HTML. listTools() en callTool() vereisen originServerName, dat de aanroepende server identificeert.
Gebruik getHostContext() en setHostContext() om hostcontext zoals het thema en de locale te lezen en te schrijven. diagnose() retourneert de status van de MCP Apps-ondersteuning van de server.
callTool() retourneert een vrij vormgegeven MCP-resultaat. De SDK biedt RPC’s om gegevens op te halen en in te stellen, maar rendert de opgehaalde HTML niet en beheert geen iframes. Implementeer het renderen in je applicatie, bijvoorbeeld met Livewire of Inertia.
MCP OAuth-tokens vanuit de host aanleveren
Vereist een MCP-server OAuth-authenticatie, gebruik danonMcpAuthRequest om de authenticatie in je applicatie af te handelen. De callback ontvangt een McpAuthRequest en een context-array met sessionId. Retourneer een McpAuthToken om het token door te geven aan de CLI-runtime. Retourneer null of een McpAuthResult met kind: 'cancelled' om de authenticatie te annuleren.
McpAuthRequest bevat requestId, serverName, serverUrl en reason (initial, refresh, reauth of upscope). Wanneer je de handler instelt, abonneert de SDK zich automatisch op mcp.oauth_required-events. Zo kun je authenticeren in contexten waarin geen browser kan worden geopend, zoals webrequests, queues en batches. Geef bij het hervatten van een sessie dezelfde handler mee in ResumeSessionConfig.
Ondersteuning voor MCP OAuth controleren (Server RPC)
Nadat een externe MCP-server om OAuth-authenticatie heeft gevraagd, kun je met Server RPC controleren of deze Dynamic Client Registration (DCR) ondersteunt.authorizationServerUrl wordt geretourneerd wanneer de autorisatieserver via metadata kan worden gevonden. Is supportsDcr false, dan is dynamische registratie niet beschikbaar.
resourceMetadataText is de metadata van de beschermde resource uit de WWW-Authenticate-challenge. Laat je deze weg, dan wordt de autorisatieserver gevonden via de server-URL. Geef je sessionId mee, dan gelden het bestemmingsbeleid en de sandboxproxy van die lokale sessie. Microsoft Entra ID ondersteunt geen DCR. Is de autorisatieserver van Microsoft, dan kun je een vooraf geregistreerde client gebruiken in plaats van de gebruiker om clientgegevens te vragen.
Dit zijn Server RPC’s (Copilot::client()->rpc()). Ze vormen een aparte namespace naast de sessie-RPC $session->rpc()->mcp()->oauth(), die login- en OAuth-verzoeken afhandelt.
Status van MCP-servers
De status van een MCP-server binnen een session kan de volgende waarden hebben:
Elke server die
$session->rpc()->mcp()->listConfigured() retourneert, kan zijn waargenomen runtimestatus bevatten als live. Zet deze om naar een getypeerd object met McpConfiguredServerState::fromArray($server['live']). De optionele bool toolsLoaded op McpConfiguredServerState geeft aan of de huidige verbinding de lijst met tools heeft geladen. Heeft de runtime dit niet gerapporteerd, dan is toolsLoaded null; behandel een ontbrekende waarde dus niet als false.
connected-status alleen betekent niet dat de tools zijn geladen. Luister naar het event session.mcp_server_tools_loaded om te weten wanneer de lijst met tools van een server beschikbaar is. Dit kortstondige event wordt één keer per verbinding afgevuurd met data.serverName en data.toolCount, en wordt niet opgeslagen. Wanneer gecachete tools worden gebruikt, kan het vóór connected binnenkomen.
MCP-serverconfiguratie beheren (Server RPC)
Los van sessions kun je de configuratie van MCP-servers op serverniveau beheren.Uitgeschakelde servers bij het herladen van MCP
Wanneer je configuratie doorgeeft aanreloadWithConfig(), is configuredDisabledServers de lijst met servers die zijn uitgeschakeld door instellingen die je applicatie heeft opgelost. Geef deze apart op van disabledServers op sessieniveau en cliEnabledServers van de CLI. Uitschakelen via instellingen heeft een lagere prioriteit dan inschakelen via de CLI en expliciet uitschakelen in de sessie, dus voeg configuredDisabledServers niet samen met disabledServers.
Raadpleeg de GitHub-repository voor de meest actuele informatie.