SDK
Integrieren Sie Claude Code programmgesteuert in Ihre Anwendungen mit dem SDK.
Das Claude Code SDK ermöglicht Entwicklern, Claude Code programmgesteuert in ihre Anwendungen zu integrieren. Es ermöglicht die Ausführung von Claude Code als Unterprozess und bietet eine Möglichkeit, KI-gestützte Coding-Assistenten und Tools zu erstellen, die die Fähigkeiten von Claude nutzen.
Das SDK ist für die Verwendung in der Kommandozeile, TypeScript und Python verfügbar.
Authentifizierung
Um das Claude Code SDK zu verwenden, empfehlen wir die Erstellung eines dedizierten API-Schlüssels:
- Erstellen Sie einen Anthropic API-Schlüssel in der Anthropic Console
- Setzen Sie dann die Umgebungsvariable
ANTHROPIC_API_KEY
. Wir empfehlen, diesen Schlüssel sicher zu speichern (z.B. mit einem Github Secret)
Grundlegende SDK-Nutzung
Das Claude Code SDK ermöglicht die Verwendung von Claude Code im nicht-interaktiven Modus aus Ihren Anwendungen heraus.
Kommandozeile
Hier sind einige grundlegende Beispiele für das Kommandozeilen-SDK:
TypeScript
Das TypeScript SDK ist im Haupt-Paket @anthropic-ai/claude-code
auf NPM enthalten:
Das TypeScript SDK akzeptiert alle Argumente, die vom Kommandozeilen-SDK unterstützt werden, sowie:
Argument | Beschreibung | Standard |
---|---|---|
abortController | Abort-Controller | new AbortController() |
cwd | Aktuelles Arbeitsverzeichnis | process.cwd() |
executable | Welche JavaScript-Laufzeit verwendet werden soll | node bei Ausführung mit Node.js, bun bei Ausführung mit Bun |
executableArgs | Argumente, die an die ausführbare Datei übergeben werden | [] |
pathToClaudeCodeExecutable | Pfad zur Claude Code ausführbaren Datei | Ausführbare Datei, die mit @anthropic-ai/claude-code geliefert wird |
Python
Das Python SDK ist als claude-code-sdk
auf PyPI verfügbar:
Voraussetzungen:
- Python 3.10+
- Node.js
- Claude Code CLI:
npm install -g @anthropic-ai/claude-code
Grundlegende Verwendung:
Das Python SDK akzeptiert alle Argumente, die vom Kommandozeilen-SDK über die Klasse ClaudeCodeOptions
unterstützt werden:
Erweiterte Nutzung
Die folgende Dokumentation verwendet das Kommandozeilen-SDK als Beispiel, kann aber auch mit den TypeScript- und Python-SDKs verwendet werden.
Mehrstufige Konversationen
Für mehrstufige Konversationen können Sie Konversationen fortsetzen oder von der letzten Sitzung aus weitermachen:
Benutzerdefinierte System-Prompts
Sie können benutzerdefinierte System-Prompts bereitstellen, um Claudes Verhalten zu steuern:
Sie können auch Anweisungen an den Standard-System-Prompt anhängen:
MCP-Konfiguration
Das Model Context Protocol (MCP) ermöglicht es Ihnen, Claude Code mit zusätzlichen Tools und Ressourcen von externen Servern zu erweitern. Mit dem Flag --mcp-config
können Sie MCP-Server laden, die spezialisierte Funktionen wie Datenbankzugriff, API-Integrationen oder benutzerdefinierte Tools bereitstellen.
Erstellen Sie eine JSON-Konfigurationsdatei mit Ihren MCP-Servern:
Dann verwenden Sie es mit Claude Code:
Bei der Verwendung von MCP-Tools müssen Sie diese explizit mit dem Flag --allowedTools
erlauben. MCP-Tool-Namen folgen dem Muster mcp__<serverName>__<toolName>
, wobei:
serverName
der Schlüssel aus Ihrer MCP-Konfigurationsdatei isttoolName
das spezifische Tool ist, das von diesem Server bereitgestellt wird
Diese Sicherheitsmaßnahme stellt sicher, dass MCP-Tools nur verwendet werden, wenn sie ausdrücklich erlaubt sind.
Wenn Sie nur den Servernamen angeben (d.h. mcp__<serverName>
), werden alle Tools von diesem Server erlaubt.
Glob-Muster (z.B. mcp__go*
) werden nicht unterstützt.
Benutzerdefiniertes Berechtigungsaufforderungs-Tool
Optional können Sie --permission-prompt-tool
verwenden, um ein MCP-Tool zu übergeben, das wir verwenden, um zu prüfen, ob der Benutzer dem Modell die Erlaubnis erteilt, ein bestimmtes Tool aufzurufen. Wenn das Modell ein Tool aufruft, geschieht Folgendes:
- Wir prüfen zuerst die Berechtigungseinstellungen: alle settings.json-Dateien sowie
--allowedTools
und--disallowedTools
, die an das SDK übergeben wurden; wenn eine dieser Einstellungen den Tool-Aufruf erlaubt oder verweigert, fahren wir mit dem Tool-Aufruf fort - Andernfalls rufen wir das MCP-Tool auf, das Sie in
--permission-prompt-tool
angegeben haben
Das MCP-Tool --permission-prompt-tool
erhält den Tool-Namen und die Eingabe und muss eine JSON-stringifizierte Nutzlast mit dem Ergebnis zurückgeben. Die Nutzlast muss eine der folgenden sein:
Eine TypeScript-MCP-Berechtigungsaufforderungs-Tool-Implementierung könnte beispielsweise so aussehen:
Um dieses Tool zu verwenden, fügen Sie Ihren MCP-Server hinzu (z.B. mit --mcp-config
) und rufen Sie dann das SDK wie folgt auf:
Nutzungshinweise:
- Verwenden Sie
updatedInput
, um dem Modell mitzuteilen, dass die Berechtigungsaufforderung seine Eingabe verändert hat; andernfalls setzen SieupdatedInput
auf die ursprüngliche Eingabe, wie im obigen Beispiel. Wenn das Tool beispielsweise dem Benutzer einen Datei-Bearbeitungs-Diff anzeigt und ihm erlaubt, den Diff manuell zu bearbeiten, sollte das Berechtigungsaufforderungs-Tool diese aktualisierte Bearbeitung zurückgeben. - Die Nutzlast muss JSON-stringifiziert sein
Verfügbare CLI-Optionen
Das SDK nutzt alle CLI-Optionen, die in Claude Code verfügbar sind. Hier sind die wichtigsten für die SDK-Nutzung:
Flag | Beschreibung | Beispiel |
---|---|---|
--print , -p | Im nicht-interaktiven Modus ausführen | claude -p "query" |
--output-format | Ausgabeformat angeben (text , json , stream-json ) | claude -p --output-format json |
--resume , -r | Eine Konversation anhand der Sitzungs-ID fortsetzen | claude --resume abc123 |
--continue , -c | Die letzte Konversation fortsetzen | claude --continue |
--verbose | Ausführliche Protokollierung aktivieren | claude --verbose |
--max-turns | Agentische Durchgänge im nicht-interaktiven Modus begrenzen | claude --max-turns 3 |
--system-prompt | System-Prompt überschreiben (nur mit --print ) | claude --system-prompt "Custom instruction" |
--append-system-prompt | An System-Prompt anhängen (nur mit --print ) | claude --append-system-prompt "Custom instruction" |
--allowedTools | Leerzeichen-getrennte Liste erlaubter Tools, oder String mit Komma-getrennter Liste erlaubter Tools | claude --allowedTools mcp__slack mcp__filesystem claude --allowedTools "Bash(npm install),mcp__filesystem" |
--disallowedTools | Leerzeichen-getrennte Liste verweigerte Tools, oder String mit Komma-getrennter Liste verweigerter Tools | claude --disallowedTools mcp__splunk mcp__github claude --disallowedTools "Bash(git commit),mcp__github" |
--mcp-config | MCP-Server aus einer JSON-Datei laden | claude --mcp-config servers.json |
--permission-prompt-tool | MCP-Tool für die Behandlung von Berechtigungsaufforderungen (nur mit --print ) | claude --permission-prompt-tool mcp__auth__prompt |
Eine vollständige Liste der CLI-Optionen und Funktionen finden Sie in der CLI-Nutzungsdokumentation.
Ausgabeformate
Das SDK unterstützt mehrere Ausgabeformate:
Textausgabe (Standard)
Gibt nur den Antworttext zurück:
JSON-Ausgabe
Gibt strukturierte Daten einschließlich Metadaten zurück:
Antwortformat:
Streaming JSON-Ausgabe
Streamt jede Nachricht, sobald sie empfangen wird:
Jede Konversation beginnt mit einer initialen init
-Systemnachricht, gefolgt von einer Liste von Benutzer- und Assistentennachrichten, gefolgt von einer abschließenden result
-Systemnachricht mit Statistiken. Jede Nachricht wird als separates JSON-Objekt ausgegeben.
Nachrichtenschema
Nachrichten, die von der JSON-API zurückgegeben werden, sind streng typisiert gemäß dem folgenden Schema:
Wir werden diese Typen bald in einem JSONSchema-kompatiblen Format veröffentlichen. Wir verwenden semantische Versionierung für das Haupt-Claude-Code-Paket, um Breaking Changes in diesem Format zu kommunizieren.
Die Typen Message
und MessageParam
sind in Anthropic SDKs verfügbar. Siehe zum Beispiel die Anthropic TypeScript und Python SDKs.
Beispiele
Einfache Skriptintegration
Dateien mit Claude verarbeiten
Sitzungsverwaltung
Best Practices
-
Verwenden Sie das JSON-Ausgabeformat für die programmatische Analyse von Antworten:
-
Behandeln Sie Fehler elegant - überprüfen Sie Exit-Codes und stderr:
-
Verwenden Sie Sitzungsverwaltung für die Aufrechterhaltung des Kontexts in mehrstufigen Konversationen
-
Berücksichtigen Sie Timeouts für lang laufende Operationen:
-
Respektieren Sie Rate-Limits bei mehreren Anfragen, indem Sie Verzögerungen zwischen den Aufrufen einfügen
Reale Anwendungen
Das Claude Code SDK ermöglicht leistungsstarke Integrationen in Ihren Entwicklungsworkflow. Ein bemerkenswertes Beispiel sind die Claude Code GitHub Actions, die das SDK verwenden, um automatisierte Code-Reviews, PR-Erstellung und Issue-Triage-Funktionen direkt in Ihrem GitHub-Workflow bereitzustellen.
Verwandte Ressourcen
- CLI-Nutzung und -Steuerung - Vollständige CLI-Dokumentation
- GitHub Actions-Integration - Automatisieren Sie Ihren GitHub-Workflow mit Claude
- Tutorials - Schritt-für-Schritt-Anleitungen für häufige Anwendungsfälle