Skip to main content

MCP

Si indicas servidores MCP en mcpServers dentro de SessionConfig podrás usarlos. Si vas a usar Laravel Boost con Copilot CLI, aprovecha también laravel-boost-copilot-cli. Sabemos que son obligatorios 'type' => 'stdio' (o 'local') y 'tools' => ['*']. Sin esto no se reconoce como servidor MCP. args es opcional.

MCP Apps (experimental)

En una sesión con enableMcpApps activado, usa $session->rpc()->mcp()->apps() para trabajar con las herramientas y los recursos de MCP Apps. listTools() devuelve las herramientas que puede llamar una app, callTool() ejecuta una herramienta y readResource() obtiene un recurso ui://, como HTML. listTools() y callTool() requieren originServerName, que identifica el servidor que realiza la llamada. Usa getHostContext() y setHostContext() para leer y escribir el contexto del host, como el tema y la configuración regional. diagnose() devuelve el estado de compatibilidad del servidor con MCP Apps.
callTool() devuelve un resultado MCP de formato libre. El SDK proporciona RPC para obtener y establecer datos, pero no renderiza el HTML obtenido ni gestiona iframes. Implementa el renderizado en tu aplicación, por ejemplo con Livewire o Inertia.

Proporcionar tokens OAuth de MCP desde el host

Cuando un servidor MCP requiere autenticación OAuth, usa onMcpAuthRequest para gestionar la autenticación en tu aplicación. El callback recibe un McpAuthRequest y un array de contexto que contiene sessionId. Devuelve un McpAuthToken para pasar el token al runtime del CLI. Devuelve null o un McpAuthResult con kind: 'cancelled' para cancelar la autenticación.
McpAuthRequest incluye requestId, serverName, serverUrl y reason (initial, refresh, reauth o upscope). Al configurar el handler, el SDK se suscribe automáticamente a los eventos mcp.oauth_required. Esto te permite autenticar en contextos que no pueden abrir un navegador, como peticiones web, colas y procesos por lotes. Al reanudar una sesión, pasa el mismo handler en ResumeSessionConfig.

Comprobar la compatibilidad con OAuth de MCP (Server RPC)

Después de que un servidor MCP remoto solicite autenticación OAuth, usa Server RPC para comprobar si admite Dynamic Client Registration (DCR). authorizationServerUrl se devuelve cuando el servidor de autorización puede descubrirse a partir de los metadatos. Si supportsDcr es false, el registro dinámico no está disponible.
resourceMetadataText son los metadatos del recurso protegido procedentes del desafío WWW-Authenticate. Si lo omites, el servidor de autorización se descubre a partir de la URL del servidor. Si pasas sessionId, se aplican la política de destinos y el proxy de sandbox de esa sesión local. Microsoft Entra ID no admite DCR. Si el servidor de autorización es de Microsoft, puedes usar un cliente registrado previamente en lugar de pedir al usuario las credenciales del cliente. Estas son Server RPC (Copilot::client()->rpc()). Pertenecen a un espacio de nombres distinto del de la RPC de sesión $session->rpc()->mcp()->oauth(), que gestiona el inicio de sesión y las solicitudes OAuth.

Estado de los servidores MCP

El estado de un servidor MCP dentro de una sesión puede tomar los siguientes valores: Cada servidor devuelto por $session->rpc()->mcp()->listConfigured() puede incluir su estado de ejecución observado como live. Conviértelo en un objeto tipado con McpConfiguredServerState::fromArray($server['live']). El bool opcional toolsLoaded de McpConfiguredServerState indica si la conexión actual ha cargado su lista de herramientas. Cuando el runtime no lo ha informado, toolsLoaded es null, así que no trates un valor ausente como false.
Un estado connected por sí solo no significa que las herramientas estén cargadas. Escucha el evento session.mcp_server_tools_loaded para saber cuándo está disponible la lista de herramientas de un servidor. Este evento efímero se emite una vez por conexión con data.serverName y data.toolCount, y no se persiste. Cuando se usan herramientas en caché, puede llegar antes que connected.

Gestión de la configuración de servidores MCP (Server RPC)

Aparte de la sesión, puedes gestionar la configuración de los servidores MCP a nivel de servidor.

Servidores deshabilitados al recargar MCP

Cuando pasas la configuración a reloadWithConfig(), configuredDisabledServers es la lista de servidores deshabilitados por los ajustes que ha resuelto tu aplicación. Especifícala por separado de disabledServers a nivel de sesión y de cliEnabledServers del CLI. La deshabilitación por ajustes tiene menor prioridad que la habilitación del CLI y la deshabilitación explícita de la sesión, así que no combines configuredDisabledServers con disabledServers.
Consulta la información más reciente en el repositorio de GitHub.
Última modificación el 19 de octubre de 2026