설치
함수
query()
Claude Code와 상호작용하기 위한 주요 함수입니다. 메시지가 도착하면 스트리밍하는 비동기 생성기를 생성합니다.
매개변수
| 매개변수 | 타입 | 설명 |
|---|---|---|
prompt | string | AsyncIterable<SDKUserMessage> | 문자열 또는 스트리밍 모드용 비동기 반복 가능 객체로서의 입력 프롬프트 |
options | Options | 선택적 구성 객체 (아래의 Options 타입 참조) |
반환값
Query 객체를 반환하며, 이는 AsyncGenerator<SDKMessage, void>를 확장하고 추가 메서드를 포함합니다.
tool()
SDK MCP 서버와 함께 사용할 타입 안전 MCP 도구 정의를 생성합니다.
매개변수
| 매개변수 | 타입 | 설명 |
|---|---|---|
name | string | 도구의 이름 |
description | string | 도구가 수행하는 작업에 대한 설명 |
inputSchema | Schema extends ZodRawShape | 도구의 입력 매개변수를 정의하는 Zod 스키마 |
handler | (args, extra) => Promise<CallToolResult> | 도구 로직을 실행하는 비동기 함수 |
createSdkMcpServer()
애플리케이션과 동일한 프로세스에서 실행되는 MCP 서버 인스턴스를 생성합니다.
매개변수
| 매개변수 | 타입 | 설명 |
|---|---|---|
options.name | string | MCP 서버의 이름 |
options.version | string | 선택적 버전 문자열 |
options.tools | Array<SdkMcpToolDefinition> | tool()로 생성된 도구 정의의 배열 |
타입
Options
query() 함수의 구성 객체입니다.
| 속성 | 타입 | 기본값 | 설명 |
|---|---|---|---|
abortController | AbortController | new AbortController() | 작업 취소용 컨트롤러 |
additionalDirectories | string[] | [] | Claude가 접근할 수 있는 추가 디렉토리 |
agents | Record<string, [AgentDefinition](#agentdefinition)> | undefined | 프로그래밍 방식으로 서브에이전트 정의 |
allowedTools | string[] | 모든 도구 | 허용된 도구 이름 목록 |
canUseTool | CanUseTool | undefined | 도구 사용을 위한 사용자 정의 권한 함수 |
continue | boolean | false | 가장 최근 대화 계속 진행 |
cwd | string | process.cwd() | 현재 작업 디렉토리 |
disallowedTools | string[] | [] | 허용되지 않는 도구 이름 목록 |
env | Dict<string> | process.env | 환경 변수 |
executable | 'bun' | 'deno' | 'node' | 자동 감지 | 사용할 JavaScript 런타임 |
executableArgs | string[] | [] | 실행 파일에 전달할 인수 |
extraArgs | Record<string, string | null> | {} | 추가 인수 |
fallbackModel | string | undefined | 기본 모델이 실패할 경우 사용할 모델 |
forkSession | boolean | false | resume으로 재개할 때 원래 세션을 계속하는 대신 새 세션 ID로 분기 |
hooks | Partial<Record<HookEvent, HookCallbackMatcher[]>> | {} | 이벤트에 대한 훅 콜백 |
includePartialMessages | boolean | false | 부분 메시지 이벤트 포함 |
maxThinkingTokens | number | undefined | 사고 프로세스의 최대 토큰 |
maxTurns | number | undefined | 최대 대화 턴 |
mcpServers | Record<string, [McpServerConfig](#mcpserverconfig)> | {} | MCP 서버 구성 |
model | string | CLI의 기본값 | 사용할 Claude 모델 |
pathToClaudeCodeExecutable | string | 자동 감지 | Claude Code 실행 파일의 경로 |
permissionMode | PermissionMode | 'default' | 세션의 권한 모드 |
permissionPromptToolName | string | undefined | 권한 프롬프트용 MCP 도구 이름 |
plugins | SdkPluginConfig[] | [] | 로컬 경로에서 사용자 정의 플러그인을 로드합니다. 자세한 내용은 플러그인을 참조하세요 |
resume | string | undefined | 재개할 세션 ID |
settingSources | SettingSource[] | [] (설정 없음) | 로드할 파일 시스템 설정을 제어합니다. 생략하면 설정이 로드되지 않습니다. 참고: CLAUDE.md 파일을 로드하려면 'project'를 포함해야 합니다 |
stderr | (data: string) => void | undefined | stderr 출력용 콜백 |
strictMcpConfig | boolean | false | 엄격한 MCP 검증 적용 |
systemPrompt | string | { type: 'preset'; preset: 'claude_code'; append?: string } | undefined (빈 프롬프트) | 시스템 프롬프트 구성. 사용자 정의 프롬프트의 경우 문자열을 전달하거나, Claude Code의 시스템 프롬프트를 사용하려면 { type: 'preset', preset: 'claude_code' }를 전달합니다. 프리셋 객체 형식을 사용할 때 append를 추가하여 추가 지침으로 시스템 프롬프트를 확장합니다 |
Query
query() 함수에서 반환되는 인터페이스입니다.
메서드
| 메서드 | 설명 |
|---|---|
interrupt() | 쿼리를 중단합니다 (스트리밍 입력 모드에서만 사용 가능) |
setPermissionMode() | 권한 모드를 변경합니다 (스트리밍 입력 모드에서만 사용 가능) |
AgentDefinition
프로그래밍 방식으로 정의된 서브에이전트의 구성입니다.
| 필드 | 필수 | 설명 |
|---|---|---|
description | 예 | 이 에이전트를 사용할 시기에 대한 자연어 설명 |
tools | 아니오 | 허용된 도구 이름의 배열. 생략하면 모든 도구를 상속합니다 |
prompt | 예 | 에이전트의 시스템 프롬프트 |
model | 아니오 | 이 에이전트의 모델 재정의. 생략하면 주 모델을 사용합니다 |
SettingSource
SDK가 로드하는 파일 시스템 기반 구성 소스를 제어합니다.
| 값 | 설명 | 위치 |
|---|---|---|
'user' | 전역 사용자 설정 | ~/.claude/settings.json |
'project' | 공유 프로젝트 설정 (버전 제어됨) | .claude/settings.json |
'local' | 로컬 프로젝트 설정 (gitignored) | .claude/settings.local.json |
기본 동작
settingSources가 생략되거나 undefined일 때, SDK는 파일 시스템 설정을 로드하지 않습니다. 이는 SDK 애플리케이션에 대한 격리를 제공합니다.
settingSources를 사용하는 이유는 무엇입니까?
모든 파일 시스템 설정 로드 (레거시 동작):설정 우선순위
여러 소스가 로드될 때, 설정은 다음 우선순위(높음에서 낮음)로 병합됩니다:- 로컬 설정 (
.claude/settings.local.json) - 프로젝트 설정 (
.claude/settings.json) - 사용자 설정 (
~/.claude/settings.json)
agents, allowedTools)은 항상 파일 시스템 설정을 재정의합니다.
PermissionMode
CanUseTool
도구 사용을 제어하기 위한 사용자 정의 권한 함수 타입입니다.
PermissionResult
권한 검사의 결과입니다.
McpServerConfig
MCP 서버의 구성입니다.
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
McpSdkServerConfigWithInstance
SdkPluginConfig
SDK에서 플러그인을 로드하기 위한 구성입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
type | 'local' | 'local'이어야 합니다 (현재 로컬 플러그인만 지원됨) |
path | string | 플러그인 디렉토리의 절대 또는 상대 경로 |
메시지 타입
SDKMessage
쿼리에서 반환되는 모든 가능한 메시지의 합집합 타입입니다.
SDKAssistantMessage
어시스턴트 응답 메시지입니다.
SDKUserMessage
사용자 입력 메시지입니다.
SDKUserMessageReplay
필수 UUID가 있는 재생된 사용자 메시지입니다.
SDKResultMessage
최종 결과 메시지입니다.
SDKSystemMessage
시스템 초기화 메시지입니다.
SDKPartialAssistantMessage
스트리밍 부분 메시지 (includePartialMessages가 true일 때만).
SDKCompactBoundaryMessage
대화 압축 경계를 나타내는 메시지입니다.
SDKPermissionDenial
거부된 도구 사용에 대한 정보입니다.
훅 타입
HookEvent
사용 가능한 훅 이벤트입니다.
HookCallback
훅 콜백 함수 타입입니다.
HookCallbackMatcher
선택적 매처가 있는 훅 구성입니다.
HookInput
모든 훅 입력 타입의 합집합 타입입니다.
BaseHookInput
모든 훅 입력 타입이 확장하는 기본 인터페이스입니다.
PreToolUseHookInput
PostToolUseHookInput
NotificationHookInput
UserPromptSubmitHookInput
SessionStartHookInput
SessionEndHookInput
StopHookInput
SubagentStopHookInput
PreCompactHookInput
HookJSONOutput
훅 반환값입니다.
AsyncHookJSONOutput
SyncHookJSONOutput
도구 입력 타입
모든 기본 제공 Claude Code 도구의 입력 스키마 문서입니다. 이러한 타입은@anthropic-ai/claude-agent-sdk에서 내보내지며 타입 안전 도구 상호작용에 사용할 수 있습니다.
ToolInput
참고: 이것은 명확성을 위한 문서 전용 타입입니다. 모든 도구 입력 타입의 합집합을 나타냅니다.
Task
도구 이름:Task
Bash
도구 이름:Bash
BashOutput
도구 이름:BashOutput
Edit
도구 이름:Edit
Read
도구 이름:Read
Write
도구 이름:Write
Glob
도구 이름:Glob
Grep
도구 이름:Grep
KillBash
도구 이름:KillBash
NotebookEdit
도구 이름:NotebookEdit
WebFetch
도구 이름:WebFetch
WebSearch
도구 이름:WebSearch
TodoWrite
도구 이름:TodoWrite
ExitPlanMode
도구 이름:ExitPlanMode
ListMcpResources
도구 이름:ListMcpResources
ReadMcpResource
도구 이름:ReadMcpResource
도구 출력 타입
모든 기본 제공 Claude Code 도구의 출력 스키마 문서입니다. 이러한 타입은 각 도구에서 반환되는 실제 응답 데이터를 나타냅니다.ToolOutput
참고: 이것은 명확성을 위한 문서 전용 타입입니다. 모든 도구 출력 타입의 합집합을 나타냅니다.
Task
도구 이름:Task
Bash
도구 이름:Bash
BashOutput
도구 이름:BashOutput
Edit
도구 이름:Edit
Read
도구 이름:Read
Write
도구 이름:Write
Glob
도구 이름:Glob
Grep
도구 이름:Grep
KillBash
도구 이름:KillBash
NotebookEdit
도구 이름:NotebookEdit
WebFetch
도구 이름:WebFetch
WebSearch
도구 이름:WebSearch
TodoWrite
도구 이름:TodoWrite
ExitPlanMode
도구 이름:ExitPlanMode
ListMcpResources
도구 이름:ListMcpResources
ReadMcpResource
도구 이름:ReadMcpResource
권한 타입
PermissionUpdate
권한 업데이트 작업입니다.
PermissionBehavior
PermissionUpdateDestination
PermissionRuleValue
기타 타입
ApiKeySource
ConfigScope
NonNullableUsage
모든 nullable 필드가 non-nullable로 만들어진 Usage의 버전입니다.
Usage
토큰 사용 통계 (@anthropic-ai/sdk에서).
CallToolResult
MCP 도구 결과 타입 (@modelcontextprotocol/sdk/types.js에서).
AbortError
중단 작업을 위한 사용자 정의 오류 클래스입니다.
참고 항목
- SDK 개요 - 일반 SDK 개념
- Python SDK 참조 - Python SDK 문서
- CLI 참조 - 명령줄 인터페이스
- 일반적인 워크플로우 - 단계별 가이드