메인 콘텐츠로 건너뛰기

도구

Copilot CLI의 빌트인 도구는 기본적으로 활성화되어 있습니다. 여기서 지정할 수 있는 것은 커스텀 도구입니다.

기본 사용법

SessionConfig의 tools에 도구 정의를 지정합니다. Tool::define()은 타 언어 버전의 defineTool과 같은 헬퍼입니다. parameters에는 Laravel 자체가 Laravel MCP에서 사용하는 JsonSchema를 사용할 수 있습니다. JsonSchema를 사용하지 않고 직접 배열을 지정할 수도 있습니다.

skipPermission

skipPermission: true를 지정하면 그 도구는 퍼미션 프롬프트 없이 실행할 수 있습니다.

네임스페이스로 도구 그룹화(실험적 기능)

namespace를 지정하면 관련 도구를 모델의 도구 검색에서 그룹화할 수 있습니다. 지원하는 모델과 프로바이더에서는 지연 로드 대상 도구가 함께 제시됩니다. 그 외의 환경이나 항상 로드되는 도구는 기존과 같이 개별 도구로 취급됩니다.
name은 1~64자의 ASCII 영숫자, 언더스코어, 하이픈으로 지정합니다. description은 생략할 수 있습니다. 네임스페이스는 도구 이름을 변경하지 않으므로 핸들러는 계속 lookup_fruit로 호출됩니다. 실험적 기능입니다. 유효하지 않은 네임스페이스는 경고가 출력되고 네임스페이스 없이 취급됩니다.

$invocation

도구 핸들러의 두 번째 인자 $invocation에는 다음 필드가 전달됩니다.

프로토콜 세부

Protocol v3(현재의 기본값)에서는 도구 호출이 JSON-RPC 요청이 아니라 세션 이벤트(external_tool.requested)로 브로드캐스트됩니다. SDK는 이 이벤트를 내부적으로 처리해 session.tools.handlePendingToolCall RPC로 응답합니다. SessionConfig의 사용법은 변하지 않습니다. tools에 정의를 전달하는 것만으로 프로토콜 차이는 SDK가 흡수합니다.

MCP CallToolResult의 변환

MCP 서버의 도구 결과(CallToolResult)를 Copilot SDK의 ToolResultObject로 변환하려면 McpCallToolResult::convert()를 사용합니다. MCP 도구의 결과는 text, image, resource 등의 content 블록 배열이지만, Copilot SDK는 ToolResultObject 형식을 기대하므로 변환이 필요합니다.
최신 정보는 GitHub 저장소를 참고하세요.
마지막 수정일 2026년 10월 26일