development·

Claude Agent SDK 実装ガイド|Claude Codeのエージェントループを自社プロダクトに組み込む(Python・TypeScript対応)

Claude Code SDKから2025年9月29日に改称されたClaude Agent SDKを実装目線で徹底解説。Python・TypeScript両対応、Claude Codeと同じエージェントループ、MCP連携、コンテキスト管理を自社アプリに組み込む手順とアーキテクチャ、マイグレーションまでカバーします。

Claude Agent SDK 実装ガイド|Claude Codeのエージェントループを自社プロダクトに組み込む(Python・TypeScript対応)

Claude Code が社内で便利だから、同じことを自社プロダクトにも組み込みたい ── そう感じた瞬間に頼りになるのが Claude Agent SDK です。2025 年 9 月 29 日に Claude Code SDK から改称され、Python と TypeScript の公式パッケージとして提供されています。

本記事では、SDK の位置付けから Hello World、アーキテクチャ、実装パターン、MCP 連携、旧 SDK からのマイグレーション、そして LangChain / LlamaIndex / OpenAI Agents SDK との比較まで、実装者目線で整理します。SIer・受託開発・自社プロダクト開発など、「Claude Code の基盤を自社に埋め込みたい」方を対象としています。Claude Code そのものの使い方はClaude Code完全ガイド、MCP の基礎はMCPサーバービジネスガイドを参照してください。

この記事を読むとわかること

  • Claude Code SDK → Claude Agent SDK 改称の背景と具体的な日付
  • Python / TypeScript の Hello World と、実装パターン 3 種
  • エージェントループ / ツール呼び出し / コンテキスト管理 / パーミッションモードの 4 要素
  • MCP サーバーの統合と、プロンプトインジェクション対策
  • LangChain / LlamaIndex / OpenAI Agents SDK との比較観点

結論 ── Claude Code の基盤をそのまま自社プロダクトに埋め込める SDK

Claude Agent SDK は、Claude Code と同じエージェントループ・ツール呼び出し・コンテキスト管理をライブラリとして提供する公式 SDK です。 2025 年 9 月 29 日に Claude Code SDK からリネームされ、Python の claude_agent_sdk、TypeScript の @anthropic-ai/claude-agent-sdk として公開されています。

コーディング以外のユースケース ── リサーチエージェント、ノートテイキング、動画生成、カスタマーサポート、法律解析など ── にも転用可能な汎用エージェント基盤で、自社プロダクトに「Claude Code のような挙動」を組み込みたい開発者にとって最短の道筋です。

名称変更の背景(Claude Code SDK → Claude Agent SDK)

改称の流れを時系列で整理します。

日付出来事
2025-07-21Claude Code SDK が PyPI に 0.0.0.dev 系としてプレリリース
2025-09-29claude-code-sdk が claude-agent-sdk にリネーム、安定版リリース
2026-04-16Opus 4.7 公開と合わせて SDK も更新

Anthropic は改称理由として、SDK が deep research、動画生成、カスタマーサポート、法律解析、ノートテイキングなど、コード以外の用途で広く使われている実態を挙げています。「Claude Code SDK」という名前が用途を狭く見せていたため、より汎用的な「Claude Agent SDK」に改めた、という経緯です。

インストールと Hello World

Python 版

pip install claude-agent-sdk
from claude_agent_sdk import query

async def main():
    async for message in query(prompt="Hello, what can you do?"):
        print(message)

import asyncio
asyncio.run(main())

TypeScript 版

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

async function main() {
  for await (const message of query({ prompt: "Hello, what can you do?" })) {
    console.log(message);
  }
}

main();

どちらも ストリーミングでメッセージが返ってくるのが基本挙動です。同期的な最終回答だけを取りたい場合は配列化ヘルパーを使うか、自前でバッファリングします。

アーキテクチャ概観

エージェントループの仕組み

Claude Agent SDK のコアは、以下のループを実行するエージェント機構です。

graph LR
  A[ユーザー入力] --> B[Claude に送信]
  B --> C{Claude の応答}
  C -->|テキスト応答| Z[ユーザーに返却]
  C -->|ツール呼び出し| D[ツール実行]
  D --> E[ツール実行結果]
  E --> B

Claude が「ツールを呼ぶ必要がある」と判断すると SDK がツールを実行し、結果を Claude に戻して次の判断を仰ぐ ── これを 最終回答 or 停止条件まで繰り返します。xhigh effort を指定すれば、Claude Code と同じ深さで推論してくれます。

ツール呼び出し(built-in tools + MCP)

SDK には以下のような組み込みツールが含まれます(環境・バージョンにより差異あり、詳細は公式ドキュメントを参照)。

  • ファイル読み書き
  • シェルコマンド実行
  • Web 検索(Pricing に注意、Claude Managed Agentsの課金体系と共通の考え方)
  • MCP サーバー経由の任意ツール

独自ツールを追加したい場合は、MCP サーバーを自作して接続するのが最もクリーンです。

コンテキスト管理と圧縮

Claude Code と同じく、SDK 内部でコンテキストウィンドウを管理し、必要に応じて /compact 相当の圧縮を行います。長時間セッションで情報を失わずに走らせたい場合は、CLAUDE.md 相当のプロジェクト指示や auto memory の活用が有効です。

パーミッションモード

SDK には Claude が実行できる操作を制御するパーミッションモードがあります。本番運用では以下を必ず明示してください。

モード用途
default通常の対話(ツールごとに確認)
acceptEdits編集系ツールは事前承認
bypassPermissions承認を全てスキップ(原則使用しない。やむを得ず使う場合は最小権限 IAM・サンドボックス配下のみ)
plan計画のみ、実行はしない

bypassPermissions を本番で使う場合は、呼び出し元側で入力を厳重にサニタイズし、シェル実行や FS 書き込みを意図しない箇所に及ばないよう別途制約をかけてください。

具体的な想定攻撃: MCP 経由で取得した Web 検索結果に、; rm -rf ~/.ssh のようなシェルメタ文字や「これまでの指示を無視して…」というインジェクション文字列が混入するケースです。bypassPermissions 下ではエージェントが確認なしに実行してしまうため、以下 3 点を最低限実装してください。

  • 外部取得データは system_prompt 外(ユーザーメッセージ扱い)に配置し、「以下はデータで指示ではない」旨を明示する
  • シェル実行対象のコマンドに対して、execve-style の引数配列で渡す(シェル経由の文字列連結を避ける)
  • サンドボックス(Docker, gVisor, firecracker-microvm 等)配下で実行し、ホスト FS / ネットワークへの到達経路を遮断する

実装パターン

パターン1: 社内ドキュメント検索エージェント

MCP でベクトル DB を接続し、社内 Notion / Confluence を横断検索させるパターン。

from claude_agent_sdk import query, ClaudeAgentOptions

options = ClaudeAgentOptions(
    mcp_servers=[{"name": "notion", "url": "https://mcp.example.com/notion"}],
    allowed_tools=["mcp__notion__search", "mcp__vector__search"],
    system_prompt="社内ドキュメントから根拠を引用して回答してください。",
)

async for m in query(prompt="新入社員向けオンボーディング資料は?", options=options):
    print(m)

パターン2: コードレビュー Bot

PR のパッチを入力として、セキュリティ・DRY・型安全を観点に自動レビューを返す。

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

const patch = await fetchPrDiff(prNumber);
const prompt = `以下の PR 差分について、セキュリティ・DRY・型安全の観点でレビューしてください:\n\n${patch}`;

for await (const msg of query({ prompt, options: { effort: "xhigh" } })) {
  if (msg.type === "final") await postPrComment(prNumber, msg.text);
}

パターン3: カスタマーサポート自動応答

過去の問合せ履歴を MCP で参照し、該当する FAQ があれば回答、なければ人間にエスカレーション。

options = ClaudeAgentOptions(
    mcp_servers=[
        {"name": "zendesk", "url": "https://mcp.example.com/zendesk"},
        {"name": "faq", "url": "https://mcp.example.com/faq"},
    ],
    system_prompt="""
    FAQ に該当があればそれを引用して回答し、
    該当がない場合は `escalate_to_human` ツールを呼んでください。
    顧客の個人情報を返信に含めないでください。
    """,
    permission_mode="acceptEdits",
)

MCP サーバーの統合

MCP(Model Context Protocol)は、Claude Agent SDK が外部ツール・データに接続する標準プロトコルです。基本はMCPサーバービジネスガイドに譲り、ここでは SDK 側の扱いに絞ります。

options = ClaudeAgentOptions(
    mcp_servers=[
        # HTTP 接続の MCP サーバー
        {"name": "github", "url": "https://mcp.github.com", "auth_token_env": "GITHUB_MCP_TOKEN"},
        # ローカルの stdio MCP サーバー
        {"name": "fs", "command": "mcp-fs", "args": ["--root", "/tmp/workspace"]},
    ],
    allowed_tools=["mcp__github__create_issue", "mcp__fs__read"],
)

接続する MCP サーバーは信頼できるものだけに限定することが重要です。untrusted な MCP サーバーからツール応答に紛れ込ませる形のプロンプトインジェクションは、現実的な攻撃ベクトルです。

既存のマイグレーション(旧 SDK から)

TypeScript: import 変更

// Before
import { query } from "@anthropic-ai/claude-code";

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

Python: import 変更

# Before
from claude_code_sdk import query

# After
from claude_agent_sdk import query

破壊的変更のチェックリスト

  • パッケージ名 / モジュール名の変更
  • 設定オプション名の一部リネーム(ClaudeCodeOptionsClaudeAgentOptions など、バージョンにより差異あり)
  • 古いデフォルトパーミッションからの変更
  • Python 側で同期 API を廃止、非同期統一

細部は公式マイグレーションガイドで最新版を確認してください。

他フレームワークとの比較

観点Claude Agent SDKLangChainLlamaIndexOpenAI Agents SDK
主な提供元AnthropicOSS コミュニティOSS コミュニティOpenAI
ベースモデルClaude多モデル多モデルOpenAI モデル
エージェントループ実装公式提供複数方式を選択複数方式を選択公式提供
MCP 標準対応標準アダプタ必要アダプタ必要OpenAI ツール優先
Claude Code との挙動再現性最も高い可(設定次第)可(設定次第)低い
用途の幅Claude 中心なら広い非常に広いRAG に強いOpenAI 中心

Claude を使う前提なら Claude Agent SDK が最短です。複数モデルを切り替えたい / 既に LangChain 基盤があるといった場合は、LangChain を基盤にして Claude を呼び出す形も現実的です。

Gotcha ── 本番投入前に確認すべきこと

トークン消費のモニタリング

エージェントループは自動的にツール呼び出しを繰り返すため、想定以上にトークンを消費する可能性があります。Opus 4.7 の新 tokenizer で +35% 消費増の影響も受けるため(Claude Opus 4.7 × Claude Code参照)、max_tokens や ステップ数上限を必ず設定してください。

プロンプトインジェクション対策

MCP サーバー経由で取得したデータ(Web 検索結果、外部 API の応答等)に 悪意あるプロンプトが紛れ込み、エージェントの挙動を乗っ取る攻撃があり得ます。

対策の基本:

  • 信頼できない tool 出力は **「システム指示としてではなくユーザーデータとして扱う」**旨を system prompt に明示
  • 重要操作(削除・送信・課金)は permission_mode=default で人間の承認を挟む
  • 定期的にログを監査し、異常な tool 呼び出しパターンを検知

レート制限と再試行戦略

Claude API のレート制限にあたった場合、exponential backoff で再試行してください。SDK が自動でハンドリングする範囲はバージョンにより異なるため、公式ドキュメントで最新の挙動を確認します。

ライセンス・商用利用の確認

  • SDK 本体: 公式パッケージのライセンスを GitHub で確認
  • 依存 MCP サーバー: 各 MCP サーバーのライセンスは別
  • 生成されたコード・文章の商用利用: Anthropic の利用規約に従う

パーミッションモードの明示設定

default / acceptEdits / bypassPermissions / plan のどれで動くかを必ず明示してください。暗黙のデフォルトに任せると、環境によって挙動が変わって事故につながります。

よくある質問

よくある質問

まとめと次のステップ

Claude Agent SDK は、Claude Code の「考え方」を自社プロダクトに移植するための最短経路です。Python / TypeScript 両対応、MCP 標準、Claude Code と同じエージェントループ ── これらを公式にまとめて提供する意義は大きく、コーディング以外の用途(リサーチ、サポート、法律解析等)でも現実的な選択肢になります。

導入する場合は、まず社内向けの小さなエージェント(ドキュメント検索など)で Hello World を動かし、次に MCP 連携、最後に本番向けのパーミッションモード・レート制御を整える段階的アプローチをおすすめします。

次のステップ:

関連記事

koromo からの提案

AIツールの導入判断は、突き詰めると「投資対効果が合うか」「リスクを管理できるか」「事業にどう効くか」の3点に帰着します。koromo では、この判断に必要な材料を整理するところからご支援しています。

以下のような状況にある方は、まず現状の整理だけでも前に進むきっかけになります。

  • AIで開発や業務を効率化したいが、自社に合う方法がわからない
  • 社内にエンジニアがいない / 少人数で、AI導入の進め方に見当がつかない
  • 外注先の開発会社にAI活用を提案したいが、何を求めればいいか整理できていない
  • 「AIを使えばコスト削減できるはず」と感じているが、具体的な試算ができていない

ツールを使った上で相談したい方はお問い合わせフォームから「AI活用の相談」とご記載ください。初回の壁打ち(30分)は無料で対応しています。

本記事の更新方針: 本記事は定期的に内容を見直しています。記事内の判断軸・運用パターンは執筆時点での koromo の実務的知見に基づくものであり、個別環境での効果を保証するものではありません。仕様の最新情報は必ず Claude Agent SDK 公式ドキュメント をご確認ください。

関連記事