전체 목차
챕터 07

Claude Code SDK

⚠️ 주의: 영상의 패키지 이름은 더 이상 동작하지 않음 → 현재는 @anthropic-ai/claude-agent-sdk 사용

Agent SDK란

Agent SDK는 자신의 애플리케이션이나 스크립트에서 Claude Code를 프로그램적으로 실행할 수 있게 해주는 SDK입니다. TypeScript, Python 라이브러리를 통해 사용가능하고, CLI에서도 당연히 사용 가능합니다. Agent SDK는 Claude Code를 코드를 통해 직접 제어할 수 있게 해줍니다. 터미널에서 사용하는 Claude Code CLI와 동일합니다. 이렇게 Agent SDK는 agent 루프(파일 읽기, 편집, 도구 사용)를 코드를 통해 직접 제어 가능하게 해줍니다. 앞서 Hook 예시에서 보았듯이 Agent SDK는 큰 파이프라인 또는 도구의 일부/중간에 Claude Code를 사용하고 싶을 때(지능형 명령) 유용합니다.

Claude Code SDK 문서 슬라이드로, 좌측에 주요 기능 목록 표시, 우측에 CLI, TypeScript, Python 코드 예시를 검은 배경 상자로 표시.

설치

Agent SDK의 패키지 이름은 @anthropic-ai/claude-agent-sdk입니다.

⚠️ 비슷한 이름의 @anthropic-ai/claude-codeCLI 자체라 import할 수 없음.

원하는 경로로 이동해 패키지를 설치하면 됩니다.

mkdir sdk-demo
cd sdk-demo
npm init -y
npm install @anthropic-ai/claude-agent-sdk

간단한 예시

nano index.mjs를 입력해 빠르게 index.mjs를 만들고 다음 코드를 붙여넣어보세요.

import { query } from "@anthropic-ai/claude-agent-sdk";

const prompt = "List the files in the current directory";

for await (const message of query({ prompt })) {
  console.log(JSON.stringify(message, null, 2));
}

그리고 다음 명령어로 index.mjs를 실행합니다.

node index.mjs

→ CLI에서 보던 것과 동일한 JSON 메시지 스트림 출력 (도구 호출, 도구 결과, Claude의 텍스트 응답 포함)이 보입니다.

도구 제한하기: allowedTools

기본적으로 SDK는 읽기 전용 도구만 사용 가능합니다. 편집 도구 등 원하는 도구를 사용하고 싶다면 allowedTools 를 사용하면 됩니다.

VS Code 코드 편집기에서 TypeScript 파일 sdk.ts를 열어 Claude 에이전트 SDK에서 query 함수를 import하고 프롬프트, 쿼리 옵션, 콘솔 출력 코드를 작성 중.
for await (const message of query({
  prompt,
  options: { allowedTools: ["Edit"] },
})) {
  // ...
}
VSCode 코드 편집기의 package.json 파일 스크린샷으로, 3번 줄의 description 필드가 빨간 직사각형으로 강조되어 있음.

allowedTools 는 CLI에서 --allowedTools 플래그와 동일한 역할을 합니다.

SDK 지원 기능

CLI가 하는 모든 것을 지원합니다.

  • 커스텀 시스템 프롬프트
  • MCP 서버
  • Hooks
  • 서브에이전트
  • 세션 재개 (session resumption)

활용 시나리오

  • 17단원의 query Hook. Hook 안에서 또 다른 Claude를 spawn해 리뷰하는 사례
  • 일괄 처리 스크립트로 여러 파일에 동일 작업을 자동 적용
  • CI/CD 파이프라인 통합 (GitHub Action 외 환경에서도 활용 가능)
  • 외부 시스템 트리거 (예: Slack 명령으로 Claude 작업 실행)

요약

항목내용
패키지@anthropic-ai/claude-agent-sdk
핵심 APIquery({ prompt, options }), async iterable 반환
도구 제한options.allowedTools
지원TypeScript, Python

이 글은 모던웹연구소 (www.modernweblabs.com)에서 처음 발행되었습니다. © 모던웹연구소. 무단 전재 및 재배포를 금합니다.

공유