Saltar al contenido principal

Herramientas

Las herramientas integradas de Copilot CLI están habilitadas por defecto. Aquí puedes indicar herramientas personalizadas.

Uso básico

Indica la definición de las herramientas en tools de SessionConfig. Tool::define() es un helper equivalente a defineTool de las versiones en otros lenguajes. En parameters puedes usar el JsonSchema que Laravel usa en Laravel MCP. También puedes pasar directamente un array sin JsonSchema.

skipPermission

Si indicas skipPermission: true, esa herramienta se ejecuta sin prompt de permiso.

Agrupar herramientas por namespace (experimental)

Si indicas namespace, puedes agrupar herramientas relacionadas en la búsqueda de herramientas del modelo. Con los modelos y proveedores compatibles, las herramientas de carga diferida se presentan agrupadas. En otros entornos, o con herramientas que se cargan siempre, se siguen tratando como herramientas individuales.
name debe tener entre 1 y 64 caracteres ASCII alfanuméricos, guiones bajos o guiones. description es opcional. El namespace no cambia el nombre de la herramienta, así que el handler se sigue invocando como lookup_fruit. Es una función experimental. Un namespace no válido genera una advertencia y la herramienta se trata como si no tuviera namespace.

$invocation

Al segundo argumento del handler, $invocation, se le pasan los siguientes campos.

Detalles del protocolo

En Protocol v3 (el valor por defecto actual), las invocaciones de herramientas se emiten como eventos de sesión (external_tool.requested), no como peticiones JSON-RPC. El SDK procesa este evento internamente y responde con el RPC session.tools.handlePendingToolCall. El uso de SessionConfig no cambia. Simplemente pasa la definición en tools; el SDK absorbe las diferencias de protocolo.

Conversión de MCP CallToolResult

Para convertir el resultado de una herramienta MCP (CallToolResult) al ToolResultObject de Copilot SDK, usa McpCallToolResult::convert(). El resultado de una herramienta MCP es un array de bloques content de texto, imagen, recursos, etc., pero Copilot SDK espera el formato ToolResultObject, así que hay que convertirlo.
Consulta la información más reciente en el repositorio de GitHub.
Última modificación el 26 de octubre de 2026