Skip to main content

MCP

Sie können MCP-Server nutzen, indem Sie sie in mcpServers von SessionConfig angeben. Wenn Sie Laravel Boost mit der Copilot CLI verwenden, setzen Sie zusätzlich laravel-boost-copilot-cli ein. Bekannt ist, dass 'type' => 'stdio' (oder 'local') und 'tools' => ['*'] zwingend erforderlich sind. Ohne diese wird der MCP-Server nicht erkannt. args ist optional.

MCP Apps (experimentell)

In einer Session mit aktiviertem enableMcpApps arbeiten Sie über $session->rpc()->mcp()->apps() mit Tools und Ressourcen von MCP Apps. listTools() liefert die Tools, die eine App aufrufen kann, callTool() führt ein Tool aus, und readResource() ruft eine ui://-Ressource wie etwa HTML ab. listTools() und callTool() erfordern originServerName, das den aufrufenden Server identifiziert. Mit getHostContext() und setHostContext() lesen und schreiben Sie den Host-Kontext, etwa Theme und Locale. diagnose() liefert den Unterstützungsstatus des Servers für MCP Apps.
callTool() gibt ein frei strukturiertes MCP-Ergebnis zurück. Das SDK stellt RPCs zum Abrufen und Setzen von Daten bereit, rendert das abgerufene HTML jedoch nicht und verwaltet keine iframes. Implementieren Sie das Rendering in Ihrer Anwendung, zum Beispiel mit Livewire oder Inertia.

MCP-OAuth-Tokens vom Host bereitstellen

Wenn ein MCP-Server eine OAuth-Authentifizierung verlangt, können Sie die Authentifizierung mit onMcpAuthRequest in Ihrer Anwendung abwickeln. Der Callback erhält eine McpAuthRequest und ein Kontext-Array mit sessionId. Geben Sie ein McpAuthToken zurück, um das Token an die CLI-Runtime zu übergeben. Geben Sie null oder ein McpAuthResult mit kind: 'cancelled' zurück, um die Authentifizierung abzubrechen.
McpAuthRequest enthält requestId, serverName, serverUrl und reason (initial, refresh, reauth oder upscope). Wenn Sie den Handler setzen, abonniert das SDK automatisch mcp.oauth_required-Events. So können Sie auch in Kontexten authentifizieren, in denen sich kein Browser öffnen lässt, etwa in Web-Requests, Queues und Batches. Wenn Sie eine Session fortsetzen, übergeben Sie denselben Handler in ResumeSessionConfig.

MCP-OAuth-Unterstützung prüfen (Server-RPC)

Nachdem ein Remote-MCP-Server eine OAuth-Authentifizierung angefordert hat, können Sie per Server-RPC prüfen, ob er Dynamic Client Registration (DCR) unterstützt. authorizationServerUrl wird zurückgegeben, wenn sich der Autorisierungsserver aus den Metadaten ermitteln lässt. Ist supportsDcr false, steht die dynamische Registrierung nicht zur Verfügung.
resourceMetadataText sind die Protected-Resource-Metadaten aus der WWW-Authenticate-Challenge. Wenn Sie sie weglassen, wird der Autorisierungsserver anhand der Server-URL ermittelt. Wenn Sie sessionId übergeben, gelten die Zielrichtlinie und der Sandbox-Proxy dieser lokalen Session. Microsoft Entra ID unterstützt kein DCR. Handelt es sich beim Autorisierungsserver um Microsoft, können Sie einen vorab registrierten Client verwenden, statt den Benutzer nach Client-Anmeldedaten zu fragen. Dies sind Server-RPCs (Copilot::client()->rpc()). Sie bilden einen eigenen Namespace, getrennt vom Session-RPC $session->rpc()->mcp()->oauth(), das Login- und OAuth-Anfragen verarbeitet.

Status von MCP-Servern

Der Status eines MCP-Servers innerhalb einer Session kann folgende Werte annehmen: Jeder von $session->rpc()->mcp()->listConfigured() zurückgegebene Server kann seinen beobachteten Laufzeitzustand als live enthalten. Mit McpConfiguredServerState::fromArray($server['live']) wandeln Sie ihn in ein typisiertes Objekt um. Das optionale Bool toolsLoaded in McpConfiguredServerState gibt an, ob die aktuelle Verbindung ihre Tool-Liste geladen hat. Hat die Runtime den Wert nicht gemeldet, ist toolsLoaded null. Werten Sie einen fehlenden Wert daher nicht als false.
Der Status connected allein bedeutet nicht, dass die Tools geladen sind. Hören Sie auf das Event session.mcp_server_tools_loaded, um zu erfahren, wann die Tool-Liste eines Servers verfügbar ist. Dieses flüchtige Event wird pro Verbindung einmal mit data.serverName und data.toolCount ausgelöst und nicht persistiert. Werden gecachte Tools verwendet, kann es vor connected eintreffen.

MCP-Server-Konfiguration verwalten (Server-RPC)

Unabhängig von einer Session können Sie MCP-Server-Konfigurationen auf Serverebene verwalten.

Deaktivierte Server beim Neuladen von MCP

Wenn Sie reloadWithConfig() eine Konfiguration übergeben, ist configuredDisabledServers die Liste der Server, die durch von Ihrer Anwendung aufgelöste Einstellungen deaktiviert wurden. Geben Sie sie getrennt vom Session-weiten disabledServers und dem cliEnabledServers der CLI an. Die Deaktivierung über Einstellungen hat eine niedrigere Priorität als die Aktivierung über die CLI und die explizite Deaktivierung in der Session. Führen Sie configuredDisabledServers daher nicht mit disabledServers zusammen.
Aktuelle Informationen finden Sie im GitHub-Repository.
Zuletzt geändert am 19. Oktober 2026