Установка

npm install @anthropic-ai/claude-agent-sdk

Функции

query()

Основная функция для взаимодействия с Claude Code. Создает асинхронный генератор, который передает сообщения по мере их поступления.
function query({
  prompt,
  options
}: {
  prompt: string | AsyncIterable<SDKUserMessage>;
  options?: Options;
}): Query

Параметры

ПараметрТипОписание
promptstring | AsyncIterable<SDKUserMessage>Входная подсказка в виде строки или асинхронного итерируемого объекта для режима потоковой передачи
optionsOptionsНеобязательный объект конфигурации (см. тип Options ниже)

Возвращаемое значение

Возвращает объект Query, который расширяет AsyncGenerator<SDKMessage, void> дополнительными методами.

tool()

Создает определение инструмента MCP, безопасного по типам, для использования с серверами MCP SDK.
function tool<Schema extends ZodRawShape>(
  name: string,
  description: string,
  inputSchema: Schema,
  handler: (args: z.infer<ZodObject<Schema>>, extra: unknown) => Promise<CallToolResult>
): SdkMcpToolDefinition<Schema>

Параметры

ПараметрТипОписание
namestringИмя инструмента
descriptionstringОписание того, что делает инструмент
inputSchemaSchema extends ZodRawShapeСхема Zod, определяющая входные параметры инструмента
handler(args, extra) => Promise<CallToolResult>Асинхронная функция, которая выполняет логику инструмента

createSdkMcpServer()

Создает экземпляр сервера MCP, который работает в том же процессе, что и ваше приложение.
function createSdkMcpServer(options: {
  name: string;
  version?: string;
  tools?: Array<SdkMcpToolDefinition<any>>;
}): McpSdkServerConfigWithInstance

Параметры

ПараметрТипОписание
options.namestringИмя сервера MCP
options.versionstringНеобязательная строка версии
options.toolsArray<SdkMcpToolDefinition>Массив определений инструментов, созданных с помощью tool()

Типы

Options

Объект конфигурации для функции query().
СвойствоТипПо умолчаниюОписание
abortControllerAbortControllernew AbortController()Контроллер для отмены операций
additionalDirectoriesstring[][]Дополнительные каталоги, к которым может получить доступ Claude
agentsRecord<string, [AgentDefinition](#agentdefinition)>undefinedПрограммное определение подагентов
allowedToolsstring[]Все инструментыСписок разрешенных имен инструментов
canUseToolCanUseToolundefinedПользовательская функция разрешения для использования инструментов
continuebooleanfalseПродолжить самый последний разговор
cwdstringprocess.cwd()Текущий рабочий каталог
disallowedToolsstring[][]Список запрещенных имен инструментов
envDict<string>process.envПеременные окружения
executable'bun' | 'deno' | 'node'АвтоопределениеСреда выполнения JavaScript для использования
executableArgsstring[][]Аргументы для передачи исполняемому файлу
extraArgsRecord<string, string | null>{}Дополнительные аргументы
fallbackModelstringundefinedМодель для использования, если основная не работает
forkSessionbooleanfalseПри возобновлении с помощью resume разветвить на новый ID сеанса вместо продолжения исходного сеанса
hooksPartial<Record<HookEvent, HookCallbackMatcher[]>>{}Обратные вызовы хуков для событий
includePartialMessagesbooleanfalseВключить события частичных сообщений
maxThinkingTokensnumberundefinedМаксимальное количество токенов для процесса мышления
maxTurnsnumberundefinedМаксимальное количество ходов разговора
mcpServersRecord<string, [McpServerConfig](#mcpserverconfig)>{}Конфигурации серверов MCP
modelstringПо умолчанию из CLIМодель Claude для использования
pathToClaudeCodeExecutablestringАвтоопределениеПуть к исполняемому файлу Claude Code
permissionModePermissionMode'default'Режим разрешений для сеанса
permissionPromptToolNamestringundefinedИмя инструмента MCP для запросов разрешений
pluginsSdkPluginConfig[][]Загрузить пользовательские плагины из локальных путей. Подробнее см. в разделе Плагины
resumestringundefinedID сеанса для возобновления
settingSourcesSettingSource[][] (без параметров)Контролировать, какие параметры файловой системы загружать. При пропуске параметры не загружаются. Примечание: Должен включать 'project' для загрузки файлов CLAUDE.md
stderr(data: string) => voidundefinedОбратный вызов для вывода stderr
strictMcpConfigbooleanfalseПрименять строгую проверку MCP
systemPromptstring | { type: 'preset'; preset: 'claude_code'; append?: string }undefined (пустая подсказка)Конфигурация системной подсказки. Передайте строку для пользовательской подсказки или { type: 'preset', preset: 'claude_code' } для использования системной подсказки Claude Code. При использовании формы объекта preset добавьте append для расширения системной подсказки дополнительными инструкциями

Query

Интерфейс, возвращаемый функцией query().
interface Query extends AsyncGenerator<SDKMessage, void> {
  interrupt(): Promise<void>;
  setPermissionMode(mode: PermissionMode): Promise<void>;
}

Методы

МетодОписание
interrupt()Прерывает запрос (доступно только в режиме потоковой передачи входных данных)
setPermissionMode()Изменяет режим разрешений (доступно только в режиме потоковой передачи входных данных)

AgentDefinition

Конфигурация для подагента, определенного программно.
type AgentDefinition = {
  description: string;
  tools?: string[];
  prompt: string;
  model?: 'sonnet' | 'opus' | 'haiku' | 'inherit';
}
ПолеОбязательноОписание
descriptionДаОписание на естественном языке того, когда использовать этого агента
toolsНетМассив разрешенных имен инструментов. При пропуске наследует все инструменты
promptДаСистемная подсказка агента
modelНетПереопределение модели для этого агента. При пропуске использует основную модель

SettingSource

Контролирует, какие источники конфигурации на основе файловой системы загружает SDK.
type SettingSource = 'user' | 'project' | 'local';
ЗначениеОписаниеМестоположение
'user'Глобальные параметры пользователя~/.claude/settings.json
'project'Общие параметры проекта (контролируемые версией).claude/settings.json
'local'Локальные параметры проекта (игнорируемые git).claude/settings.local.json

Поведение по умолчанию

Когда settingSources опущен или undefined, SDK не загружает никакие параметры файловой системы. Это обеспечивает изоляцию для приложений SDK.

Почему использовать settingSources?

Загрузить все параметры файловой системы (поведение прежних версий):
// Загрузить все параметры, как это делал SDK v0.0.x
const result = query({
  prompt: "Analyze this code",
  options: {
    settingSources: ['user', 'project', 'local']  // Загрузить все параметры
  }
});
Загрузить только определенные источники параметров:
// Загрузить только параметры проекта, игнорировать пользовательские и локальные
const result = query({
  prompt: "Run CI checks",
  options: {
    settingSources: ['project']  // Только .claude/settings.json
  }
});
Тестирование и окружения CI:
// Обеспечить согласованное поведение в CI, исключив локальные параметры
const result = query({
  prompt: "Run tests",
  options: {
    settingSources: ['project'],  // Только параметры, общие для команды
    permissionMode: 'bypassPermissions'
  }
});
Приложения только для SDK:
// Определить все программно (поведение по умолчанию)
// Нет зависимостей файловой системы - settingSources по умолчанию []
const result = query({
  prompt: "Review this PR",
  options: {
    // settingSources: [] по умолчанию, не нужно указывать
    agents: { /* ... */ },
    mcpServers: { /* ... */ },
    allowedTools: ['Read', 'Grep', 'Glob']
  }
});
Загрузка инструкций проекта CLAUDE.md:
// Загрузить параметры проекта для включения файлов CLAUDE.md
const result = query({
  prompt: "Add a new feature following project conventions",
  options: {
    systemPrompt: {
      type: 'preset',
      preset: 'claude_code'  // Требуется для использования CLAUDE.md
    },
    settingSources: ['project'],  // Загружает CLAUDE.md из каталога проекта
    allowedTools: ['Read', 'Write', 'Edit']
  }
});

Приоритет параметров

Когда загружаются несколько источников, параметры объединяются с этим приоритетом (от высшего к низшему):
  1. Локальные параметры (.claude/settings.local.json)
  2. Параметры проекта (.claude/settings.json)
  3. Параметры пользователя (~/.claude/settings.json)
Программные опции (такие как agents, allowedTools) всегда переопределяют параметры файловой системы.

PermissionMode

type PermissionMode =
  | 'default'           // Стандартное поведение разрешений
  | 'acceptEdits'       // Автоматически принимать редактирование файлов
  | 'bypassPermissions' // Обойти все проверки разрешений
  | 'plan'              // Режим планирования - без выполнения

CanUseTool

Тип пользовательской функции разрешения для управления использованием инструментов.
type CanUseTool = (
  toolName: string,
  input: ToolInput,
  options: {
    signal: AbortSignal;
    suggestions?: PermissionUpdate[];
  }
) => Promise<PermissionResult>;

PermissionResult

Результат проверки разрешения.
type PermissionResult = 
  | {
      behavior: 'allow';
      updatedInput: ToolInput;
      updatedPermissions?: PermissionUpdate[];
    }
  | {
      behavior: 'deny';
      message: string;
      interrupt?: boolean;
    }

McpServerConfig

Конфигурация для серверов MCP.
type McpServerConfig = 
  | McpStdioServerConfig
  | McpSSEServerConfig
  | McpHttpServerConfig
  | McpSdkServerConfigWithInstance;

McpStdioServerConfig

type McpStdioServerConfig = {
  type?: 'stdio';
  command: string;
  args?: string[];
  env?: Record<string, string>;
}

McpSSEServerConfig

type McpSSEServerConfig = {
  type: 'sse';
  url: string;
  headers?: Record<string, string>;
}

McpHttpServerConfig

type McpHttpServerConfig = {
  type: 'http';
  url: string;
  headers?: Record<string, string>;
}

McpSdkServerConfigWithInstance

type McpSdkServerConfigWithInstance = {
  type: 'sdk';
  name: string;
  instance: McpServer;
}

SdkPluginConfig

Конфигурация для загрузки плагинов в SDK.
type SdkPluginConfig = {
  type: 'local';
  path: string;
}
ПолеТипОписание
type'local'Должно быть 'local' (в настоящее время поддерживаются только локальные плагины)
pathstringАбсолютный или относительный путь к каталогу плагина
Пример:
plugins: [
  { type: 'local', path: './my-plugin' },
  { type: 'local', path: '/absolute/path/to/plugin' }
]
Полную информацию о создании и использовании плагинов см. в разделе Плагины.

Типы сообщений

SDKMessage

Тип объединения всех возможных сообщений, возвращаемых запросом.
type SDKMessage = 
  | SDKAssistantMessage
  | SDKUserMessage
  | SDKUserMessageReplay
  | SDKResultMessage
  | SDKSystemMessage
  | SDKPartialAssistantMessage
  | SDKCompactBoundaryMessage;

SDKAssistantMessage

Сообщение ответа помощника.
type SDKAssistantMessage = {
  type: 'assistant';
  uuid: UUID;
  session_id: string;
  message: APIAssistantMessage; // Из SDK Anthropic
  parent_tool_use_id: string | null;
}

SDKUserMessage

Сообщение пользовательского ввода.
type SDKUserMessage = {
  type: 'user';
  uuid?: UUID;
  session_id: string;
  message: APIUserMessage; // Из SDK Anthropic
  parent_tool_use_id: string | null;
}

SDKUserMessageReplay

Воспроизведенное пользовательское сообщение с обязательным UUID.
type SDKUserMessageReplay = {
  type: 'user';
  uuid: UUID;
  session_id: string;
  message: APIUserMessage;
  parent_tool_use_id: string | null;
}

SDKResultMessage

Финальное сообщение результата.
type SDKResultMessage = 
  | {
      type: 'result';
      subtype: 'success';
      uuid: UUID;
      session_id: string;
      duration_ms: number;
      duration_api_ms: number;
      is_error: boolean;
      num_turns: number;
      result: string;
      total_cost_usd: number;
      usage: NonNullableUsage;
      permission_denials: SDKPermissionDenial[];
    }
  | {
      type: 'result';
      subtype: 'error_max_turns' | 'error_during_execution';
      uuid: UUID;
      session_id: string;
      duration_ms: number;
      duration_api_ms: number;
      is_error: boolean;
      num_turns: number;
      total_cost_usd: number;
      usage: NonNullableUsage;
      permission_denials: SDKPermissionDenial[];
    }

SDKSystemMessage

Сообщение инициализации системы.
type SDKSystemMessage = {
  type: 'system';
  subtype: 'init';
  uuid: UUID;
  session_id: string;
  apiKeySource: ApiKeySource;
  cwd: string;
  tools: string[];
  mcp_servers: {
    name: string;
    status: string;
  }[];
  model: string;
  permissionMode: PermissionMode;
  slash_commands: string[];
  output_style: string;
}

SDKPartialAssistantMessage

Потоковое частичное сообщение (только когда includePartialMessages имеет значение true).
type SDKPartialAssistantMessage = {
  type: 'stream_event';
  event: RawMessageStreamEvent; // Из SDK Anthropic
  parent_tool_use_id: string | null;
  uuid: UUID;
  session_id: string;
}

SDKCompactBoundaryMessage

Сообщение, указывающее на границу компактирования разговора.
type SDKCompactBoundaryMessage = {
  type: 'system';
  subtype: 'compact_boundary';
  uuid: UUID;
  session_id: string;
  compact_metadata: {
    trigger: 'manual' | 'auto';
    pre_tokens: number;
  };
}

SDKPermissionDenial

Информация об отклоненном использовании инструмента.
type SDKPermissionDenial = {
  tool_name: string;
  tool_use_id: string;
  tool_input: ToolInput;
}

Типы хуков

HookEvent

Доступные события хуков.
type HookEvent = 
  | 'PreToolUse'
  | 'PostToolUse'
  | 'Notification'
  | 'UserPromptSubmit'
  | 'SessionStart'
  | 'SessionEnd'
  | 'Stop'
  | 'SubagentStop'
  | 'PreCompact';

HookCallback

Тип функции обратного вызова хука.
type HookCallback = (
  input: HookInput, // Объединение всех типов входных данных хука
  toolUseID: string | undefined,
  options: { signal: AbortSignal }
) => Promise<HookJSONOutput>;

HookCallbackMatcher

Конфигурация хука с необязательным сопоставителем.
interface HookCallbackMatcher {
  matcher?: string;
  hooks: HookCallback[];
}

HookInput

Тип объединения всех типов входных данных хука.
type HookInput = 
  | PreToolUseHookInput
  | PostToolUseHookInput
  | NotificationHookInput
  | UserPromptSubmitHookInput
  | SessionStartHookInput
  | SessionEndHookInput
  | StopHookInput
  | SubagentStopHookInput
  | PreCompactHookInput;

BaseHookInput

Базовый интерфейс, который расширяют все типы входных данных хука.
type BaseHookInput = {
  session_id: string;
  transcript_path: string;
  cwd: string;
  permission_mode?: string;
}

PreToolUseHookInput

type PreToolUseHookInput = BaseHookInput & {
  hook_event_name: 'PreToolUse';
  tool_name: string;
  tool_input: ToolInput;
}

PostToolUseHookInput

type PostToolUseHookInput = BaseHookInput & {
  hook_event_name: 'PostToolUse';
  tool_name: string;
  tool_input: ToolInput;
  tool_response: ToolOutput;
}

NotificationHookInput

type NotificationHookInput = BaseHookInput & {
  hook_event_name: 'Notification';
  message: string;
  title?: string;
}

UserPromptSubmitHookInput

type UserPromptSubmitHookInput = BaseHookInput & {
  hook_event_name: 'UserPromptSubmit';
  prompt: string;
}

SessionStartHookInput

type SessionStartHookInput = BaseHookInput & {
  hook_event_name: 'SessionStart';
  source: 'startup' | 'resume' | 'clear' | 'compact';
}

SessionEndHookInput

type SessionEndHookInput = BaseHookInput & {
  hook_event_name: 'SessionEnd';
  reason: 'clear' | 'logout' | 'prompt_input_exit' | 'other';
}

StopHookInput

type StopHookInput = BaseHookInput & {
  hook_event_name: 'Stop';
  stop_hook_active: boolean;
}

SubagentStopHookInput

type SubagentStopHookInput = BaseHookInput & {
  hook_event_name: 'SubagentStop';
  stop_hook_active: boolean;
}

PreCompactHookInput

type PreCompactHookInput = BaseHookInput & {
  hook_event_name: 'PreCompact';
  trigger: 'manual' | 'auto';
  custom_instructions: string | null;
}

HookJSONOutput

Возвращаемое значение хука.
type HookJSONOutput = AsyncHookJSONOutput | SyncHookJSONOutput;

AsyncHookJSONOutput

type AsyncHookJSONOutput = {
  async: true;
  asyncTimeout?: number;
}

SyncHookJSONOutput

type SyncHookJSONOutput = {
  continue?: boolean;
  suppressOutput?: boolean;
  stopReason?: string;
  decision?: 'approve' | 'block';
  systemMessage?: string;
  reason?: string;
  hookSpecificOutput?:
    | {
        hookEventName: 'PreToolUse';
        permissionDecision?: 'allow' | 'deny' | 'ask';
        permissionDecisionReason?: string;
      }
    | {
        hookEventName: 'UserPromptSubmit';
        additionalContext?: string;
      }
    | {
        hookEventName: 'SessionStart';
        additionalContext?: string;
      }
    | {
        hookEventName: 'PostToolUse';
        additionalContext?: string;
      };
}

Типы входных данных инструментов

Документация схем входных данных для всех встроенных инструментов Claude Code. Эти типы экспортируются из @anthropic-ai/claude-agent-sdk и могут использоваться для безопасного по типам взаимодействия с инструментами.

ToolInput

Примечание: Это тип только для документации для ясности. Он представляет объединение всех типов входных данных инструментов.
type ToolInput = 
  | AgentInput
  | BashInput
  | BashOutputInput
  | FileEditInput
  | FileReadInput
  | FileWriteInput
  | GlobInput
  | GrepInput
  | KillShellInput
  | NotebookEditInput
  | WebFetchInput
  | WebSearchInput
  | TodoWriteInput
  | ExitPlanModeInput
  | ListMcpResourcesInput
  | ReadMcpResourceInput;

Task

Имя инструмента: Task
interface AgentInput {
  /**
   * Краткое описание задачи (3-5 слов)
   */
  description: string;
  /**
   * Задача для выполнения агентом
   */
  prompt: string;
  /**
   * Тип специализированного агента для использования для этой задачи
   */
  subagent_type: string;
}
Запускает нового агента для автономного выполнения сложных многошаговых задач.

Bash

Имя инструмента: Bash
interface BashInput {
  /**
   * Команда для выполнения
   */
  command: string;
  /**
   * Необязательный тайм-аут в миллисекундах (максимум 600000)
   */
  timeout?: number;
  /**
   * Четкое, краткое описание того, что делает эта команда, в 5-10 словах
   */
  description?: string;
  /**
   * Установите значение true для выполнения этой команды в фоновом режиме
   */
  run_in_background?: boolean;
}
Выполняет команды bash в постоянном сеансе оболочки с необязательным тайм-аутом и выполнением в фоновом режиме.

BashOutput

Имя инструмента: BashOutput
interface BashOutputInput {
  /**
   * ID фоновой оболочки для получения выходных данных
   */
  bash_id: string;
  /**
   * Необязательное регулярное выражение для фильтрации строк вывода
   */
  filter?: string;
}
Получает выходные данные из работающей или завершенной фоновой оболочки bash.

Edit

Имя инструмента: Edit
interface FileEditInput {
  /**
   * Абсолютный путь к файлу для изменения
   */
  file_path: string;
  /**
   * Текст для замены
   */
  old_string: string;
  /**
   * Текст для замены (должен отличаться от old_string)
   */
  new_string: string;
  /**
   * Заменить все вхождения old_string (по умолчанию false)
   */
  replace_all?: boolean;
}
Выполняет точные замены строк в файлах.

Read

Имя инструмента: Read
interface FileReadInput {
  /**
   * Абсолютный путь к файлу для чтения
   */
  file_path: string;
  /**
   * Номер строки для начала чтения
   */
  offset?: number;
  /**
   * Количество строк для чтения
   */
  limit?: number;
}
Читает файлы из локальной файловой системы, включая текст, изображения, PDF и записные книжки Jupyter.

Write

Имя инструмента: Write
interface FileWriteInput {
  /**
   * Абсолютный путь к файлу для записи
   */
  file_path: string;
  /**
   * Содержимое для записи в файл
   */
  content: string;
}
Записывает файл в локальную файловую систему, перезаписывая, если он существует.

Glob

Имя инструмента: Glob
interface GlobInput {
  /**
   * Шаблон glob для сопоставления файлов
   */
  pattern: string;
  /**
   * Каталог для поиска (по умолчанию cwd)
   */
  path?: string;
}
Быстрое сопоставление шаблонов файлов, работающее с кодовой базой любого размера.

Grep

Имя инструмента: Grep
interface GrepInput {
  /**
   * Шаблон регулярного выражения для поиска
   */
  pattern: string;
  /**
   * Файл или каталог для поиска (по умолчанию cwd)
   */
  path?: string;
  /**
   * Шаблон glob для фильтрации файлов (например, "*.js")
   */
  glob?: string;
  /**
   * Тип файла для поиска (например, "js", "py", "rust")
   */
  type?: string;
  /**
   * Режим вывода: "content", "files_with_matches" или "count"
   */
  output_mode?: 'content' | 'files_with_matches' | 'count';
  /**
   * Поиск без учета регистра
   */
  '-i'?: boolean;
  /**
   * Показать номера строк (для режима content)
   */
  '-n'?: boolean;
  /**
   * Строки для отображения перед каждым совпадением
   */
  '-B'?: number;
  /**
   * Строки для отображения после каждого совпадения
   */
  '-A'?: number;
  /**
   * Строки для отображения перед и после каждого совпадения
   */
  '-C'?: number;
  /**
   * Ограничить вывод первыми N строками/записями
   */
  head_limit?: number;
  /**
   * Включить многострочный режим
   */
  multiline?: boolean;
}
Мощный инструмент поиска, построенный на ripgrep с поддержкой регулярных выражений.

KillBash

Имя инструмента: KillBash
interface KillShellInput {
  /**
   * ID фоновой оболочки для завершения
   */
  shell_id: string;
}
Завершает работающую фоновую оболочку bash по ее ID.

NotebookEdit

Имя инструмента: NotebookEdit
interface NotebookEditInput {
  /**
   * Абсолютный путь к файлу записной книжки Jupyter
   */
  notebook_path: string;
  /**
   * ID ячейки для редактирования
   */
  cell_id?: string;
  /**
   * Новый исходный код для ячейки
   */
  new_source: string;
  /**
   * Тип ячейки (code или markdown)
   */
  cell_type?: 'code' | 'markdown';
  /**
   * Тип редактирования (replace, insert, delete)
   */
  edit_mode?: 'replace' | 'insert' | 'delete';
}
Редактирует ячейки в файлах записной книжки Jupyter.

WebFetch

Имя инструмента: WebFetch
interface WebFetchInput {
  /**
   * URL для получения содержимого
   */
  url: string;
  /**
   * Подсказка для запуска на полученном содержимом
   */
  prompt: string;
}
Получает содержимое с URL и обрабатывает его с помощью модели AI.

WebSearch

Имя инструмента: WebSearch
interface WebSearchInput {
  /**
   * Поисковый запрос для использования
   */
  query: string;
  /**
   * Включить только результаты с этих доменов
   */
  allowed_domains?: string[];
  /**
   * Никогда не включать результаты с этих доменов
   */
  blocked_domains?: string[];
}
Ищет в Интернете и возвращает отформатированные результаты.

TodoWrite

Имя инструмента: TodoWrite
interface TodoWriteInput {
  /**
   * Обновленный список задач
   */
  todos: Array<{
    /**
     * Описание задачи
     */
    content: string;
    /**
     * Статус задачи
     */
    status: 'pending' | 'in_progress' | 'completed';
    /**
     * Активная форма описания задачи
     */
    activeForm: string;
  }>;
}
Создает и управляет структурированным списком задач для отслеживания прогресса.

ExitPlanMode

Имя инструмента: ExitPlanMode
interface ExitPlanModeInput {
  /**
   * План для запуска пользователем на утверждение
   */
  plan: string;
}
Выходит из режима планирования и предлагает пользователю одобрить план.

ListMcpResources

Имя инструмента: ListMcpResources
interface ListMcpResourcesInput {
  /**
   * Необязательное имя сервера для фильтрации ресурсов
   */
  server?: string;
}
Перечисляет доступные ресурсы MCP с подключенных серверов.

ReadMcpResource

Имя инструмента: ReadMcpResource
interface ReadMcpResourceInput {
  /**
   * Имя сервера MCP
   */
  server: string;
  /**
   * URI ресурса для чтения
   */
  uri: string;
}
Читает определенный ресурс MCP с сервера.

Типы выходных данных инструментов

Документация схем выходных данных для всех встроенных инструментов Claude Code. Эти типы представляют фактические данные ответа, возвращаемые каждым инструментом.

ToolOutput

Примечание: Это тип только для документации для ясности. Он представляет объединение всех типов выходных данных инструментов.
type ToolOutput = 
  | TaskOutput
  | BashOutput
  | BashOutputToolOutput
  | EditOutput
  | ReadOutput
  | WriteOutput
  | GlobOutput
  | GrepOutput
  | KillBashOutput
  | NotebookEditOutput
  | WebFetchOutput
  | WebSearchOutput
  | TodoWriteOutput
  | ExitPlanModeOutput
  | ListMcpResourcesOutput
  | ReadMcpResourceOutput;

Task

Имя инструмента: Task
interface TaskOutput {
  /**
   * Финальное сообщение результата от подагента
   */
  result: string;
  /**
   * Статистика использования токенов
   */
  usage?: {
    input_tokens: number;
    output_tokens: number;
    cache_creation_input_tokens?: number;
    cache_read_input_tokens?: number;
  };
  /**
   * Общая стоимость в USD
   */
  total_cost_usd?: number;
  /**
   * Длительность выполнения в миллисекундах
   */
  duration_ms?: number;
}
Возвращает финальный результат от подагента после завершения делегированной задачи.

Bash

Имя инструмента: Bash
interface BashOutput {
  /**
   * Объединенный вывод stdout и stderr
   */
  output: string;
  /**
   * Код выхода команды
   */
  exitCode: number;
  /**
   * Была ли команда убита из-за тайм-аута
   */
  killed?: boolean;
  /**
   * ID оболочки для фоновых процессов
   */
  shellId?: string;
}
Возвращает вывод команды со статусом выхода. Фоновые команды возвращаются немедленно с shellId.

BashOutput

Имя инструмента: BashOutput
interface BashOutputToolOutput {
  /**
   * Новый вывод с момента последней проверки
   */
  output: string;
  /**
   * Текущий статус оболочки
   */
  status: 'running' | 'completed' | 'failed';
  /**
   * Код выхода (при завершении)
   */
  exitCode?: number;
}
Возвращает дополнительный вывод из фоновых оболочек.

Edit

Имя инструмента: Edit
interface EditOutput {
  /**
   * Сообщение подтверждения
   */
  message: string;
  /**
   * Количество произведенных замен
   */
  replacements: number;
  /**
   * Путь к отредактированному файлу
   */
  file_path: string;
}
Возвращает подтверждение успешного редактирования с количеством замен.

Read

Имя инструмента: Read
type ReadOutput = 
  | TextFileOutput
  | ImageFileOutput
  | PDFFileOutput
  | NotebookFileOutput;

interface TextFileOutput {
  /**
   * Содержимое файла с номерами строк
   */
  content: string;
  /**
   * Общее количество строк в файле
   */
  total_lines: number;
  /**
   * Возвращенные строки
   */
  lines_returned: number;
}

interface ImageFileOutput {
  /**
   * Данные изображения в кодировке Base64
   */
  image: string;
  /**
   * MIME-тип изображения
   */
  mime_type: string;
  /**
   * Размер файла в байтах
   */
  file_size: number;
}

interface PDFFileOutput {
  /**
   * Массив содержимого страниц
   */
  pages: Array<{
    page_number: number;
    text?: string;
    images?: Array<{
      image: string;
      mime_type: string;
    }>;
  }>;
  /**
   * Общее количество страниц
   */
  total_pages: number;
}

interface NotebookFileOutput {
  /**
   * Ячейки записной книжки Jupyter
   */
  cells: Array<{
    cell_type: 'code' | 'markdown';
    source: string;
    outputs?: any[];
    execution_count?: number;
  }>;
  /**
   * Метаданные записной книжки
   */
  metadata?: Record<string, any>;
}
Возвращает содержимое файла в формате, соответствующем типу файла.

Write

Имя инструмента: Write
interface WriteOutput {
  /**
   * Сообщение об успехе
   */
  message: string;
  /**
   * Количество записанных байтов
   */
  bytes_written: number;
  /**
   * Путь к записанному файлу
   */
  file_path: string;
}
Возвращает подтверждение после успешной записи файла.

Glob

Имя инструмента: Glob
interface GlobOutput {
  /**
   * Массив совпадающих путей файлов
   */
  matches: string[];
  /**
   * Количество найденных совпадений
   */
  count: number;
  /**
   * Использованный каталог поиска
   */
  search_path: string;
}
Возвращает пути файлов, соответствующие шаблону glob, отсортированные по времени изменения.

Grep

Имя инструмента: Grep
type GrepOutput = 
  | GrepContentOutput
  | GrepFilesOutput
  | GrepCountOutput;

interface GrepContentOutput {
  /**
   * Совпадающие строки с контекстом
   */
  matches: Array<{
    file: string;
    line_number?: number;
    line: string;
    before_context?: string[];
    after_context?: string[];
  }>;
  /**
   * Общее количество совпадений
   */
  total_matches: number;
}

interface GrepFilesOutput {
  /**
   * Файлы, содержащие совпадения
   */
  files: string[];
  /**
   * Количество файлов с совпадениями
   */
  count: number;
}

interface GrepCountOutput {
  /**
   * Количество совпадений на файл
   */
  counts: Array<{
    file: string;
    count: number;
  }>;
  /**
   * Общее количество совпадений во всех файлах
   */
  total: number;
}
Возвращает результаты поиска в формате, указанном в output_mode.

KillBash

Имя инструмента: KillBash
interface KillBashOutput {
  /**
   * Сообщение об успехе
   */
  message: string;
  /**
   * ID завершенной оболочки
   */
  shell_id: string;
}
Возвращает подтверждение после завершения фоновой оболочки.

NotebookEdit

Имя инструмента: NotebookEdit
interface NotebookEditOutput {
  /**
   * Сообщение об успехе
   */
  message: string;
  /**
   * Тип выполненного редактирования
   */
  edit_type: 'replaced' | 'inserted' | 'deleted';
  /**
   * ID затронутой ячейки
   */
  cell_id?: string;
  /**
   * Общее количество ячеек в записной книжке после редактирования
   */
  total_cells: number;
}
Возвращает подтверждение после изменения записной книжки Jupyter.

WebFetch

Имя инструмента: WebFetch
interface WebFetchOutput {
  /**
   * Ответ модели AI на подсказку
   */
  response: string;
  /**
   * URL, который был получен
   */
  url: string;
  /**
   * Финальный URL после перенаправлений
   */
  final_url?: string;
  /**
   * Код статуса HTTP
   */
  status_code?: number;
}
Возвращает анализ модели AI полученного веб-содержимого.

WebSearch

Имя инструмента: WebSearch
interface WebSearchOutput {
  /**
   * Результаты поиска
   */
  results: Array<{
    title: string;
    url: string;
    snippet: string;
    /**
     * Дополнительные метаданные, если доступны
     */
    metadata?: Record<string, any>;
  }>;
  /**
   * Общее количество результатов
   */
  total_results: number;
  /**
   * Запрос, который был выполнен
   */
  query: string;
}
Возвращает отформатированные результаты поиска из Интернета.

TodoWrite

Имя инструмента: TodoWrite
interface TodoWriteOutput {
  /**
   * Сообщение об успехе
   */
  message: string;
  /**
   * Текущая статистика задач
   */
  stats: {
    total: number;
    pending: number;
    in_progress: number;
    completed: number;
  };
}
Возвращает подтверждение с текущей статистикой задач.

ExitPlanMode

Имя инструмента: ExitPlanMode
interface ExitPlanModeOutput {
  /**
   * Сообщение подтверждения
   */
  message: string;
  /**
   * Одобрил ли пользователь план
   */
  approved?: boolean;
}
Возвращает подтверждение после выхода из режима планирования.

ListMcpResources

Имя инструмента: ListMcpResources
interface ListMcpResourcesOutput {
  /**
   * Доступные ресурсы
   */
  resources: Array<{
    uri: string;
    name: string;
    description?: string;
    mimeType?: string;
    server: string;
  }>;
  /**
   * Общее количество ресурсов
   */
  total: number;
}
Возвращает список доступных ресурсов MCP.

ReadMcpResource

Имя инструмента: ReadMcpResource
interface ReadMcpResourceOutput {
  /**
   * Содержимое ресурса
   */
  contents: Array<{
    uri: string;
    mimeType?: string;
    text?: string;
    blob?: string;
  }>;
  /**
   * Сервер, предоставивший ресурс
   */
  server: string;
}
Возвращает содержимое запрошенного ресурса MCP.

Типы разрешений

PermissionUpdate

Операции для обновления разрешений.
type PermissionUpdate = 
  | {
      type: 'addRules';
      rules: PermissionRuleValue[];
      behavior: PermissionBehavior;
      destination: PermissionUpdateDestination;
    }
  | {
      type: 'replaceRules';
      rules: PermissionRuleValue[];
      behavior: PermissionBehavior;
      destination: PermissionUpdateDestination;
    }
  | {
      type: 'removeRules';
      rules: PermissionRuleValue[];
      behavior: PermissionBehavior;
      destination: PermissionUpdateDestination;
    }
  | {
      type: 'setMode';
      mode: PermissionMode;
      destination: PermissionUpdateDestination;
    }
  | {
      type: 'addDirectories';
      directories: string[];
      destination: PermissionUpdateDestination;
    }
  | {
      type: 'removeDirectories';
      directories: string[];
      destination: PermissionUpdateDestination;
    }

PermissionBehavior

type PermissionBehavior = 'allow' | 'deny' | 'ask';

PermissionUpdateDestination

type PermissionUpdateDestination = 
  | 'userSettings'     // Глобальные параметры пользователя
  | 'projectSettings'  // Параметры проекта для каждого каталога
  | 'localSettings'    // Параметры локального проекта, игнорируемые git
  | 'session'          // Только текущий сеанс

PermissionRuleValue

type PermissionRuleValue = {
  toolName: string;
  ruleContent?: string;
}

Другие типы

ApiKeySource

type ApiKeySource = 'user' | 'project' | 'org' | 'temporary';

ConfigScope

type ConfigScope = 'local' | 'user' | 'project';

NonNullableUsage

Версия Usage со всеми обнуляемыми полями, сделанными ненулевыми.
type NonNullableUsage = {
  [K in keyof Usage]: NonNullable<Usage[K]>;
}

Usage

Статистика использования токенов (из @anthropic-ai/sdk).
type Usage = {
  input_tokens: number | null;
  output_tokens: number | null;
  cache_creation_input_tokens?: number | null;
  cache_read_input_tokens?: number | null;
}

CallToolResult

Тип результата инструмента MCP (из @modelcontextprotocol/sdk/types.js).
type CallToolResult = {
  content: Array<{
    type: 'text' | 'image' | 'resource';
    // Дополнительные поля варьируются в зависимости от типа
  }>;
  isError?: boolean;
}

AbortError

Пользовательский класс ошибки для операций отмены.
class AbortError extends Error {}

См. также