Skip to main content

MCP

Il suffit d’ajouter un serveur MCP à mcpServers dans SessionConfig pour l’utiliser. Pour utiliser Laravel Boost dans le Copilot CLI, utilisez également laravel-boost-copilot-cli. Il faut absolument 'type' => 'stdio' (ou 'local') ainsi que 'tools' => ['*']. Sans cela, le serveur MCP n’est pas reconnu. args est facultatif.

MCP Apps (expérimental)

Dans une session où enableMcpApps est activé, utilisez $session->rpc()->mcp()->apps() pour manipuler les outils et ressources des MCP Apps. listTools() renvoie les outils qu’une app peut appeler, callTool() exécute un outil et readResource() récupère une ressource ui://, par exemple du HTML. listTools() et callTool() requièrent originServerName, qui identifie le serveur appelant. Utilisez getHostContext() et setHostContext() pour lire et écrire le contexte de l’hôte, comme le thème et la locale. diagnose() renvoie l’état de prise en charge des MCP Apps par le serveur.
callTool() renvoie un résultat MCP de forme libre. Le SDK fournit des RPC pour récupérer et définir des données, mais il n’effectue pas le rendu du HTML récupéré et ne gère pas les iframes. Implémentez le rendu dans votre application, par exemple avec Livewire ou Inertia.

Fournir des jetons OAuth MCP depuis l’hôte

Lorsqu’un serveur MCP exige une authentification OAuth, utilisez onMcpAuthRequest pour gérer l’authentification dans votre application. Le callback reçoit une McpAuthRequest et un tableau de contexte contenant sessionId. Renvoyez un McpAuthToken pour transmettre le jeton au runtime du CLI. Renvoyez null ou un McpAuthResult avec kind: 'cancelled' pour annuler l’authentification.
McpAuthRequest contient requestId, serverName, serverUrl et reason (initial, refresh, reauth ou upscope). Lorsque vous définissez le handler, le SDK s’abonne automatiquement aux événements mcp.oauth_required. Vous pouvez ainsi vous authentifier dans des contextes où il est impossible d’ouvrir un navigateur, comme les requêtes web, les files d’attente et les batchs. Lorsque vous reprenez une session, passez le même handler dans ResumeSessionConfig.

Vérifier la prise en charge OAuth MCP (Server RPC)

Après qu’un serveur MCP distant a demandé une authentification OAuth, utilisez Server RPC pour vérifier s’il prend en charge le Dynamic Client Registration (DCR). authorizationServerUrl est renvoyé lorsque le serveur d’autorisation peut être découvert à partir des métadonnées. Si supportsDcr vaut false, l’enregistrement dynamique n’est pas disponible.
resourceMetadataText correspond aux métadonnées de ressource protégée issues du challenge WWW-Authenticate. Si vous l’omettez, le serveur d’autorisation est découvert à partir de l’URL du serveur. Si vous passez sessionId, la politique de destination et le proxy sandbox de cette session locale s’appliquent. Microsoft Entra ID ne prend pas en charge le DCR. Si le serveur d’autorisation est Microsoft, vous pouvez utiliser un client préenregistré au lieu de demander des identifiants client à l’utilisateur. Il s’agit de Server RPC (Copilot::client()->rpc()). Ils forment un espace de noms distinct du RPC de session $session->rpc()->mcp()->oauth(), qui gère les demandes de connexion et OAuth.

Statut des serveurs MCP

Le statut d’un serveur MCP dans une session peut prendre les valeurs suivantes : Chaque serveur renvoyé par $session->rpc()->mcp()->listConfigured() peut inclure son état d’exécution observé sous live. Convertissez-le en objet typé avec McpConfiguredServerState::fromArray($server['live']). Le booléen facultatif toolsLoaded de McpConfiguredServerState indique si la connexion actuelle a chargé sa liste d’outils. Lorsque le runtime ne l’a pas signalé, toolsLoaded vaut null : ne considérez donc pas une valeur absente comme false.
Un statut connected seul ne signifie pas que les outils sont chargés. Écoutez l’événement session.mcp_server_tools_loaded pour savoir quand la liste d’outils d’un serveur devient disponible. Cet événement éphémère est émis une fois par connexion avec data.serverName et data.toolCount, et n’est pas persisté. Lorsque des outils en cache sont utilisés, il peut arriver avant connected.

Gestion de la configuration MCP (Server RPC)

En dehors des sessions, vous pouvez gérer la configuration des serveurs MCP au niveau du serveur.

Serveurs désactivés lors du rechargement MCP

Lorsque vous passez une configuration à reloadWithConfig(), configuredDisabledServers est la liste des serveurs désactivés par les paramètres résolus par votre application. Spécifiez-la séparément de disabledServers au niveau de la session et de cliEnabledServers du CLI. La désactivation par les paramètres a une priorité inférieure à l’activation par le CLI et à la désactivation explicite au niveau de la session : ne fusionnez donc pas configuredDisabledServers dans disabledServers.
Pour les dernières informations, consultez le dépôt GitHub.
Dernière modification le 19 octobre 2026