Contents
see ListClaude Code Agent SDK란
Claude Code Agent SDK는 Anthropic이 공개한 Python/TypeScript 라이브러리로, Claude Code의 에이전트 기능을 프로그래밍 방식으로 활용할 수 있습니다. 파일 읽기/쓰기, 코드 실행, 웹 검색 등 Claude Code의 내장 도구를 그대로 사용하면서 커스텀 워크플로를 구성할 수 있습니다.
설치 및 기본 설정
Python SDK 설치
# pip으로 설치
pip install claude-code-sdk
# 필수: Claude Code CLI가 설치되어 있어야 함
npm install -g @anthropic-ai/claude-codeTypeScript SDK 설치
npm install @anthropic-ai/claude-code-sdkPython SDK 기본 사용법
import asyncio
from claude_code_sdk import query, ClaudeCodeOptions, Message
async def main():
messages: list[Message] = []
# Claude Code에 질의
async for event in query(
prompt="src/ 폴더의 Python 파일 중 테스트가 없는 함수를 찾아줘",
options=ClaudeCodeOptions(
max_turns=10,
system_prompt="당신은 코드 품질 검사 전문가입니다.",
),
):
if event.type == "assistant":
for block in event.message.content:
if hasattr(block, "text"):
print(block.text)
elif event.type == "result":
print(f"\n--- 완료 (비용: ${event.cost_usd:.4f}) ---")
messages = event.messages
asyncio.run(main())TypeScript SDK 기본 사용법
import { query, ClaudeCodeOptions } from '@anthropic-ai/claude-code-sdk';
async function main() {
const options: ClaudeCodeOptions = {
maxTurns: 10,
systemPrompt: '당신은 코드 리뷰 전문가입니다.',
};
for await (const event of query({
prompt: 'package.json의 의존성 중 보안 취약점이 있는지 확인해줘',
options,
})) {
if (event.type === 'assistant') {
for (const block of event.message.content) {
if ('text' in block) {
console.log(block.text);
}
}
}
}
}
main();멀티턴 대화
import asyncio
from claude_code_sdk import query, ClaudeCodeOptions
async def multi_turn():
conversation = []
# 1단계: 코드 분석
async for event in query(
prompt="src/auth.py의 보안 취약점을 분석해줘",
options=ClaudeCodeOptions(max_turns=5),
):
if event.type == "result":
conversation = event.messages
# 2단계: 이전 대화를 이어서 수정 요청
async for event in query(
prompt="발견된 취약점 중 가장 심각한 것부터 수정해줘",
options=ClaudeCodeOptions(
max_turns=10,
resume=conversation, # 이전 대화 이어서
),
):
if event.type == "assistant":
for block in event.message.content:
if hasattr(block, "text"):
print(block.text)
asyncio.run(multi_turn())커스텀 도구(MCP) 연동
from claude_code_sdk import query, ClaudeCodeOptions
# MCP 서버를 통한 커스텀 도구 사용
options = ClaudeCodeOptions(
max_turns=15,
mcp_servers={
"database": {
"command": "npx",
"args": ["-y", "@my/db-mcp-server"],
"env": {"DB_URL": "postgresql://localhost/mydb"}
},
"slack": {
"command": "npx",
"args": ["-y", "@my/slack-mcp-server"],
"env": {"SLACK_TOKEN": "xoxb-..."}
}
}
)CLAUDE.md로 에이전트 동작 제어
프로젝트 루트에 CLAUDE.md를 배치하면 SDK로 실행하는 에이전트에도 동일하게 적용됩니다.
# CLAUDE.md 예시
## 규칙
- TypeScript 사용 시 strict 모드 필수
- 테스트 파일은 __tests__/ 디렉토리에 작성
- API 호출 시 반드시 에러 핸들링 포함
## 금지 사항
- console.log 대신 logger 모듈 사용
- any 타입 사용 금지Hooks로 도구 실행 제어
// .claude/settings.json
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"command": "node scripts/validate-command.js"
}
],
"PostToolUse": [
{
"matcher": "Write",
"command": "npx prettier --write $FILE_PATH"
}
]
}
}핵심 정리
- Python/TypeScript SDK로 Claude Code를 프로그래밍 방식으로 사용
- query() 함수로 프롬프트 전송, 스트리밍 이벤트로 결과 수신
- resume 옵션으로 멀티턴 대화 구현
- MCP 서버로 데이터베이스, Slack 등 커스텀 도구 연동
- CLAUDE.md와 Hooks로 에이전트 동작 규칙 설정