62 62
63MCP-серверы можно настроить несколькими способами в зависимости от ваших потребностей:63MCP-серверы можно настроить несколькими способами в зависимости от ваших потребностей:
64 64
65### Вариант 1: Добавление удалённого HTTP-сервера65### Вариант 1: добавление удалённого HTTP-сервера
66 66
67HTTP-серверы — рекомендуемый вариант для подключения к удалённым MCP-серверам. Это наиболее широко поддерживаемый транспорт для облачных сервисов.67HTTP-серверы — рекомендуемый вариант для подключения к удалённым MCP-серверам. Это наиболее широко поддерживаемый транспорт для облачных сервисов.
68 68
69```bash theme={null}69```bash theme={null}
70# Базовый синтаксис70# Basic syntax
71claude mcp add --transport http <name> <url>71claude mcp add --transport http <name> <url>
72 72
73# Реальный пример: подключение к Notion73# Real example: Connect to Notion
74claude mcp add --transport http notion https://mcp.notion.com/mcp74claude mcp add --transport http notion https://mcp.notion.com/mcp
75 75
76# Пример с Bearer-токеном76# Example with Bearer token
77claude mcp add --transport http secure-api https://api.example.com/mcp \77claude mcp add --transport http secure-api https://api.example.com/mcp \
78 --header "Authorization: Bearer your-token"78 --header "Authorization: Bearer your-token"
79```79```
80 80
81При настройке MCP-серверов через JSON в `.mcp.json`, `~/.claude.json` или `claude mcp add-json` поле `type` принимает `streamable-http` как псевдоним для `http`. Спецификация MCP использует для этого транспорта имя `streamable-http`, поэтому конфигурации, скопированные из документации сервера, работают без изменений.81При настройке MCP-серверов через JSON в `.mcp.json`, `~/.claude.json` или `claude mcp add-json` поле `type` принимает `streamable-http` как псевдоним для `http`. В спецификации MCP этот транспорт называется `streamable-http`, поэтому конфигурации, скопированные из документации сервера, работают без изменений.
82 82
83Запись JSON, в которой есть `url`, но нет `type`, является ошибкой конфигурации, потому что Claude Code считает запись без `type` stdio-сервером. Claude Code пропускает такой сервер и сообщает `MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry`.83Запись JSON, в которой есть `url`, но нет `type`, является ошибкой конфигурации, поскольку Claude Code считает запись без `type` stdio-сервером. Claude Code пропускает такой сервер и сообщает `MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry`.
84 84
85Только приложение-хост SDK, например приложение на [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/mcp.md) или [настольное приложение](https://code.claude.com/docs/ru/desktop.md), может зарегистрировать встроенный в процесс сервер `"type": "sdk"`. Claude Code пропускает запись `"type": "sdk"` в `.mcp.json`, `~/.claude.json` или настройках и сообщает `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`.85Только хост-приложение SDK, например приложение на [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/mcp.md) или [десктопное приложение](https://code.claude.com/docs/ru/desktop.md), может зарегистрировать внутрипроцессный сервер `"type": "sdk"`. Claude Code пропускает запись `"type": "sdk"` в `.mcp.json`, `~/.claude.json` или настройках и сообщает `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`.
86 86
87> [!NOTE]87> [!NOTE]
88>88>
89> При запусках с `--output-format stream-json` Claude Code также сообщает о пропущенной записи `--mcp-config` в [поле `mcp_server_errors`](https://code.claude.com/docs/ru/headless#stream-responses) события `system/init`, чтобы скрипты могли обнаружить, что сервер так и не загрузился.89> При запусках с `--output-format stream-json` Claude Code также сообщает о пропущенной записи `--mcp-config` в [поле `mcp_server_errors`](https://code.claude.com/docs/ru/headless#stream-responses) события `system/init`, чтобы скрипты могли обнаружить, что сервер так и не загрузился.
90 90
91### Вариант 2: Добавление удалённого SSE-сервера91### Вариант 2: добавление удалённого SSE-сервера
92 92
93> [!WARNING]93> [!WARNING]
94>94>
95> Транспорт SSE (Server-Sent Events) устарел. Используйте вместо него HTTP-серверы, где это возможно.95> Транспорт SSE (Server-Sent Events) объявлен устаревшим. По возможности используйте вместо него HTTP-серверы.
96 96
97Некоторые сервисы по-прежнему предоставляют только SSE-эндпоинт. Добавляйте их той же командой `claude mcp add --transport http <name> <url>`, что и [HTTP-сервер](#option-1-add-a-remote-http-server). Claude Code сначала пробует транспорт HTTP и переключается на SSE, если сервер его не принимает. Автоматическое переключение требует Claude Code v2.1.265 или новее.97Некоторые сервисы по-прежнему предоставляют только SSE-эндпоинт. Добавляйте их той же командой `claude mcp add --transport http <name> <url>`, что и [HTTP-сервер](#option-1-add-a-remote-http-server). Claude Code сначала пробует транспорт HTTP и переключается на SSE, если сервер его не принимает. Для автоматического переключения требуется Claude Code v2.1.265 или новее.
98 98
99В более ранней версии или для прямого подключения через SSE передайте вместо этого `--transport sse`:99В более ранней версии, или чтобы подключиться через SSE напрямую, передайте вместо этого `--transport sse`:
100 100
101```bash theme={null}101```bash theme={null}
102# Базовый синтаксис102# Basic syntax
103claude mcp add --transport sse <name> <url>103claude mcp add --transport sse <name> <url>
104 104
105# Реальный пример: подключение к Asana105# Real example: Connect to Asana
106claude mcp add --transport sse asana https://mcp.asana.com/sse106claude mcp add --transport sse asana https://mcp.asana.com/sse
107 107
108# Пример с заголовком аутентификации108# Example with authentication header
109claude mcp add --transport sse private-api https://api.company.com/sse \109claude mcp add --transport sse private-api https://api.company.com/sse \
110 --header "X-API-Key: your-key-here"110 --header "X-API-Key: your-key-here"
111```111```
112 112
113### Вариант 3: Добавление локального stdio-сервера113### Вариант 3: добавление локального stdio-сервера
114 114
115Stdio-серверы работают как локальные процессы на вашей машине. Они идеально подходят для инструментов, которым нужен прямой доступ к системе, или для пользовательских скриптов.115Stdio-серверы работают как локальные процессы на вашем компьютере. Они идеально подходят для инструментов, которым нужен прямой доступ к системе, или для пользовательских скриптов.
116 116
117Claude Code устанавливает в окружении запускаемого сервера переменную `CLAUDE_PROJECT_DIR`, указывающую на корень проекта, поэтому ваш сервер может разрешать пути относительно проекта, не завися от рабочего каталога. Это тот же каталог, который хуки получают в своей переменной `CLAUDE_PROJECT_DIR`. Читайте её внутри процесса вашего сервера, например `process.env.CLAUDE_PROJECT_DIR` в Node или `os.environ["CLAUDE_PROJECT_DIR"]` в Python.117Claude Code задаёт в окружении запущенного сервера переменную `CLAUDE_PROJECT_DIR`, равную корню проекта, чтобы ваш сервер мог разрешать пути относительно проекта, не завися от рабочего каталога. Это тот же каталог, который хуки получают в своей переменной `CLAUDE_PROJECT_DIR`. Считывайте её внутри процесса сервера, например `process.env.CLAUDE_PROJECT_DIR` в Node или `os.environ["CLAUDE_PROJECT_DIR"]` в Python.
118 118
119`CLAUDE_PROJECT_DIR` — это стабильный корень проекта, и он не меняется, когда вы добавляете или удаляете рабочие каталоги во время сессии. Сервер, который ограничивает собственный доступ к файловой системе набором разрешённых каталогов, должен вместо этого реализовать MCP-запрос `roots/list`. Claude Code отвечает на `roots/list` каталогом запуска сессии плюс каждым [дополнительным рабочим каталогом](https://code.claude.com/docs/ru/permissions.md#working-directories), который вы предоставили с помощью `--add-dir`, `/add-dir` или настройки `additionalDirectories`. Claude Code отправляет `notifications/roots/list_changed`, когда этот набор меняется.119`CLAUDE_PROJECT_DIR` — это стабильный корень проекта, и он не меняется, когда вы добавляете или удаляете рабочие каталоги посреди сессии. Серверу, который ограничивает собственный доступ к файловой системе набором разрешённых каталогов, следует вместо этого реализовать запрос MCP `roots/list`. Claude Code отвечает на `roots/list` каталогом запуска сессии плюс каждым [дополнительным рабочим каталогом](https://code.claude.com/docs/ru/permissions.md#working-directories), который вы предоставили через `--add-dir`, `/add-dir` или настройку `additionalDirectories`. Claude Code отправляет `notifications/roots/list_changed`, когда этот набор меняется.
120 120
121Эта переменная устанавливается в окружении сервера, а не в собственном окружении Claude Code, поэтому ссылка на неё через подстановку `${VAR}` в `command` или `args` записи `.mcp.json` с областью действия проекта или записи сервера с локальной или пользовательской областью действия в `~/.claude.json` требует значения по умолчанию, например `${CLAUDE_PROJECT_DIR:-.}`. Конфигурации MCP, предоставляемые плагинами, подставляют `${CLAUDE_PROJECT_DIR}` напрямую и не нуждаются в значении по умолчанию.121Эта переменная задаётся в окружении сервера, а не в собственном окружении Claude Code, поэтому для ссылки на неё через подстановку `${VAR}` в `command` или `args` записи `.mcp.json` с областью действия проекта либо записи сервера с локальной или пользовательской областью действия в `~/.claude.json` требуется значение по умолчанию, например `${CLAUDE_PROJECT_DIR:-.}`. Конфигурации MCP, предоставляемые плагинами, подставляют `${CLAUDE_PROJECT_DIR}` напрямую, и значение по умолчанию им не нужно.
122 122
123```bash theme={null}123```bash theme={null}
124# Базовый синтаксис124# Basic syntax
125claude mcp add [options] <name> -- <command> [args...]125claude mcp add [options] <name> -- <command> [args...]
126 126
127# Реальный пример: добавление сервера Airtable127# Real example: Add Airtable server
128claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \128claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \
129 -- npx -y airtable-mcp-server129 -- npx -y airtable-mcp-server
130```130```
131 131
132> [!NOTE]132> [!NOTE]
133>133>
134> Для stdio-серверов `--` (двойной дефис) отделяет собственные опции Claude, такие как `--transport`, `--env` и `--scope`, от команды и аргументов, которые запускают сервер. Всё после `--` передаётся серверу без изменений.134> Для stdio-серверов `--` (двойной дефис) отделяет собственные параметры Claude, такие как `--transport`, `--env` и `--scope`, от команды и аргументов, запускающих сервер. Всё, что идёт после `--`, передаётся серверу без изменений.
135>135>
136> Например:136> Например:
137>137>
138> * `claude mcp add --transport stdio myserver -- npx server` → запускает `npx server`138> * `claude mcp add --transport stdio myserver -- npx server` → запускает `npx server`
139> * `claude mcp add --env KEY=value --transport stdio myserver -- python server.py --port 8080` → запускает `python server.py --port 8080` с `KEY=value` в окружении139> * `claude mcp add --env KEY=value --transport stdio myserver -- python server.py --port 8080` → запускает `python server.py --port 8080` с `KEY=value` в окружении
140>140>
141> Без `--` Claude Code попытался бы разобрать флаги сервера, такие как `--port` выше, как свои собственные опции.141> Без `--` Claude Code попытался бы разобрать флаги сервера, например `--port` выше, как собственные параметры.
142>142>
143> `--env` принимает несколько пар `KEY=value`. Если имя сервера идёт сразу после `--env`, CLI считает имя ещё одной парой и отклоняет его, поэтому поместите хотя бы одну другую опцию, например `--transport stdio`, между `--env` и именем сервера.143> `--env` принимает несколько пар `KEY=value`. Если имя сервера идёт сразу после `--env`, CLI считывает имя как ещё одну пару и отклоняет его, поэтому поместите хотя бы один другой параметр, например `--transport stdio`, между `--env` и именем сервера.
144 144
145#### Как Claude Code останавливает stdio-сервер145#### Как Claude Code останавливает stdio-сервер
146 146
147Когда Claude Code отключает stdio-сервер, например при завершении вашей сессии, он отправляет сигнал процессу сервера и недолго ждёт его завершения, прежде чем остановить его принудительно. Если ваш сервер сохраняет состояние или удаляет файлы блокировки при завершении работы, обработайте сигнал для вашей платформы и уложитесь в это время:147Когда Claude Code отключает stdio-сервер, например при завершении вашей сессии, он посылает процессу сервера сигнал и недолго ждёт его завершения, прежде чем принудительно остановить его. Если ваш сервер сохраняет состояние или удаляет lock-файлы при завершении работы, обработайте сигнал для своей платформы и уложитесь в это время:
148 148
149* **В macOS и Linux**: Claude Code отправляет `SIGINT`, затем `SIGTERM`, если процесс всё ещё работает через 100 миллисекунд, затем `SIGKILL` ещё через 400 миллисекунд.149* **В macOS и Linux**: Claude Code отправляет `SIGINT`, затем `SIGTERM`, если процесс всё ещё работает через 100 миллисекунд, затем `SIGKILL` ещё через 400 миллисекунд.
150* **В Windows**: Claude Code закрывает stdin сервера, затем завершает дерево процессов сервера, если процесс всё ещё работает через 300 миллисекунд.150* **В Windows**: Claude Code закрывает stdin сервера, затем завершает дерево процессов сервера, если процесс всё ещё работает через 300 миллисекунд.
151 151
152До версии v2.1.296 Claude Code в Windows сразу завершал дерево процессов сервера, не закрывая предварительно stdin и не дожидаясь завершения.152До v2.1.296 Claude Code в Windows сразу завершал дерево процессов сервера, не закрывая предварительно stdin и не ожидая.
153 153
154### Вариант 4: Добавление удалённого WebSocket-сервера154### Вариант 4: добавление удалённого WebSocket-сервера
155 155
156WebSocket-серверы поддерживают постоянное двунаправленное соединение, что подходит для удалённых MCP-серверов, которые отправляют Claude события по собственной инициативе. Используйте вместо этого HTTP, если ваш сервер только отвечает на запросы, так как HTTP поддерживает OAuth и флаг `claude mcp add --transport`, а WebSocket не поддерживает ни то, ни другое.156WebSocket-серверы поддерживают постоянное двунаправленное соединение, что подходит удалённым MCP-серверам, которые отправляют события Claude по собственной инициативе. Используйте HTTP, если ваш сервер только отвечает на запросы, поскольку HTTP поддерживает OAuth и флаг `claude mcp add --transport`, а WebSocket не поддерживает ни то, ни другое.
157 157
158Настраивайте WebSocket-серверы в `.mcp.json` или с помощью `claude mcp add-json`:158Настраивайте WebSocket-серверы в `.mcp.json` или с помощью `claude mcp add-json`:
159 159
162 '{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'162 '{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'
163```163```
164 164
165Запись `type: "ws"` принимает те же поля `url`, `headers`, `headersHelper`, `timeout` и `alwaysLoad`, что и `http`. Аутентификация выполняется только через заголовки, поэтому передайте статический токен в `headers` или генерируйте его при подключении с помощью [`headersHelper`](#use-dynamic-headers-for-custom-authentication). Флаг `claude mcp add --transport` не принимает `ws`.165Запись `type: "ws"` принимает те же поля `url`, `headers`, `headersHelper`, `timeout` и `alwaysLoad`, что и `http`. Аутентификация выполняется только через заголовки, поэтому передайте статический токен в `headers` или генерируйте его в момент подключения с помощью [`headersHelper`](#use-dynamic-headers-for-custom-authentication). Флаг `claude mcp add --transport` не принимает `ws`.
166 166
167### Добавление сервера по инструкциям по настройке, написанным для другого клиента167### Добавление сервера по инструкциям по настройке, написанным для другого клиента
168 168
169MCP-серверы не привязаны к Claude Code, поэтому инструкции по настройке сервера могут быть написаны для Claude Desktop, Cursor или другого MCP-клиента и не содержать команды `claude mcp add`. Чтобы всё равно добавить сервер, найдите в этих инструкциях URL, команду запуска или блок JSON:169MCP-серверы не привязаны к Claude Code, поэтому инструкции по настройке сервера могут быть написаны для Claude Desktop, Cursor или другого MCP-клиента и не содержать команды `claude mcp add`. Чтобы всё равно добавить сервер, найдите в этих инструкциях URL, команду запуска или блок JSON:
170 170
171* **URL**, например `https://mcp.example.com/mcp`: сервер удалённый.171* **URL**, например `https://mcp.example.com/mcp`: сервер удалённый.
172* **Команда запуска**, например `npx -y @example/mcp-server`: сервер работает на вашей машине.172* **Команда запуска**, например `npx -y @example/mcp-server`: сервер работает на вашем компьютере.
173* **Блок JSON `mcpServers`**: конфигурация, написанная для файла настроек другого клиента.173* **Блок JSON `mcpServers`**: конфигурация, написанная для файла настроек другого клиента.
174 174
175Каждый из них — один из входных данных, которые принимают четыре варианта из раздела [Установка MCP-серверов](#installing-mcp-servers). Найдите ниже свой случай, чтобы превратить его в команду, которую принимает Claude Code. Каждая команда записывает конфигурацию в [локальную область действия](#local-scope), если вы не добавите `--scope project` или `--scope user`.175Каждый из них — это один из входных данных, которые принимают четыре варианта из раздела [Установка MCP-серверов](#installing-mcp-servers). Найдите ниже свой вариант, чтобы превратить его в команду, которую принимает Claude Code. Каждая команда записывает конфигурацию в [локальную область действия](#local-scope), если вы не добавите `--scope project` или `--scope user`.
176 176
177#### Добавление сервера из URL177#### Добавление сервера по URL
178 178
179URL означает, что сервер удалённый. Для эндпоинта `https://` добавьте его с `--transport http` или следуйте [Варианту 2](#option-2-add-a-remote-sse-server), если в инструкциях сказано, что эндпоинт использует SSE. Для эндпоинта `wss://` используйте вместо этого [Вариант 4](#option-4-add-a-remote-websocket-server), так как `--transport` не принимает `ws`:179URL означает, что сервер удалённый. Для эндпоинта `https://` добавьте его с `--transport http` или следуйте [варианту 2](#option-2-add-a-remote-sse-server), если в инструкциях сказано, что эндпоинт использует SSE. Для эндпоинта `wss://` используйте вместо этого [вариант 4](#option-4-add-a-remote-websocket-server), поскольку `--transport` не принимает `ws`:
180 180
181```bash theme={null}181```bash theme={null}
182claude mcp add --transport http example https://mcp.example.com/mcp182claude mcp add --transport http example https://mcp.example.com/mcp
183```183```
184 184
185Если в инструкциях также указан API-ключ или заголовок с токеном, передайте его с `--header`, как показано в [Варианте 1](#option-1-add-a-remote-http-server).185Если в инструкциях также указан API-ключ или заголовок с токеном, передайте его с помощью `--header`, как показано в [варианте 1](#option-1-add-a-remote-http-server).
186 186
187#### Добавление сервера из команды `npx`, `uvx` или двоичного файла187#### Добавление сервера по команде `npx`, `uvx` или бинарного файла
188 188
189Команда запуска означает, что сервер работает как локальный stdio-процесс. Поместите всю команду после `--`, чтобы Claude Code передал флаги, такие как `-y`, команде, запускающей сервер, а не считал их своими опциями. Передайте все переменные окружения, которые требуют инструкции, с помощью `--env` после имени сервера и перед `--`:189Команда запуска означает, что сервер работает как локальный stdio-процесс. Поместите всю команду после `--`, чтобы Claude Code передал флаги, такие как `-y`, команде, запускающей сервер, а не считывал их как собственные параметры. Передайте все переменные окружения, которые требуют инструкции, с помощью `--env` после имени сервера и перед `--`:
190 190
191```bash theme={null}191```bash theme={null}
192claude mcp add example --env API_KEY=your-key -- npx -y @example/mcp-server192claude mcp add example --env API_KEY=your-key -- npx -y @example/mcp-server
193```193```
194 194
195[Вариант 3](#option-3-add-a-local-stdio-server) подробно описывает разделитель `--`.195Разделитель `--` подробно описан в [варианте 3](#option-3-add-a-local-stdio-server).
196 196
197#### Добавление сервера из блока JSON `mcpServers`197#### Добавление сервера из блока JSON `mcpServers`
198 198
199Блок `mcpServers`, написанный для другого MCP-клиента, например Claude Desktop, использует тот же ключ-обёртку и ту же форму записи, которые читает Claude Code. Передайте `claude mcp add-json` объект внутри `mcpServers`, а не обёртку. Две разновидности записей требуют предварительного исправления:199Блок `mcpServers`, написанный для другого MCP-клиента, например Claude Desktop, использует тот же ключ-обёртку и ту же структуру записей, что читает Claude Code. Передайте `claude mcp add-json` объект внутри `mcpServers`, а не обёртку. Две разновидности записей сначала нужно исправить:
200 200
201* **`url` без `type`**: добавьте `"type": "http"`, `"type": "sse"` или `"type": "ws"` в соответствии с эндпоинтом. Claude Code считает запись без `type` stdio-сервером, поэтому запись с `url` без `type` не работает.201* **`url` без `type`**: добавьте `"type": "http"`, `"type": "sse"` или `"type": "ws"` в соответствии с эндпоинтом. Claude Code считает запись без `type` stdio-сервером, поэтому запись с `url`, но без `type` завершается ошибкой.
202* **Ключ с символами, отличными от букв, цифр, дефисов и подчёркиваний**: выберите имя сервера, в котором используются только эти символы. В остальных случаях ключ и есть имя сервера.202* **Ключ с символами, отличными от букв, цифр, дефисов и подчёркиваний**: выберите имя сервера, в котором используются только эти символы. В остальных случаях ключ и есть имя сервера.
203 203
204Например, этот блок:204Например, этот блок:
220claude mcp add-json example '{"command":"npx","args":["-y","@example/mcp-server"]}'220claude mcp add-json example '{"command":"npx","args":["-y","@example/mcp-server"]}'
221```221```
222 222
223Раздел [Добавление MCP-серверов из конфигурации JSON](#add-mcp-servers-from-json-configuration) описывает экранирование в оболочке и флаг `--scope` для `add-json`. Чтобы вместо этого поделиться сервером с вашей командой, добавьте `--scope project` или добавьте запись в `mcpServers` в файле `.mcp.json` в корне проекта и сделайте коммит. Раздел [Область действия проекта](#project-scope) описывает, как Claude Code загружает и одобряет этот файл.223Экранирование в оболочке и флаг `--scope` для `add-json` описаны в разделе [Добавление MCP-серверов из конфигурации JSON](#add-mcp-servers-from-json-configuration). Чтобы вместо этого поделиться сервером с командой, добавьте `--scope project` или добавьте запись в `mcpServers` в файле `.mcp.json` в корне проекта и сделайте коммит. Как Claude Code загружает и подтверждает этот файл, описано в разделе [Область действия проекта](#project-scope).
224 224
225Каждая команда `claude mcp add` и `claude mcp add-json` при успехе выводит строку `Added ...`. Чтобы проверить, что Claude Code подключился, выполните `claude mcp get <name>`; раздел [Статус сервера](#server-status) описывает показываемые статусы и шаг одобрения для серверов из `.mcp.json`.225Каждая команда `claude mcp add` и `claude mcp add-json` при успехе выводит строку `Added ...`. Чтобы проверить, что Claude Code подключился, выполните `claude mcp get <name>`; отображаемые статусы и шаг подтверждения для серверов из `.mcp.json` описаны в разделе [Статус сервера](#server-status).
226 226
227### Управление серверами227### Управление серверами
228 228
229После настройки вы можете управлять своими MCP-серверами с помощью этих команд:229После настройки вы можете управлять MCP-серверами с помощью этих команд:
230 230
231```bash theme={null}231```bash theme={null}
232# Список всех настроенных серверов232# List all configured servers
233claude mcp list233claude mcp list
234 234
235# Получить сведения о конкретном сервере235# Get details for a specific server
236claude mcp get notion236claude mcp get notion
237 237
238# Удалить сервер238# Remove a server
239claude mcp remove notion239claude mcp remove notion
240 240
241# (внутри Claude Code) Проверить статус сервера241# (within Claude Code) Check server status
242/mcp242/mcp
243```243```
244 244
245Когда вы удаляете удалённый сервер, Claude Code также удаляет токены OAuth и регистрацию клиента, которые он сохранил для этого сервера. Claude Code не отзывает токены на сервере авторизации, который их выдал. Чтобы отозвать токены там, где сервер авторизации поддерживает отзыв, выполните в оболочке [`claude mcp logout <name>`](#authenticate-from-the-command-line) перед `claude mcp remove <name>`.245Когда вы удаляете удалённый сервер, Claude Code также удаляет токены OAuth и регистрацию клиента, которые он сохранил для этого сервера. Claude Code не отзывает токены на сервере авторизации, который их выдал. Чтобы отозвать токены там, где сервер авторизации поддерживает отзыв, выполните [`claude mcp logout <name>`](#authenticate-from-the-command-line) в оболочке перед `claude mcp remove <name>`.
246 246
247#### Статус сервера247#### Статус сервера
248 248
249`claude mcp add` подтверждает успешное добавление, выводя строку `Added ...`, что означает, что конфигурация записана. Если вместо этого команда выводит сообщение `was not saved`, см. [MCP server was not saved or removed](https://code.claude.com/docs/ru/errors.md#mcp-server-was-not-saved-or-removed); для сообщения `may not have been saved` см. [MCP server may not have been saved or removed](https://code.claude.com/docs/ru/errors.md#mcp-server-may-not-have-been-saved-or-removed).249`claude mcp add` подтверждает успешное добавление, выводя строку `Added ...`, что означает, что конфигурация записана. Если вместо этого команда выводит сообщение `was not saved`, см. [MCP-сервер не был сохранён или удалён](https://code.claude.com/docs/ru/errors.md#mcp-server-was-not-saved-or-removed); для сообщения `may not have been saved` см. [MCP-сервер, возможно, не был сохранён или удалён](https://code.claude.com/docs/ru/errors.md#mcp-server-may-not-have-been-saved-or-removed).
250 250
251`claude mcp list` показывает рядом с каждым сервером в списке статус работоспособности, например `✔ Connected`, `! Needs authentication` или `✘ Failed to connect`. Статус сбоя означает, что Claude Code не смог подключиться к этому серверу, а не то, что не удалось выполнить команду list.251`claude mcp list` показывает рядом с каждым сервером в списке статус работоспособности, например `✔ Connected`, `! Needs authentication` или `✘ Failed to connect`. Статус сбоя означает, что Claude Code не смог подключиться к этому серверу, а не что команда вывода списка завершилась ошибкой.
252 252
253Статусы из этого списка отражают решение конфигурации, а не попытку подключения, поэтому Claude Code выводит их без подключения к серверу:253Статусы в этом списке отражают решение, принятое в конфигурации, а не попытку подключения, поэтому Claude Code выводит их, не подключаясь к серверу:
254 254
255* ``⏸ Pending approval (run `claude` to approve)``: сервер с областью действия project из `.mcp.json`, который вы ещё не подтвердили. Claude Code показывает его и в `claude mcp list`, и в `claude mcp get <name>`. Запустите `claude` в интерактивном режиме, чтобы просмотреть и подтвердить его.255* ``⏸ Pending approval (run `claude` to approve)``: сервер с областью действия проекта из `.mcp.json`, который вы ещё не подтвердили. Claude Code показывает его и в `claude mcp list`, и в `claude mcp get <name>`. Запустите `claude` в интерактивном режиме, чтобы просмотреть и подтвердить его.
256* `✘ Rejected (see disabledMcpjsonServers in settings)`: сервер из `.mcp.json`, который отклоняет запись [`disabledMcpjsonServers`](https://code.claude.com/docs/ru/settings-reference#disabledmcpjsonservers). Claude Code показывает его только в `claude mcp get <name>`.256* `✘ Rejected (see disabledMcpjsonServers in settings)`: сервер из `.mcp.json`, который отклоняется записью [`disabledMcpjsonServers`](https://code.claude.com/docs/ru/settings-reference#disabledmcpjsonservers). Claude Code показывает его только в `claude mcp get <name>`.
257* `⊘ Disabled for this project (re-enable via /mcp)`: сервер, указанный в списке [`disabledMcpServers`](#disable-a-server-without-removing-it) проекта. Claude Code показывает его и в `claude mcp list`, и в `claude mcp get <name>`. Включите сервер обратно в панели `/mcp`.257* `⊘ Disabled for this project (re-enable via /mcp)`: сервер, указанный в списке [`disabledMcpServers`](#disable-a-server-without-removing-it) проекта. Claude Code показывает его и в `claude mcp list`, и в `claude mcp get <name>`. Включите сервер снова на панели `/mcp`.
258* `✘ Blocked by enterprise managed policy`: сервер, который отклоняет одна из политик вашей организации. Claude Code показывает его и в `claude mcp list`, и в `claude mcp get <name>`. Сервер, заблокированный списком разрешённых, списком запрещённых или другим ограничением в [управляемой конфигурации MCP](https://code.claude.com/docs/ru/managed-mcp.md#how-restrictions-appear-to-users), скрыт в обеих командах, а не показан с этим статусом. Спросите администратора, какая политика блокирует сервер.258* `✘ Blocked by enterprise managed policy`: сервер, который отклоняет одна из политик вашей организации. Claude Code показывает его и в `claude mcp list`, и в `claude mcp get <name>`. Сервер, заблокированный списком разрешённых серверов, списком запрещённых серверов или другим ограничением в [управляемой конфигурации MCP](https://code.claude.com/docs/ru/managed-mcp.md#how-restrictions-appear-to-users), скрыт в обеих командах, а не показан с этим статусом. Спросите администратора, какая политика блокирует сервер.
259 259
260#### Одобрение серверов проекта и доверие к рабочему пространству260#### Подтверждение серверов проекта и доверие к рабочему пространству
261 261
262`claude mcp list` и `claude mcp get` читают одобрения `.mcp.json` только из файлов настроек, не добавленных в репозиторий, пока вы не доверитесь рабочему пространству, запустив в нём `claude` и приняв диалоговое окно доверия к рабочему пространству. Клонированный репозиторий не может одобрить собственные серверы: [`enableAllProjectMcpServers`](https://code.claude.com/docs/ru/settings-reference#enableallprojectmcpservers) или [`enabledMcpjsonServers`](https://code.claude.com/docs/ru/settings-reference#enabledmcpjsonservers), добавленные в `.claude/settings.json` проекта, игнорируются в недоверенной папке, и сервер остаётся в статусе `⏸ Pending approval` вместо подключения и проверки работоспособности.262`claude mcp list` и `claude mcp get` считывают подтверждения для `.mcp.json` только из файлов настроек, которые не добавлены в репозиторий, пока вы не доверитесь рабочему пространству, запустив в нём `claude` и приняв диалоговое окно доверия к рабочему пространству. Клонированный репозиторий не может подтвердить собственные серверы: [`enableAllProjectMcpServers`](https://code.claude.com/docs/ru/settings-reference#enableallprojectmcpservers) или [`enabledMcpjsonServers`](https://code.claude.com/docs/ru/settings-reference#enabledmcpjsonservers), закоммиченные в `.claude/settings.json` проекта, игнорируются в недоверенной папке, и сервер остаётся в статусе `⏸ Pending approval`, а не подключается и проверяется на работоспособность.
263 263
264Одобрения из этих источников по-прежнему применяются в недоверенной папке:264Подтверждения из этих источников по-прежнему действуют в недоверенной папке:
265 265
266* ваш пользовательский `~/.claude/settings.json`266* ваш пользовательский `~/.claude/settings.json`
267* управляемые настройки267* управляемые настройки
268* настройки, переданные с `--settings`268* настройки, переданные через `--settings`
269 269
270Claude Code также применяет одобрения из неотслеживаемого `.claude/settings.local.json`, но для проверки того, отслеживается ли файл, он запускает git, а эту проверку он выполняет только в [доверенной папке](https://code.claude.com/docs/ru/permissions.md#project-allow-rules-and-workspace-trust). В папке, которой вы никогда не доверяли, Claude Code ждёт диалогового окна доверия, прежде чем применить одобрения из файла, если только папка не является вашим собственным каталогом конфигурации: вашим домашним каталогом или каталогом, чей `.claude` вы указали в [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/ru/env-vars). До версии v2.1.207 Claude Code применял одобрения из неотслеживаемого `.claude/settings.local.json` даже в папке, которой вы никогда не доверяли.270Claude Code также применяет подтверждения из неотслеживаемого `.claude/settings.local.json`, но он запускает git, чтобы проверить, отслеживается ли файл, и выполняет эту проверку только в [доверенной папке](https://code.claude.com/docs/ru/permissions.md#project-allow-rules-and-workspace-trust). В папке, которой вы никогда не доверяли, Claude Code ждёт диалогового окна доверия, прежде чем применить подтверждения из файла, если только эта папка не является вашим собственным домашним каталогом конфигурации: вашим домашним каталогом или каталогом, чей `.claude` вы задали как [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/ru/env-vars). До v2.1.207 Claude Code применял подтверждения из неотслеживаемого `.claude/settings.local.json` даже в папке, которой вы никогда не доверяли.
271 271
272Запись `disabledMcpjsonServers` в любом файле настроек по-прежнему отклоняет сервер.272Запись `disabledMcpjsonServers` в любом файле настроек по-прежнему отклоняет сервер.
273 273
274#### Подробности статуса сервера274#### Подробности статуса сервера
275 275
276В `/mcp`, включая меню сервера там, и в менеджере [`/plugin`](https://code.claude.com/docs/ru/plugins/install) удалённый HTTP- или SSE-сервер, который вы использовали раньше, может показывать статус `cached`, например `cached 2h ago · connects on first use · 5 tools`. Claude Code загрузил список инструментов сервера из своего кэша обнаружения, сохранённого в предыдущей сессии, вместо подключения при запуске, и Claude Code подключает сервер, когда Claude впервые вызывает один из инструментов этого сервера. Инструменты доступны с вашего первого сообщения, поэтому вам ничего не нужно делать. Кэш обнаружения и его статус `cached` требуют Claude Code v2.1.221 или новее.276В `/mcp`, включая меню сервера там, и в менеджере [`/plugin`](https://code.claude.com/docs/ru/plugins/install) удалённый HTTP- или SSE-сервер, которым вы пользовались раньше, может показывать статус `cached`, например `cached 2h ago · connects on first use · 5 tools`. Claude Code загрузил список инструментов сервера из своего кэша обнаружения, сохранённого в предыдущей сессии, вместо подключения при запуске, и Claude Code подключает сервер при первом вызове Claude одного из инструментов сервера. Инструменты доступны с вашего первого сообщения, поэтому ничего делать не нужно. Для кэша обнаружения и его статуса `cached` требуется Claude Code v2.1.221 или новее.
277 277
278Кэш обнаружения по умолчанию отключён, если постепенное развёртывание не включило его для вашей учётной записи. Установите [`MCP_DISCOVERY_CACHE=1`](https://code.claude.com/docs/ru/env-vars), чтобы включить его, или `0`, чтобы оставить его отключённым, даже если развёртывание его включило. До версии v2.1.238 кэш был включён по умолчанию.278Кэш обнаружения по умолчанию отключён, если только постепенное развёртывание не включило его для вашей учётной записи. Задайте [`MCP_DISCOVERY_CACHE=1`](https://code.claude.com/docs/ru/env-vars), чтобы включить его, или `0`, чтобы оставить его отключённым даже при включении через развёртывание. До v2.1.238 кэш был включён по умолчанию.
279 279
280Когда вы выбираете **Disable** или **Clear authentication** в меню сервера в `/mcp`, Claude Code также удаляет запись кэша этого сервера. **Reconnect** тоже удаляет её для подключённого сервера или сервера со сбоем; для сервера со статусом `cached` **Reconnect** подключает сервер сразу и сохраняет запись. В следующий раз, когда Claude Code подключится к серверу после удаления записи, он получит список инструментов с сервера, а не из кэша.280Когда вы выбираете **Disable** или **Clear authentication** в меню сервера в `/mcp`, Claude Code также удаляет запись кэша этого сервера. **Reconnect** тоже удаляет её для подключённого сервера или сервера со сбоем; для сервера в статусе `cached` **Reconnect** подключает сервер сейчас и сохраняет запись. При следующем подключении к серверу после удаления записи Claude Code получает список инструментов с сервера, а не из кэша.
281 281
282##### Сбои подключения и ненастроенные серверы282##### Сбои подключения и ненастроенные серверы
283 283
284Когда статус сервера — `✘ Failed to connect`, `claude mcp list` добавляет подробности сбоя к этой строке статуса, а `claude mcp get <name>` показывает их в строке `Issue:`. Подробности — это HTTP-статус или код ошибки, а также любой текст ошибки, возвращённый сервером. Подробное представление сервера в `/mcp` включает тот же текст от сервера в строке `Issue:`.284Когда статус сервера — `✘ Failed to connect`, `claude mcp list` добавляет подробности сбоя к этой строке статуса, а `claude mcp get <name>` показывает их в строке `Issue:`. Подробности — это HTTP-статус или код ошибки, а также текст ошибки, который вернул сервер. Подробное представление сервера в `/mcp` включает тот же текст от сервера в строке `Issue:`.
285 285
286Claude Code удаляет из этих подробностей текст, похожий на учётные данные, и никогда не включает раскрытый URL сервера, который может содержать секреты. Claude Code не добавляет подробностей к статусу `✘ Connection error`, потому что текст исключения, который он вывел бы там, может содержать этот URL.286Claude Code скрывает в этих подробностях текст, похожий на учётные данные, и никогда не включает развёрнутый URL сервера, который может содержать секреты. К статусу `✘ Connection error` Claude Code не добавляет подробностей, поскольку текст исключения, который он вывел бы там, может содержать этот URL.
287 287
288Когда вы завершаете аутентификацию из `/mcp`, а подключение по-прежнему не удаётся с HTTP-статусом или кодом ошибки транспорта, Claude Code добавляет этот код и origin URL сервера в сообщение, которое выводит после попытки. Origin — это схема и хост, плюс порт, если он указан в URL, например `https://mcp.example.com`.288Когда вы завершаете аутентификацию из `/mcp`, а подключение всё равно завершается с HTTP-статусом или кодом ошибки транспорта, Claude Code добавляет этот код и источник (origin) URL сервера в сообщение, которое выводит после попытки. Источник — это схема и хост, а также порт, если он указан в URL, например `https://mcp.example.com`.
289 289
290* Путь и строка запроса никогда не появляются в этом сообщении.290* Путь и строка запроса никогда не появляются в этом сообщении.
291* Для сервера в локальной, проектной или пользовательской [области действия](#mcp-installation-scopes) или в управляемой конфигурации MCP origin показывает хост в том виде, в каком он записан в этой конфигурации, поэтому ссылка `${VAR}` в хосте в сообщении не раскрывается.291* Для сервера с локальной, проектной или пользовательской [областью действия](#mcp-installation-scopes) или в управляемой конфигурации MCP источник показывает хост так, как он записан в этой конфигурации, поэтому ссылка `${VAR}` в хосте не раскрывается в сообщении.
292* Для сбоя без статуса или кода ошибки Claude Code показывает текст ошибки без origin.292* Для сбоя без статуса или кода ошибки Claude Code показывает текст ошибки без источника.
293 293
294Удалённый сервер, в конфигурации которого указан пустой `url`, отображается как `not configured` в `/mcp`, в `claude mcp list` и в менеджере [`/plugin`](https://code.claude.com/docs/ru/plugins/install), и Claude Code не пытается к нему подключиться. Плагин может включать такую запись-заполнитель для коннектора, который вы настроите позже, поэтому Claude Code не сообщает о ней как об ошибке или проблеме настройки. В подробном представлении сервера в `/mcp` отображается `No URL configured for this server`; укажите `url` записи, чтобы подключить его.294Удалённый сервер, в конфигурации которого пустой `url`, отображается как `not configured` в `/mcp`, в `claude mcp list` и в менеджере [`/plugin`](https://code.claude.com/docs/ru/plugins/install), и Claude Code не пытается к нему подключиться. Плагин может включать подобную запись-заглушку для коннектора, который вы настроите позже, поэтому Claude Code не сообщает о ней как об ошибке или проблеме настройки. В подробном представлении сервера в `/mcp` написано `No URL configured for this server`; задайте `url` записи, чтобы подключить его.
295 295
296#### Предупреждения о конфигурации296#### Предупреждения о конфигурации
297 297
298Claude Code предупреждает о перечисленных ниже проблемах конфигурации. В каждом пункте указано, что проверяет Claude Code и как устранить предупреждение:298Claude Code предупреждает о перечисленных ниже проблемах конфигурации. В каждом пункте указано, что проверяет Claude Code и как устранить предупреждение:
299 299
300* **Скрытые пробельные символы**: Claude Code предупреждает, когда значение конфигурации MCP содержит скрытые начальные или конечные пробельные символы, которые часто появляются при вставке токена с завершающим переводом строки. Claude Code проверяет `command`, `url`, каждую запись `args`, а также значения и имена ключей в `env` и `headers`. Claude Code показывает предупреждение в выводе `claude mcp list` и в `/mcp`, называя затронутые поля без вывода их значений, например `Leading or trailing whitespace in: headers.Authorization`. Claude Code не обрезает пробельные символы и использует значения точно в том виде, в каком они записаны, поэтому отредактируйте конфигурацию, чтобы их удалить.300* **Скрытые пробельные символы**: Claude Code предупреждает, когда значение в конфигурации MCP содержит скрытые начальные или конечные пробельные символы, что часто возникает при вставке токена с завершающим переводом строки. Claude Code проверяет `command`, `url`, каждую запись `args`, а также значения и имена ключей в `env` и `headers`. Claude Code показывает предупреждение в выводе `claude mcp list` и в `/mcp`, называя затронутые поля без вывода их значений, например `Leading or trailing whitespace in: headers.Authorization`. Claude Code не обрезает пробельные символы и использует значения в точности как записано, поэтому отредактируйте конфигурацию, чтобы удалить их.
301* **Одно имя в нескольких областях действия**: если вы определяете одно и то же имя сервера в нескольких [областях действия](#mcp-installation-scopes) с разными эндпоинтами, Claude Code предупреждает о конфликте в выводе `claude mcp list` и в `/mcp`. Claude Code хранит входы через OAuth отдельно для каждого эндпоинта, поэтому, когда вы проходите аутентификацию для определения, загружаемого в одном проекте, вам всё равно нужно отдельно войти в проекте, где загружается другое определение. Оставьте нужный эндпоинт и удалите остальные с помощью `claude mcp remove <name> --scope <scope>`. В предупреждении Claude Code приводит эндпоинт каждой области действия в том виде, в каком он записан в вашей конфигурации, с нераскрытыми [ссылками `${VAR}`](#environment-variable-expansion-in-mcp-json), поэтому он никогда не показывает разрешённое значение, такое как API-ключ.301* **Одно и то же имя в нескольких областях действия**: если вы определили одно и то же имя сервера в нескольких [областях действия](#mcp-installation-scopes) с разными эндпоинтами, Claude Code предупреждает о конфликте в выводе `claude mcp list` и в `/mcp`. Claude Code хранит входы через OAuth для каждого эндпоинта отдельно, поэтому после аутентификации определения, загружающегося в одном проекте, вам всё равно нужно войти отдельно в проекте, где загружается другое определение. Оставьте нужный эндпоинт, а остальные удалите с помощью `claude mcp remove <name> --scope <scope>`. В предупреждении Claude Code приводит эндпоинт каждой области действия так, как он записан в вашей конфигурации, с нераскрытыми [ссылками `${VAR}`](#environment-variable-expansion-in-mcp-json), поэтому он никогда не показывает раскрытое значение, например API-ключ.
302* **Зарезервированные имена**: Claude Code резервирует имена своих встроенных серверов, включая `workspace`, `claude-in-chrome`, `computer-use`, `Claude Preview` и `Claude Browser`. Если ваша конфигурация определяет сервер с зарезервированным именем, Claude Code пропускает его при загрузке и показывает предупреждение с просьбой переименовать его. `claude mcp add` отклоняет зарезервированное имя с ошибкой. `Claude Preview` и `Claude Browser` обозначают встроенный сервер, который использует [панель предпросмотра настольного приложения Claude Code](https://code.claude.com/docs/ru/desktop.md#preview-your-app).302* **Зарезервированные имена**: Claude Code резервирует имена своих встроенных серверов, включая `workspace`, `claude-in-chrome`, `computer-use`, `Claude Preview` и `Claude Browser`. Если ваша конфигурация определяет сервер с зарезервированным именем, Claude Code пропускает его при загрузке и показывает предупреждение с просьбой переименовать его. `claude mcp add` отклоняет зарезервированное имя с ошибкой. `Claude Preview` и `Claude Browser` — оба имени встроенного сервера, который использует [панель предварительного просмотра десктопного приложения Claude Code](https://code.claude.com/docs/ru/desktop.md#preview-your-app).
303* **Отсутствующая переменная окружения**: если [ссылка `${VAR}`](#environment-variable-expansion-in-mcp-json) в конфигурации сервера указывает на переменную, которая не установлена и не имеет `:-default`, Claude Code выводит предупреждение в `claude mcp list` и в `/mcp`, называя переменную, и всё равно загружает сервер с нераскрытым текстом `${VAR}`. Установите переменную или добавьте резервный вариант `${VAR:-default}`. В `url` и `headers` удалённого сервера некоторые переменные учётных данных вместо этого [читаются как пустые](#credential-variables-that-read-as-empty), без предупреждения.303* **Отсутствующая переменная окружения**: если [ссылка `${VAR}`](#environment-variable-expansion-in-mcp-json) в конфигурации сервера называет переменную, которая не задана и не имеет `:-default`, Claude Code предупреждает в выводе `claude mcp list` и в `/mcp`, называя переменную, и всё равно загружает сервер с нераскрытым текстом `${VAR}`. Задайте переменную или добавьте резервный вариант `${VAR:-default}`. В `url` и `headers` удалённого сервера некоторые переменные с учётными данными вместо этого [считываются как пустые](#credential-variables-that-read-as-empty) без предупреждения.
304 304
305#### Доступность инструментов305#### Доступность инструментов
306 306
308 308
309##### Количество инструментов в облачной сессии309##### Количество инструментов в облачной сессии
310 310
311В [облачной сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md) значение вида `3 of 13 tools available` означает, что Claude не может использовать остальные 10. Проверьте, среди прочего, следующие причины:311В [облачной сессии](https://code.claude.com/docs/ru/claude-code-on-the-web.md) запись вроде `3 of 13 tools available` означает, что Claude не может использовать остальные 10. Проверьте, среди прочего, следующие причины:
312 312
313* **Правило запрета в `.claude/settings.json` вашего репозитория называет этот инструмент или весь его сервер**: удалите [правило](https://code.claude.com/docs/ru/permissions.md#mcp), если [ваша сессия читает этот файл](https://code.claude.com/docs/ru/settings.md#settings-in-cloud-sessions)313* **Правило запрета в `.claude/settings.json` вашего репозитория называет инструмент или весь его сервер**: удалите [правило](https://code.claude.com/docs/ru/permissions.md#mcp), если [ваша сессия читает этот файл](https://code.claude.com/docs/ru/settings.md#settings-in-cloud-sessions)
314* **Полное имя инструмента длиннее 128 символов**: выполните [шаги для слишком длинного имени](https://code.claude.com/docs/ru/errors.md#mcp-tool-name-over-128-characters)314* **Полное имя инструмента длиннее 128 символов**: выполните [шаги для слишком длинного имени](https://code.claude.com/docs/ru/errors.md#mcp-tool-name-over-128-characters)
315* **Сервер предоставляет инструмент для своего собственного интерфейса, а не для Claude**: если вы поддерживаете сервер, добавьте `model` в `_meta.ui.visibility` инструмента, чтобы предоставить инструмент Claude. В противном случае исправлять нечего.315* **Сервер указывает инструмент для собственного интерфейса, а не для Claude**: если вы сопровождаете сервер, добавьте `model` в `_meta.ui.visibility` инструмента, чтобы предоставить инструмент Claude. В противном случае исправлять нечего.
316 316
317##### Инструменты сервера, который ещё подключается317##### Инструменты сервера, который всё ещё подключается
318 318
319Если для вашего запроса нужны инструменты сервера, который всё ещё подключается в фоне, Claude ждёт этот сервер, прежде чем продолжить. То, как происходит ожидание, зависит от вашей конфигурации:319Если вашему запросу нужны инструменты сервера, который всё ещё подключается в фоновом режиме, Claude ждёт этот сервер, прежде чем продолжить. Как происходит ожидание, зависит от вашей конфигурации:
320 320
321* **С [поиском инструментов](#scale-with-mcp-tool-search), по умолчанию**: ожидание происходит внутри вызова `ToolSearch`.321* **С [поиском инструментов](#scale-with-mcp-tool-search), по умолчанию**: ожидание происходит внутри вызова `ToolSearch`.
322* **Без поиска инструментов**: Claude вместо этого использует инструмент `WaitForMcpServers`. К конфигурациям без поиска инструментов относятся `ENABLE_TOOL_SEARCH=false` и модель, выпущенная раньше Claude Opus 4.5, Claude Sonnet 4.5 и Claude Haiku 4.5, на Agent Platform от Google Cloud. Для шлюза `ANTHROPIC_BASE_URL` см. [Поиск инструментов через LLM-шлюз](#tool-search-through-a-gateway).322* **Без поиска инструментов**: Claude использует вместо этого инструмент `WaitForMcpServers`. К конфигурациям без поиска инструментов относятся `ENABLE_TOOL_SEARCH=false` и модель старше Claude Opus 4.5, Claude Sonnet 4.5 и Claude Haiku 4.5 на Agent Platform от Google Cloud. Для шлюза `ANTHROPIC_BASE_URL` см. [Поиск инструментов через LLM-шлюз](#tool-search-through-a-gateway).
323* **В Microsoft Foundry при [развёртывании, размещённом в Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options)**: Claude начинает с пути поиска инструментов, а не с `WaitForMcpServers`, так как Claude Code узнаёт об отклонении на стороне сервера развёртывания только из API. После того как Claude Code переключит это развёртывание на [предварительную загрузку](#scale-with-mcp-tool-search), инструменты сервера, завершившего подключение, становятся доступны при следующем запросе Claude.323* **В [развёртывании, размещённом в Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options), в Microsoft Foundry**: Claude начинает с пути поиска инструментов, а не с `WaitForMcpServers`, поскольку Claude Code узнаёт об отклонении на стороне сервера развёртывания только из API. После того как Claude Code переключит это развёртывание на [предварительную загрузку](#scale-with-mcp-tool-search), инструменты сервера, завершившего подключение, становятся доступны при следующем запросе Claude.
324 324
325При включённом поиске инструментов, когда сервер завершает подключение, пока Claude работает, Claude Code сообщает Claude имена инструментов сервера при его следующем запросе в том же ходе. Затем Claude может искать и вызывать эти инструменты, не дожидаясь вашего следующего сообщения.325При включённом поиске инструментов, когда сервер завершает подключение во время работы Claude, Claude Code перечисляет Claude имена инструментов сервера при его следующем запросе в рамках того же хода. Затем Claude может искать и вызывать эти инструменты, не дожидаясь вашего следующего сообщения.
326 326
327После возобновления сессии Claude может вызвать инструмент из сохранённого диалога, пока MCP-сервер этого инструмента ещё подключается. Пока сервер выполняет первую попытку подключения, Claude Code удерживает вызов до 10 секунд и выполняет его, как только инструмент становится доступен. Если сервер не подключается вовремя или уже [повторяет попытку после неудачной](#automatic-reconnection), вызов завершается [ошибкой инструмента](https://code.claude.com/docs/ru/errors.md#no-such-tool-available) `No such tool available`.327После возобновления сессии Claude может вызвать инструмент из сохранённого диалога, пока MCP-сервер этого инструмента ещё подключается. Пока сервер выполняет первую попытку подключения, Claude Code удерживает вызов до 10 секунд и выполняет его, как только инструмент становится доступен. Если сервер не подключается вовремя или уже [повторяет попытку после неудачной](#automatic-reconnection), вызов завершается [ошибкой инструмента](https://code.claude.com/docs/ru/errors.md#no-such-tool-available) `No such tool available`.
328 328
329### Отключение сервера без его удаления329### Отключение сервера без его удаления
330 330
331Выключите сервер в панели `/mcp`, чтобы Claude Code перестал к нему подключаться, не теряя его конфигурацию. Claude Code по-прежнему показывает сервер в `/mcp` с пометкой, что он отключён.331Выключите сервер на панели `/mcp`, чтобы Claude Code перестал к нему подключаться, не теряя его конфигурацию. Claude Code по-прежнему показывает сервер в `/mcp` с пометкой об отключении.
332 332
333Когда вы переключаете сервер, Claude Code записывает ваш выбор для каждого проекта в `~/.claude.json`, в один из двух списков, которые охватывают непересекающиеся наборы серверов:333Когда вы переключаете сервер, Claude Code записывает ваш выбор для каждого проекта в `~/.claude.json` в один из двух списков, которые охватывают непересекающиеся наборы серверов:
334 334
335* `disabledMcpServers`: список исключений для пользовательских серверов, серверов плагинов, серверов, которые ваша организация [предоставляет через управляемые настройки](https://code.claude.com/docs/ru/managed-mcp.md#provide-servers-through-managed-settings), коннекторов claude.ai, которые Claude Code [получает сам](#how-connectors-reach-claude-code), и встроенных серверов, включённых по умолчанию. Claude Code не подключается к серверу, указанному здесь. Когда вы отключаете коннектор claude.ai с помощью переключателя `/mcp` для проекта, описанного в разделе [Отключение коннекторов claude.ai](#disable-claude-ai-connectors), Claude Code записывает его в этот список под отображаемым именем, например `claude.ai Slack`.335* `disabledMcpServers`: список для отказа от серверов, настроенных пользователем, серверов плагинов, серверов, которые ваша организация [предоставляет через управляемые настройки](https://code.claude.com/docs/ru/managed-mcp.md#provide-servers-through-managed-settings), коннекторов claude.ai, которые Claude Code [получает сам](#how-connectors-reach-claude-code), и встроенных серверов, включённых по умолчанию. Claude Code не подключается к серверу, указанному здесь. Когда вы отключаете коннектор claude.ai с помощью переключателя `/mcp` для проекта, описанного в разделе [Отключение коннекторов claude.ai](#disable-claude-ai-connectors), Claude Code записывает его в этот список под отображаемым именем, например `claude.ai Slack`.
336* `enabledMcpServers`: список включения для встроенных серверов, отключённых по умолчанию, таких как `computer-use`. Claude Code подключается к серверу, отключённому по умолчанию, только если вы укажете его здесь.336* `enabledMcpServers`: список для явного включения встроенных серверов, выключенных по умолчанию, например `computer-use`. Claude Code подключается к выключенному по умолчанию серверу, только если вы укажете его здесь.
337 337
338Для каждого сервера Claude Code проверяет ровно один из двух списков, поэтому ни один список не переопределяет другой. Если вы добавите обычный сервер в `enabledMcpServers` или встроенный сервер, отключённый по умолчанию, в `disabledMcpServers`, Claude Code проигнорирует эту запись.338Для каждого сервера Claude Code обращается ровно к одному из двух списков, поэтому ни один список не переопределяет другой. Если вы добавите обычный сервер в `enabledMcpServers` или выключенный по умолчанию встроенный сервер в `disabledMcpServers`, Claude Code проигнорирует эту запись.
339 339
340`disabledMcpServers` и `enabledMcpServers` не связаны с [`enabledMcpjsonServers`](https://code.claude.com/docs/ru/settings-reference#enabledmcpjsonservers) и [`disabledMcpjsonServers`](https://code.claude.com/docs/ru/settings-reference#disabledmcpjsonservers), которые управляют одобрением серверов, определённых в файле `.mcp.json` проекта.340`disabledMcpServers` и `enabledMcpServers` не связаны с [`enabledMcpjsonServers`](https://code.claude.com/docs/ru/settings-reference#enabledmcpjsonservers) и [`disabledMcpjsonServers`](https://code.claude.com/docs/ru/settings-reference#disabledmcpjsonservers), которые управляют подтверждением серверов, определённых в файле `.mcp.json` проекта.
341 341
342### Среды выполнения MCP-клиента342### Среды выполнения MCP-клиента
343 343
344Claude Code подключается к MCP-серверам через одну из двух сред выполнения клиента. Среда выполнения v1 построена на MCP TypeScript SDK 1.x. Среда выполнения v2 — это тот же код на [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/), который добавляет ревизию протокола MCP 2026-07-28. Остальная часть этой страницы относится к обеим средам выполнения, кроме разделов, где явно упомянута среда выполнения v2.344Claude Code подключается к MCP-серверам через одну из двух сред выполнения клиента. Среда выполнения v1 построена на MCP TypeScript SDK 1.x. Среда выполнения v2 — это тот же код на [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/), который добавляет ревизию протокола MCP 2026-07-28. Остальная часть этой страницы относится к обеим средам выполнения, кроме разделов, где названа среда выполнения v2.
345 345
346Claude Code выбирает среду выполнения при каждом запуске и сохраняет её до выхода. В сессиях, где он [получает флаги функций](https://code.claude.com/docs/ru/env-vars.md#features-that-need-feature-flag-fetching), он использует среду выполнения v2 в Claude Code v2.1.232 или новее.346Claude Code выбирает среду выполнения при каждом запуске и сохраняет её до выхода. В сессиях, где он [получает флаги функций](https://code.claude.com/docs/ru/env-vars.md#features-that-need-feature-flag-fetching), он использует среду выполнения v2 в Claude Code v2.1.232 или новее.
347 347
348В сессиях, где он не получает флаги функций, Claude Code по умолчанию использует среду выполнения v2 в Claude Code v2.1.274 или новее:348В сессиях, где он не получает флаги функций, Claude Code по умолчанию использует среду выполнения v2 в Claude Code v2.1.274 или новее:
349 349
350* Сессии на Amazon Bedrock, Claude Platform on AWS, Agent Platform от Google Cloud или Microsoft Foundry, если платформа-хост, встраивающая Claude Code, не устанавливает [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/ru/env-vars)350* Сессии на Amazon Bedrock, Claude Platform on AWS, Agent Platform от Google Cloud или Microsoft Foundry, если только хост-платформа, встраивающая Claude Code, не задаёт [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/ru/env-vars)
351* Сессии с входом через [шлюз приложений Claude](https://code.claude.com/docs/ru/claude-apps-gateway)351* Сессии со входом через [шлюз приложений Claude](https://code.claude.com/docs/ru/claude-apps-gateway)
352* Сессии, в которых вы отключаете телеметрию или получение флагов функций, например с помощью `DISABLE_TELEMETRY`352* Сессии, в которых вы отключили телеметрию или получение флагов функций, например с помощью `DISABLE_TELEMETRY`
353 353
354В v2 Claude Code также:354В v2 Claude Code также:
355 355
356* Спрашивает HTTP-, stdio-серверы и серверы коннекторов claude.ai, поддерживают ли они более новую ревизию, и использует её с теми, которые поддерживают. Это относится и к коннекторам облачных сессий и сессий [Remote Control](https://code.claude.com/docs/ru/remote-control.md). Ко всем остальным серверам он подключается так же, как v1.356* Спрашивает HTTP-, stdio-серверы и серверы коннекторов claude.ai, поддерживают ли они более новую ревизию, и использует её с теми, которые поддерживают. Это включает коннекторы облачных сессий и сессий [Remote Control](https://code.claude.com/docs/ru/remote-control.md). Ко всем остальным серверам Claude Code подключается так же, как v1.
357* Получает уведомления `list_changed` от серверов на более новой ревизии через [поток, который держит открытым](#notification-streams-on-the-v2-runtime).357* Получает уведомления `list_changed` от серверов на более новой ревизии через [поток, который держит открытым](#notification-streams-on-the-v2-runtime).
358* Не регистрирует сервер [канала](#push-messages-with-channels), который подключается на более новой ревизии, потому что эта ревизия не может передавать сообщения канала.358* Не регистрирует сервер [канала](#push-messages-with-channels), подключающийся на более новой ревизии, поскольку эта ревизия не может передавать сообщения каналов.
359* Прерывает [вход через MCP OAuth](#authenticate-with-remote-mcp-servers), если ответ авторизации указывает неожиданного издателя.359* Прерывает [вход через MCP OAuth](#authenticate-with-remote-mcp-servers), если в ответе авторизации указан неожиданный издатель.
360* Отправляет [учётные данные MCP OAuth](#authenticate-with-remote-mcp-servers) только на эндпоинт токена, обслуживаемый по HTTPS или на `localhost`, `127.0.0.1` или `::1`. Вход не удаётся для сервера, эндпоинт токена которого — простой `http://` в любом другом месте, например на устройстве в вашей локальной сети. См. [Refusing to send credentials to non-https token endpoint](https://code.claude.com/docs/ru/errors.md#refusing-to-send-credentials-to-non-https-token-endpoint).360* Отправляет учётные данные [MCP OAuth](#authenticate-with-remote-mcp-servers) только на эндпоинт токенов, обслуживаемый по HTTPS или по адресу `localhost`, `127.0.0.1` или `::1`. Вход завершается ошибкой для сервера, чей эндпоинт токенов работает по простому `http://` в любом другом месте, например на устройстве в вашей локальной сети. См. [Refusing to send credentials to non-https token endpoint](https://code.claude.com/docs/ru/errors.md#refusing-to-send-credentials-to-non-https-token-endpoint).
361 361
362Anthropic может оставить конкретный сервер на более ранней версии протокола или без этого потока с помощью флага функции, который получает Claude Code. Чтобы выбрать среду выполнения самостоятельно, задайте [`MCP_SDK_GENERATION`](https://code.claude.com/docs/ru/env-vars) значение `v1` или `v2`.362Anthropic может оставить конкретный сервер на более раннем протоколе или без этого потока с помощью флага функции, который получает Claude Code. Чтобы выбрать среду выполнения самостоятельно, задайте [`MCP_SDK_GENERATION`](https://code.claude.com/docs/ru/env-vars) равным `v1` или `v2`.
363 363
364Чтобы решить, спрашивает ли Claude Code серверы о более новой ревизии, задайте [`MCP_PROTOCOL_NEGOTIATION`](https://code.claude.com/docs/ru/env-vars) значение `auto` или `legacy`. Если эта переменная не задана, Claude Code может не спрашивать stdio-сервер в течение 7 дней, например после того как сервер завершился в ответ на вопрос. Чтобы обновлённый сервер был опрошен раньше, задайте `auto`.364Чтобы решить, спрашивает ли Claude Code серверы о более новой ревизии, задайте [`MCP_PROTOCOL_NEGOTIATION`](https://code.claude.com/docs/ru/env-vars) равным `auto` или `legacy`. Если эта переменная не задана, Claude Code может не спрашивать stdio-сервер в течение 7 дней, например после того, как сервер завершил работу при запросе. Чтобы обновлённый сервер опросили раньше, задайте `auto`.
365 365
366### Динамическое обновление инструментов366### Динамическое обновление инструментов
367 367
368MCP-сервер может изменять предлагаемые им инструменты, промпты или ресурсы во время подключения и отправлять уведомление `list_changed`. Когда такое уведомление приходит:368MCP-сервер может изменить предлагаемые им инструменты, промпты или ресурсы во время подключения и отправить уведомление `list_changed`. Когда оно приходит:
369 369
370* **В интерактивной сессии терминала** Claude Code получает обновлённый список с этого сервера, поэтому вам не нужно его переподключать.370* **В интерактивной сессии терминала** Claude Code получает обновлённый список с этого сервера, поэтому переподключать его не нужно.
371* **В [неинтерактивном режиме](https://code.claude.com/docs/ru/headless.md) с флагом `-p` и в [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md)** Claude Code при этих уведомлениях обновляет только список инструментов.371* **В [неинтерактивном режиме](https://code.claude.com/docs/ru/headless.md) с флагом `-p` и в [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md)** Claude Code при таких уведомлениях обновляет только список инструментов.
372 372
373Если запрос на обновление не удаётся, Claude Code сохраняет ранее обнаруженные инструменты, промпты и ресурсы сервера, пока последующее обновление не завершится успешно.373Если запрос на обновление завершается ошибкой, Claude Code сохраняет ранее обнаруженные инструменты, промпты и ресурсы сервера до тех пор, пока последующее обновление не завершится успешно.
374 374
375#### Потоки уведомлений в среде выполнения v2375#### Потоки уведомлений в среде выполнения v2
376 376
377В [среде выполнения v2](#mcp-client-runtimes) Claude Code получает уведомления `list_changed` от сервера на более новой ревизии протокола через поток, который держит открытым. Когда поток закрывается, Claude Code открывает его снова с двумя ограничениями:377В [среде выполнения v2](#mcp-client-runtimes) Claude Code получает уведомления `list_changed` от сервера на более новой ревизии протокола через поток, который держит открытым. Когда поток закрывается, Claude Code открывает его снова с двумя ограничениями:
378 378
379* **Поток снова закрывается в течение 10 секунд**: Claude Code открывает его повторно до трёх раз, затем прекращает попытки для этого соединения.379* **Поток снова закрывается в течение 10 секунд**: Claude Code открывает его повторно до трёх раз, затем прекращает попытки для этого подключения.
380* **Поток остаётся открытым дольше 10 секунд, затем закрывается**, как это обычно происходит с потоками к бессерверным хостам: после пяти повторных открытий за час Claude Code ждёт около шести часов перед следующим.380* **Поток остаётся открытым дольше 10 секунд, затем закрывается**, как обычно происходит с потоками к serverless-хостам: после пяти повторных открытий за час Claude Code ждёт около шести часов перед следующим.
381 381
382Пока поток не открыт повторно, у вас остаются последние полученные инструменты, промпты и ресурсы сервера. Чтобы получить его изменения раньше, переподключите сервер в `/mcp`.382Пока поток не открыт повторно, у вас остаются последние полученные инструменты, промпты и ресурсы сервера. Чтобы получить его изменения раньше, переподключите сервер из `/mcp`.
383 383
384### Автоматическое переподключение384### Автоматическое переподключение
385 385
386Claude Code переподключает удалённый сервер, который отключился во время сессии, и повторяет попытку первого подключения HTTP- или SSE-сервера после временной ошибки. Для stdio-сервера см. [Stdio-серверы, которые завершаются или не запускаются](#stdio-servers-that-exit-or-fail-to-start).386Claude Code переподключает удалённый сервер, отключившийся посреди сессии, и повторяет первую попытку подключения HTTP- или SSE-сервера после временной ошибки. Для stdio-сервера см. [Stdio-серверы, которые завершают работу или не запускаются](#stdio-servers-that-exit-or-fail-to-start).
387 387
388#### Отключения удалённого сервера во время сессии388#### Отключение удалённого сервера посреди сессии
389 389
390Сначала Claude Code пытается переподключить отключившийся удалённый сервер до пяти раз с экспоненциальной задержкой, начиная с задержки в одну секунду и удваивая её каждый раз:390Сначала Claude Code пытается переподключить отключившийся удалённый сервер до пяти раз с экспоненциальной задержкой, начиная с задержки в одну секунду и удваивая её каждый раз:
391 391
392* **В интерактивной сессии**: `/mcp` показывает сервер как ожидающий, пока Claude Code переподключается. После пяти неудачных попыток Claude Code помечает сервер как сбойный или как требующий аутентификации, если серверу снова нужна авторизация. Когда он помечает сервер как сбойный, вы видите уведомление `MCP server "<name>" disconnected · open /mcp to reconnect`. Вы можете повторить попытку вручную в `/mcp`.392* **В интерактивной сессии**: `/mcp` показывает сервер как ожидающий, пока Claude Code переподключается. После пяти неудачных попыток Claude Code помечает сервер как сбойный или как требующий аутентификации, если сервер нужно авторизовать заново. Когда он помечает сервер как сбойный, вы видите уведомление `MCP server "<name>" disconnected · open /mcp to reconnect`. Вы можете повторить попытку вручную из `/mcp`.
393* **В запусках [`claude -p`](https://code.claude.com/docs/ru/headless) и сессиях [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md)**: Claude Code делает те же пять попыток, без панели `/mcp` для их отображения. Если все пять неудачны, запуск продолжается без инструментов сервера:393* **В запусках [`claude -p`](https://code.claude.com/docs/ru/headless) и сессиях [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md)**: Claude Code делает те же пять попыток, но без панели `/mcp`, где они отображались бы. Если все пять завершаются неудачей, запуск продолжается без инструментов сервера:
394 * **После временной ошибки, такой как ответ 5xx или таймаут**: Claude Code продолжает повторять попытки для HTTP- или SSE-сервера в фоне. Повторные попытки продолжаются примерно до получаса, и инструменты сервера снова становятся доступны, когда одна из них подключается. До тех пор сессия Agent SDK сообщает [статус](https://code.claude.com/docs/ru/agent-sdk/mcp.md#error-handling) `failed`, и ваш код может [переподключить сервер](https://code.claude.com/docs/ru/agent-sdk/mcp.md#error-handling). Чтобы переподключить его в `claude -p`, запустите его заново.394 * **После временной ошибки, например ответа 5xx или таймаута**: Claude Code продолжает повторять попытки подключения HTTP- или SSE-сервера в фоновом режиме. Повторные попытки продолжаются примерно до получаса, и инструменты сервера снова становятся доступны, когда одна из них завершается подключением. До тех пор сессия Agent SDK сообщает [статус](https://code.claude.com/docs/ru/agent-sdk/mcp.md#error-handling) `failed`, и ваш код может [переподключить сервер](https://code.claude.com/docs/ru/agent-sdk/mcp.md#error-handling). Чтобы переподключить его в `claude -p`, запустите выполнение заново.
395 * **Когда сервер [требует повторного входа](#authenticate-with-remote-mcp-servers)**: Claude Code прекращает повторные попытки, а сессия Agent SDK сообщает статус сервера `needs-auth`. Войдите с помощью [`claude mcp login <name>`](#authenticate-from-the-command-line) в своей оболочке. Затем запустите его заново или, в сессии Agent SDK, вместо этого [переподключите сервер](https://code.claude.com/docs/ru/agent-sdk/mcp.md#error-handling).395 * **Когда сервер [требует повторного входа](#authenticate-with-remote-mcp-servers)**: Claude Code прекращает повторные попытки, а сессия Agent SDK сообщает статус сервера `needs-auth`. Войдите с помощью [`claude mcp login <name>`](#authenticate-from-the-command-line) в оболочке. Затем запустите выполнение заново или, в сессии Agent SDK, вместо этого [переподключите сервер](https://code.claude.com/docs/ru/agent-sdk/mcp.md#error-handling).
396 396
397#### Неудачные первые подключения397#### Неудачные первые подключения
398 398
399Когда первое подключение HTTP- или SSE-сервера не удаётся из-за временной ошибки, такой как ответ 5xx, отказ в соединении или таймаут, Claude Code повторяет попытку до трёх раз. Если подключение по-прежнему не удаётся, Claude Code помечает сервер как сбойный.399Когда первое подключение HTTP- или SSE-сервера завершается временной ошибкой, например ответом 5xx, отказом в соединении или таймаутом, Claude Code повторяет попытку до трёх раз. Если подключиться так и не удаётся, Claude Code помечает сервер как сбойный.
400 400
401Эти повторные попытки не применяются в следующих случаях:401Эти повторные попытки не применяются в следующих случаях:
402 402
403* Первое подключение stdio-сервера. Чтобы попробовать снова, см. [Stdio-серверы, которые завершаются или не запускаются](#stdio-servers-that-exit-or-fail-to-start)403* Первое подключение stdio-сервера. Чтобы попробовать снова, см. [Stdio-серверы, которые завершают работу или не запускаются](#stdio-servers-that-exit-or-fail-to-start)
404* Первое подключение WebSocket-сервера. Чтобы попробовать снова в интерактивной сессии в терминале, выберите **Reconnect** в меню сервера в `/mcp`404* Первое подключение WebSocket-сервера. Чтобы попробовать снова в интерактивной сессии терминала, выберите **Reconnect** в меню сервера в `/mcp`
405* Ошибка аутентификации или «не найдено», потому что для её устранения требуется изменить конфигурацию. Когда [`headersHelper`](#use-dynamic-headers-for-custom-authentication) — единственный источник заголовка `Authorization` для сервера, Claude Code всё равно повторяет попытку при ошибке аутентификации, потому что перезапускает helper при каждой попытке и может получить свежие учётные данные405* Ошибка аутентификации или «не найдено», поскольку для её устранения требуется изменить конфигурацию. Когда [`headersHelper`](#use-dynamic-headers-for-custom-authentication) — единственный источник заголовка `Authorization` для сервера, Claude Code всё равно повторяет попытку после ошибки аутентификации, поскольку он заново запускает helper при каждой попытке и может получить свежие учётные данные
406 406
407#### Stdio-серверы, которые завершаются или не запускаются407#### Stdio-серверы, которые завершают работу или не запускаются
408 408
409Чтобы снова запустить stdio-сервер, смотрите столбец, соответствующий тому, что с ним произошло. Найдите свою строку по тому, как вы запускаете Claude Code: интерактивная сессия, запуск `claude -p` или сессия Agent SDK.409Чтобы снова запустить stdio-сервер, смотрите столбец, соответствующий тому, что с ним произошло. Найдите свою строку по тому, как вы запускаете Claude Code: интерактивная сессия, запуск `claude -p` или сессия Agent SDK.
410 410
411| Как вы запускаете Claude Code | Процесс сервера завершается во время сессии | Первое подключение сервера не удаётся |411| Как вы запускаете Claude Code | Процесс сервера завершается посреди сессии | Первое подключение сервера завершается неудачей |
412| - | - | - |412| - | - | - |
413| Интерактивная сессия | Claude Code помечает сервер как сбойный. Чтобы снова запустить его, выберите **Reconnect** в меню сервера в `/mcp` | Claude Code помечает сервер как сбойный. Чтобы снова запустить его, выберите **Reconnect** в меню сервера в `/mcp` |413| Интерактивная сессия | Claude Code помечает сервер как сбойный. Чтобы запустить его снова, выберите **Reconnect** в меню сервера в `/mcp` | Claude Code помечает сервер как сбойный. Чтобы запустить его снова, выберите **Reconnect** в меню сервера в `/mcp` |
414| Запуск `claude -p` | Claude Code снова запускает сервер, когда Claude в следующий раз вызывает один из инструментов сервера, и вызов выполняется, как только сервер подключится | Запуск продолжается без инструментов сервера. Чтобы Claude Code снова попробовал подключиться, запустите его заново. Если сервер предоставляется плагином, новые запуски пропускают подключение в течение 15 минут после сбоя, поэтому сначала подождите это время или [повторите попытку раньше](https://code.claude.com/docs/ru/errors.md#skipping-connection-recent-failure-cached) |414| Запуск `claude -p` | Claude Code снова запускает сервер при следующем вызове Claude одного из инструментов сервера, и вызов выполняется, как только сервер подключится | Запуск продолжается без инструментов сервера. Чтобы Claude Code снова попробовал подключиться, запустите выполнение заново. Когда сервер предоставлен плагином, новые запуски пропускают подключение в течение 15 минут после сбоя, поэтому сначала подождите это время или [повторите попытку раньше](https://code.claude.com/docs/ru/errors.md#skipping-connection-recent-failure-cached) |
415| Сессия Agent SDK | Claude Code снова запускает сервер, когда Claude в следующий раз вызывает один из инструментов сервера, и вызов выполняется, как только сервер подключится | Сессия продолжается без инструментов сервера. Ваш код может [переподключить сервер](https://code.claude.com/docs/ru/agent-sdk/mcp.md#error-handling) |415| Сессия Agent SDK | Claude Code снова запускает сервер при следующем вызове Claude одного из инструментов сервера, и вызов выполняется, как только сервер подключится | Сессия продолжается без инструментов сервера. Ваш код может [переподключить сервер](https://code.claude.com/docs/ru/agent-sdk/mcp.md#error-handling) |
416 416
417#### Неудачные запросы обнаружения417#### Неудачные запросы обнаружения
418 418
419После подключения сервера Claude Code отправляет ему запросы обнаружения возможностей, такие как `tools/list`, `prompts/list` и `resources/list`. Claude Code повторяет эти запросы до трёх раз с короткой задержкой после временной сетевой или серверной ошибки. Он не повторяет попытки при ошибках аутентификации, ответах 4xx или таймаутах запросов.419После подключения сервера Claude Code отправляет ему запросы обнаружения возможностей, такие как `tools/list`, `prompts/list` и `resources/list`. После временной сетевой или серверной ошибки Claude Code повторяет эти запросы до трёх раз с короткой задержкой. Он не повторяет запросы после ошибок аутентификации, ответов 4xx или таймаутов запросов.
420 420
421#### Самостоятельная повторная попытка для сбойных серверов421#### Самостоятельное повторное подключение сбойных серверов
422 422
423Чтобы повторить попытку для всех серверов, которые дали сбой или требуют аутентификации, выполните `/mcp reconnect all` в промпте Claude Code в интерактивной сессии в терминале. Для этого требуется Claude Code v2.1.284 или новее. Более ранние версии выводят `MCP server "all" not found`.423Чтобы повторить подключение всех серверов со сбоем или требующих аутентификации, выполните `/mcp reconnect all` в промпте Claude Code в интерактивной сессии терминала. Для этого требуется Claude Code v2.1.284 или новее. Более ранние версии выводят `MCP server "all" not found`.
424 424
425#### Как Claude узнаёт о сбое сервера425#### Как Claude узнаёт о сбое сервера
426 426
427Сообщает ли Claude Code Claude о настроенном сервере, который не смог подключиться, зависит от [поиска инструментов](#scale-with-mcp-tool-search), который включён по умолчанию:427Сообщает ли Claude Code модели Claude о настроенном сервере, который не смог подключиться, зависит от [поиска инструментов](#scale-with-mcp-tool-search), который включён по умолчанию:
428 428
429* С поиском инструментов Claude Code сообщает Claude, какой сервер дал сбой и какова ошибка подключения, поэтому Claude сообщает о сбое подключения в своём ответе. Claude Code включает ту же информацию в результаты `ToolSearch`, которые не нашли подходящего инструмента.429* С поиском инструментов Claude Code сообщает Claude, какой сервер дал сбой, и его ошибку подключения, поэтому Claude сообщает о сбое подключения в своём ответе. Claude Code включает ту же информацию в результаты `ToolSearch`, не нашедшие подходящего инструмента.
430* В любой [конфигурации без поиска инструментов](#configure-tool-search) Claude Code не сообщает Claude о неудачных подключениях серверов.430* В любой [конфигурации без поиска инструментов](#configure-tool-search) Claude Code не сообщает Claude о неудачных подключениях серверов.
431 431
432### Отправка сообщений через каналы432### Отправка сообщений через каналы
433 433
434MCP-сервер также может отправлять сообщения прямо в вашу сессию, чтобы Claude мог реагировать на внешние события, такие как результаты CI, оповещения мониторинга или сообщения чата. Чтобы включить это, ваш сервер объявляет возможность `claude/channel`, а вы включаете его флагом `--channels` при запуске. См. [Каналы](https://code.claude.com/docs/ru/channels.md), чтобы использовать официально поддерживаемый канал, или [Справочник по каналам](https://code.claude.com/docs/ru/channels-reference.md), чтобы создать собственный.434MCP-сервер также может отправлять сообщения прямо в вашу сессию, чтобы Claude мог реагировать на внешние события, такие как результаты CI, оповещения мониторинга или сообщения чата. Чтобы включить это, ваш сервер объявляет возможность `claude/channel`, а вы явно включаете его флагом `--channels` при запуске. См. [Каналы](https://code.claude.com/docs/ru/channels.md), чтобы использовать официально поддерживаемый канал, или [Справочник по каналам](https://code.claude.com/docs/ru/channels-reference.md), чтобы создать собственный.
435 435
436В [среде выполнения v2](#mcp-client-runtimes) сервер канала, который согласует ревизию протокола MCP 2026-07-28, не может доставлять сообщения канала, поэтому Claude Code не регистрирует его как канал. Сервер канала, который не поддерживает эту ревизию, подключается по более раннему рукопожатию и регистрируется как прежде.436В [среде выполнения v2](#mcp-client-runtimes) сервер канала, согласовавший ревизию протокола MCP 2026-07-28, не может доставлять сообщения каналов, поэтому Claude Code не регистрирует его как канал. Сервер канала, не поддерживающий эту ревизию, подключается по более раннему рукопожатию и регистрируется как прежде.
437 437
438Claude Code по умолчанию запрашивает эту ревизию у stdio-серверов. Чтобы оставить stdio-сервер канала на более раннем рукопожатии, установите [`MCP_PROTOCOL_NEGOTIATION`](https://code.claude.com/docs/ru/env-vars) в `legacy`, что оставляет на нём все серверы.438По умолчанию Claude Code запрашивает эту ревизию у stdio-серверов. Чтобы оставить stdio-сервер канала на более раннем рукопожатии, задайте [`MCP_PROTOCOL_NEGOTIATION`](https://code.claude.com/docs/ru/env-vars) равным `legacy`, что оставляет на нём все серверы.
439 439
440> [!TIP]440> [!TIP]
441>441>
442> Советы:442> Советы:
443>443>
444> * Используйте флаг `-s` или `--scope`, чтобы указать, где хранится конфигурация:444> * Используйте флаг `-s` или `--scope`, чтобы указать, где хранится конфигурация:
445> * `local` (по умолчанию): доступно только вам в текущем проекте445> * `local` (по умолчанию): доступна только вам в текущем проекте
446> * `project`: доступно всем в проекте через файл `.mcp.json`446> * `project`: доступна всем участникам проекта через файл `.mcp.json`
447> * `user`: доступно вам во всех проектах447> * `user`: доступна вам во всех проектах
448> * Устанавливайте переменные окружения с помощью флагов `-e` или `--env` (например, `-e KEY=value`)448> * Задавайте переменные окружения флагами `-e` или `--env` (например, `-e KEY=value`)
449> * Флаги `--transport` и `--header` также принимают короткие формы `-t` и `-H`449> * Флаги `--transport` и `--header` также принимают короткие формы `-t` и `-H`
450> * Настройте таймаут запуска MCP-сервера с помощью переменной окружения `MCP_TIMEOUT` (например, `MCP_TIMEOUT=10000 claude` устанавливает таймаут в 10 секунд)450> * Настройте таймаут запуска MCP-сервера с помощью переменной окружения `MCP_TIMEOUT` (например, `MCP_TIMEOUT=10000 claude` задаёт таймаут 10 секунд)
451> * Задайте таймаут выполнения инструментов для отдельного сервера, добавив поле `timeout` в миллисекундах в запись `.mcp.json` этого сервера, например `"timeout": 600000` для десяти минут. Это переопределяет переменную окружения `MCP_TOOL_TIMEOUT` только для этого сервера451> * Задайте таймаут выполнения инструментов для отдельного сервера, добавив поле `timeout` в миллисекундах в запись этого сервера в `.mcp.json`, например `"timeout": 600000` для десяти минут. Это переопределяет переменную окружения `MCP_TOOL_TIMEOUT` только для этого сервера
452> * Claude Code показывает предупреждение, когда вывод инструмента MCP превышает 10 000 токенов, и по умолчанию ограничивает вывод 25 000 токенами. Чтобы изменить лимит токенов, установите переменную окружения `MAX_MCP_OUTPUT_TOKENS`, например `MAX_MCP_OUTPUT_TOKENS=50000`. Порог предупреждения фиксирован. Если сервер не повышает собственный лимит инструмента, успешные текстовые результаты длиннее 50 000 символов сохраняются в файл независимо от этой переменной. См. [Ограничения и предупреждения вывода MCP](#mcp-output-limits-and-warnings)452> * Claude Code показывает предупреждение, когда вывод инструмента MCP превышает 10 000 токенов, и по умолчанию ограничивает вывод 25 000 токенами. Чтобы изменить лимит токенов, задайте переменную окружения `MAX_MCP_OUTPUT_TOKENS`, например `MAX_MCP_OUTPUT_TOKENS=50000`. Порог предупреждения фиксирован. Если сервер не повышает собственный лимит инструмента, успешные текстовые результаты длиннее 50 000 символов сохраняются в файл независимо от этой переменной. См. [Лимиты вывода MCP и предупреждения](#mcp-output-limits-and-warnings)
453> * Используйте `/mcp` для аутентификации на удалённых серверах, требующих аутентификации OAuth 2.0453> * Используйте `/mcp` для аутентификации на удалённых серверах, требующих аутентификации OAuth 2.0
454 454
455### Ограничения времени для вызовов MCP-инструментов455### Ограничения времени для вызовов инструментов MCP
456 456
457Чтобы ограничить время выполнения вызова MCP-инструмента:457Чтобы ограничить время выполнения вызова инструмента MCP:
458 458
459* **Для отдельного сервера**: добавьте поле `timeout` в миллисекундах в запись конфигурации этого сервера459* **Для отдельного сервера**: добавьте поле `timeout` в миллисекундах в запись конфигурации этого сервера
460* **Для всех серверов**: установите [`MCP_TOOL_TIMEOUT`](https://code.claude.com/docs/ru/env-vars)460* **Для всех серверов**: задайте [`MCP_TOOL_TIMEOUT`](https://code.claude.com/docs/ru/env-vars)
461 461
462`timeout` отдельного сервера — это жёсткий лимит реального времени на каждый вызов инструмента, и уведомления о прогрессе от сервера его не продлевают. Значения меньше 1000 игнорируются, и используется `MCP_TOOL_TIMEOUT` или его значение по умолчанию около 28 часов, если эта переменная не установлена. Для HTTP-, SSE-сервера или сервера [коннектора claude.ai](https://code.claude.com/docs/ru/mcp.md#use-mcp-servers-from-claude-ai) также есть второй таймер на каждый запрос, который охватывает каждый запрос вплоть до первого байта ответа сервера. Claude Code устанавливает этот таймер в наибольшее из трёх значений: 60 секунд, таймаут инструментов, применяемый к серверу, и `MCP_TIMEOUT`. Значение по умолчанию 28 часов для неустановленного `MCP_TOOL_TIMEOUT` в этом сравнении не участвует, а значение меньше 60 секунд не сокращает таймер. У stdio- и WebSocket-серверов нет таймера на каждый запрос.462`timeout` для отдельного сервера — это жёсткое ограничение по реальному времени на каждый вызов инструмента, и уведомления о ходе выполнения от сервера не продлевают его. Значения ниже 1000 игнорируются, и используется `MCP_TOOL_TIMEOUT` или, если эта переменная не задана, её значение по умолчанию — около 28 часов. Для HTTP-, SSE-сервера или [коннектора claude.ai](https://code.claude.com/docs/ru/mcp.md#use-mcp-servers-from-claude-ai) существует также второй таймер на каждый запрос, который охватывает каждый запрос вплоть до первого байта ответа сервера. Claude Code устанавливает этот таймер равным наибольшему из трёх значений: 60 секунд, таймаут инструментов, применимый к серверу, и `MCP_TIMEOUT`. Значение по умолчанию в 28 часов для незаданной `MCP_TOOL_TIMEOUT` в этом сравнении не участвует, а значение меньше 60 секунд не сокращает таймер. У stdio- и WebSocket-серверов нет таймера на каждый запрос.
463 463
464`timeout` отдельного сервера не менее 1000 также служит нижней границей для описанного ниже таймаута бездействия: Claude Code никогда не прерывает вызовы инструментов этого сервера из-за бездействия раньше, чем истечёт `timeout` этого сервера.464`timeout` для отдельного сервера, равный не менее 1000, также служит нижней границей для описанного ниже таймаута простоя: Claude Code никогда не прерывает вызовы инструментов этого сервера из-за простоя раньше, чем истечёт `timeout` для этого сервера.
465 465
466Вызов инструмента MCP-сервера, который в течение окна бездействия не отправляет ни ответа, ни уведомления о прогрессе, прерывается с ошибкой, не дожидаясь лимита реального времени. Таймаут бездействия применяется ко всем типам серверов, кроме серверов IDE и встроенных в процесс серверов SDK. Окно бездействия по умолчанию составляет пять минут для HTTP-, SSE-, WebSocket-серверов и серверов [коннекторов claude.ai](#use-mcp-servers-from-claude-ai) и 30 минут для stdio-серверов.466Вызов инструмента MCP-сервера, который не присылает ни ответа, ни уведомления о ходе выполнения в течение окна простоя, прерывается с ошибкой вместо ожидания ограничения по реальному времени. Таймаут простоя применяется ко всем типам серверов, кроме серверов IDE и внутрипроцессных серверов SDK. Окно простоя по умолчанию составляет пять минут для HTTP-, SSE-, WebSocket-серверов и [коннекторов claude.ai](#use-mcp-servers-from-claude-ai) и 30 минут для stdio-серверов.
467 467
468Установите переменную окружения [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](https://code.claude.com/docs/ru/env-vars) в миллисекундах, чтобы изменить окно бездействия, или установите её в `0`, чтобы отключить проверку.468Задайте переменную окружения [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](https://code.claude.com/docs/ru/env-vars) в миллисекундах, чтобы изменить окно простоя, или задайте её равной `0`, чтобы отключить проверку.
469 469
470Эти таймауты ограничивают, как долго может выполняться вызов, но не всегда то, как долго он блокирует сессию: вызов в основном диалоге, который выполняется дольше двух минут, сначала переходит в фоновую задачу. См. [Автоматический перевод долгих вызовов инструментов в фон](#automatic-backgrounding-of-long-tool-calls).470Эти таймауты ограничивают, сколько может длиться вызов, но не всегда то, как долго он блокирует сессию: вызов в основном диалоге, который длится дольше двух минут, сначала переносится в фоновую задачу. См. [Автоматический перенос длительных вызовов инструментов в фон](#automatic-backgrounding-of-long-tool-calls).
471 471
472### Автоматический перевод долгих вызовов инструментов в фон472### Автоматический перенос длительных вызовов инструментов в фон
473 473
474Если подробный вид фонового вызова в [`/tasks`](https://code.claude.com/docs/ru/commands#all-commands) показывает `runs on the server; survives exiting this session`, см. [MCP-задачи, выполняемые на сервере](#mcp-tasks-that-run-on-the-server).474Если в подробном представлении фонового вызова в [`/tasks`](https://code.claude.com/docs/ru/commands#all-commands) указано `runs on the server; survives exiting this session`, см. [Задачи MCP, выполняемые на сервере](#mcp-tasks-that-run-on-the-server).
475 475
476Вызов инструмента MCP в основном диалоге, который всё ещё выполняется через две минуты, переходит в фоновую задачу, а не блокирует сессию. Claude сразу получает ID задачи и продолжает работу, а результат приходит в виде уведомления задачи, когда вызов завершается.476Вызов инструмента MCP в основном диалоге, который всё ещё выполняется через две минуты, переносится в фоновую задачу, а не блокирует сессию. Claude сразу получает ID задачи и продолжает работу, а результат приходит в виде уведомления задачи, когда вызов завершается.
477 477
478Задача отображается в [`/tasks`](https://code.claude.com/docs/ru/commands#all-commands), где вы также можете её остановить, и она не сохраняется после выхода из сессии. В записи задачи отображается последний прогресс, о котором сообщил сервер. Если вы остановите задачу, Claude Code отменит вызов и сообщит Claude, что результата не будет. Остановка не гарантирует, что остановится сервер: он мог уже выполнить часть работы или всё же завершить её.478Задача появляется в [`/tasks`](https://code.claude.com/docs/ru/commands#all-commands), где её также можно остановить, и не сохраняется после выхода из сессии. Запись задачи показывает последний ход выполнения, о котором сообщил сервер. Если вы остановите задачу, Claude Code отменит вызов и сообщит Claude, что результата не будет. Остановка не гарантирует, что сервер прекратит работу: он мог уже выполнить часть работы или всё ещё может её завершить.
479 479
480Ограничения на каждый вызов продолжают действовать, пока вызов выполняется в фоне: лимит реального времени, заданный `timeout` отдельного сервера или [`MCP_TOOL_TIMEOUT`](https://code.claude.com/docs/ru/env-vars), и таймаут бездействия, заданный [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](https://code.claude.com/docs/ru/env-vars).480Ограничения на вызов продолжают действовать, пока вызов выполняется в фоне: ограничение по реальному времени, заданное `timeout` для отдельного сервера или [`MCP_TOOL_TIMEOUT`](https://code.claude.com/docs/ru/env-vars), и таймаут простоя, заданный [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](https://code.claude.com/docs/ru/env-vars).
481 481
482Чтобы изменить или отключить автоматический перевод в фон:482Чтобы изменить или отключить автоматический перенос в фон:
483 483
484* Установите переменную окружения [`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/ru/env-vars) в миллисекундах, чтобы изменить порог, или в `0`, чтобы отключить автоматический перевод в фон. При `0` Claude также [ждёт MCP-задачи](#make-claude-wait-for-the-result-of-an-mcp-task) в интерактивной сессии484* Задайте переменную окружения [`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/ru/env-vars) в миллисекундах, чтобы изменить порог, или задайте её равной `0`, чтобы отключить автоматический перенос в фон. При `0` Claude также [ждёт задачи MCP](#make-claude-wait-for-the-result-of-an-mcp-task) в интерактивной сессии
485* Задайте [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/ru/env-vars) равной `1`, чтобы отключить автоматический перевод в фон и [фоновые команды](https://code.claude.com/docs/ru/tools-reference.md#background-commands)485* Задайте [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/ru/env-vars) равной `1`, чтобы отключить автоматический перенос в фон и [фоновые команды](https://code.claude.com/docs/ru/tools-reference.md#background-commands)
486 486
487Некоторые вызовы никогда не переводятся в фон:487Некоторые вызовы никогда не переносятся в фон:
488 488
489* Вызовы из [субагентов](https://code.claude.com/docs/ru/sub-agents.md); Claude Code переводит в фон только вызовы основного диалога489* Вызовы из [субагентов](https://code.claude.com/docs/ru/sub-agents.md); Claude Code переносит в фон только вызовы основного диалога
490* Вызовы к серверам IDE490* Вызовы серверов IDE
491* Вызовы в [неинтерактивном режиме](https://code.claude.com/docs/ru/headless.md), если только `CLAUDE_AUTO_BACKGROUND_TASKS` не установлена в `1`, так как однократный запуск может завершиться до получения результата491* Вызовы в [неинтерактивном режиме](https://code.claude.com/docs/ru/headless.md), если `CLAUDE_AUTO_BACKGROUND_TASKS` не задана равной `1`, поскольку однократный запуск может завершиться до прихода результата
492 492
493Вызов, ожидающий открытого [диалогового окна elicitation](#respond-to-mcp-elicitation-requests), не переводится в фон, пока окно открыто; сервер ждёт вашего ввода, а не работает медленно, поэтому Claude Code откладывает перевод до закрытия диалогового окна.493Вызов, ожидающий ответа в открытом [диалоговом окне elicitation](#respond-to-mcp-elicitation-requests), не переносится в фон, пока диалоговое окно открыто; сервер заблокирован в ожидании вашего ввода, а не работает медленно, поэтому Claude Code откладывает перенос до закрытия диалогового окна.
494 494
495### MCP-задачи, выполняемые на сервере495### Задачи MCP, выполняемые на сервере
496 496
497MCP-задача — это длительная работа, например экспорт отчёта или сборка, которую MCP-сервер выполняет сам с помощью [расширения MCP tasks](https://modelcontextprotocol.io/extensions/tasks/overview). Вызов инструмента Claude возвращается, как только сервер принимает работу, поэтому Claude продолжает работать, если только вы не [заставите Claude ждать](#make-claude-wait-for-the-result-of-an-mcp-task). Когда работа завершается, об этом сообщается в транскрипте, и Claude получает результат. Попросите Claude показать его.497Задача MCP — это длительная работа, например экспорт отчёта или сборка, которую MCP-сервер выполняет сам с помощью [расширения MCP tasks](https://modelcontextprotocol.io/extensions/tasks/overview). Вызов инструмента Claude возвращается, как только сервер принимает работу, поэтому Claude продолжает работать, если только вы не [заставите Claude ждать](#make-claude-wait-for-the-result-of-an-mcp-task). Когда работа завершается, об этом сообщается в транскрипте, и Claude получает результат. Попросите Claude его показать.
498 498
499Тем временем в нижней панели отображается счётчик, например `1 MCP task`, а Claude Code отслеживает задачу, проверяя её статус у сервера. Задача на удалённом сервере продолжает выполняться после вашего выхода. Чтобы снова отслеживать её, [возобновите ту же сессию](#exit-clear-or-resume-while-an-mcp-task-runs).499Тем временем нижняя панель показывает счётчик, например `1 MCP task`, а Claude Code отслеживает задачу, проверяя её статус на сервере. Задача на удалённом сервере продолжает выполняться после вашего выхода. Чтобы снова отслеживать её, [возобновите ту же сессию](#exit-clear-or-resume-while-an-mcp-task-runs).
500 500
501> [!NOTE]501> [!NOTE]
502>502>
503> MCP-задачи доступны в публичной бета-версии в Claude Code CLI и требуют Claude Code v2.1.304 или новее. В разделе [Что нужно, чтобы вызов стал MCP-задачей](#requirements-for-mcp-tasks) перечислены сессии и серверы, которые их получают.503> Задачи MCP доступны в публичной бета-версии в Claude Code CLI и требуют Claude Code v2.1.304 или новее. В разделе [Что нужно, чтобы вызов стал задачей MCP](#requirements-for-mcp-tasks) перечислены сессии и серверы, которые их получают.
504 504
505#### Остановка MCP-задачи или получение её результата505#### Остановка задачи MCP или получение её результата
506 506
507Чтобы остановить выполняющуюся задачу, выберите её в [`/tasks`](https://code.claude.com/docs/ru/commands#all-commands) и нажмите `x` или попросите об этом Claude. Claude Code прекращает отслеживать задачу и просит сервер отменить её, хотя сервер всё равно может её завершить. Сначала переподключите отключённый сервер из `/mcp`, иначе запрос на отмену не будет отправлен, а Claude Code забудет задачу и не сможет снова её отслеживать. Нажатие `Esc` не останавливает фоновую задачу.507Чтобы остановить выполняющуюся задачу, выберите её в [`/tasks`](https://code.claude.com/docs/ru/commands#all-commands) и нажмите `x` или попросите об этом Claude. Claude Code прекращает отслеживать задачу и просит сервер отменить её, хотя сервер может всё равно её завершить. Сначала переподключите отключённый сервер из `/mcp`, иначе запрос на отмену не будет отправлен, а Claude Code забудет задачу и не сможет снова её отслеживать. Нажатие `Esc` не останавливает фоновую задачу.
508 508
509Когда задача завершается, в транскрипте появляется строка вроде этой:509Когда задача завершается, в транскрипте появляется строка вроде этой:
510 510
512MCP task <server task id> (<server>/<tool>) completed.512MCP task <server task id> (<server>/<tool>) completed.
513```513```
514 514
515Результат передаётся Claude, а не в транскрипт, поэтому попросите Claude его показать. Если Claude бездействует в момент прихода результата, Claude начинает работать с ним без запроса.515Результат передаётся Claude, а не в транскрипт, поэтому попросите Claude его показать. Если Claude простаивает в момент прихода результата, Claude начинает работать с ним без вашего запроса.
516 516
517#### Ответ на вопрос от MCP-задачи517#### Ответ на вопрос от задачи MCP
518 518
519Выполняющаяся задача может открыть [диалоговое окно elicitation](#respond-to-mcp-elicitation-requests), чтобы запросить у вас ввод. Пока открыт `/tasks`, диалоговое окно скрыто, поэтому закройте `/tasks`, чтобы ответить. Отказ или нажатие `Esc` — это ответ серверу, который затем решает, продолжается ли задача.519Выполняющаяся задача может открыть [диалоговое окно elicitation](#respond-to-mcp-elicitation-requests), чтобы запросить у вас ввод. Пока открыт `/tasks`, диалоговое окно скрыто, поэтому закройте `/tasks`, чтобы ответить. Отказ или нажатие `Esc` — это ответ серверу, который затем решает, продолжать ли задачу.
520 520
521В [неинтерактивной](https://code.claude.com/docs/ru/headless.md) сессии Claude Code просит сервер отменить задачу, которая запрашивает ввод, не запуская ваши [хуки `Elicitation`](https://code.claude.com/docs/ru/hooks#elicitation) и не вызывая коллбэк `onElicitation` из Agent SDK.521В [неинтерактивной](https://code.claude.com/docs/ru/headless.md) сессии Claude Code просит сервер отменить задачу, запрашивающую ввод, не запуская ваши [хуки `Elicitation`](https://code.claude.com/docs/ru/hooks#elicitation) и не вызывая callback `onElicitation` из Agent SDK.
522 522
523#### Выход, очистка или возобновление во время выполнения MCP-задачи523#### Выход, очистка или возобновление во время выполнения задачи MCP
524 524
525Задача на удалённом сервере продолжает выполняться после вашего выхода. Процесс stdio-сервера останавливается при выходе из Claude Code, хотя его задачи показывают `runs on the server; survives exiting this session` в `/tasks`. Если в документации этого сервера не сказано, что работа переживает процесс, сначала дайте этим задачам завершиться или остановите их в `/tasks`.525Задача на удалённом сервере продолжает выполняться после вашего выхода. Процесс stdio-сервера останавливается при выходе из Claude Code, хотя его задачи отображаются в `/tasks` как `runs on the server; survives exiting this session`. Если в документации этого сервера не сказано, что работа переживает процесс, дайте таким задачам завершиться или сначала остановите их в `/tasks`.
526 526
527| Ситуация | Что происходит с задачей | Что можно сделать |527| Ситуация | Что происходит с задачей | Что вы можете сделать |
528| - | - | - |528| - | - | - |
529| Вы выполняете `/clear` или `/branch` либо переходите через `/resume` в другую сессию | Пока Claude Code остаётся открытым, результат приходит в ваш текущий диалог | После выхода выполните `claude --resume` для сессии, в которой задача была запущена |529| Вы выполняете `/clear` или `/branch` либо `/resume` другой сессии | Пока Claude Code остаётся открытым, результат приходит в ваш текущий диалог | После выхода выполните `claude --resume` для сессии, в которой началась задача |
530| Вы выходите из Claude Code | Ни один вариант выхода не отменяет задачу удалённого сервера, даже если диалоговое окно выхода указывает её в разделе `The following will stop when you exit:` | Сначала остановите её в `/tasks` или позже возобновите ту же сессию |530| Вы выходите из Claude Code | Ни один вариант выхода не отменяет задачу удалённого сервера, даже когда диалоговое окно выхода перечисляет её под `The following will stop when you exit:` | Сначала остановите её в `/tasks` или возобновите ту же сессию позже |
531| Вы возвращаетесь в сессию задачи в интерактивном режиме: `claude --resume`, `claude --continue` или `/resume` | После подключения сервера Claude Code снова отслеживает задачу, и Claude получает результат, если она тем временем завершилась, а сервер всё ещё о ней знает | Не меняйте имя и настройки подключения сервера |531| Вы возвращаетесь в сессию задачи интерактивно: `claude --resume`, `claude --continue` или `/resume` | Как только сервер подключится, Claude Code снова отслеживает задачу, и Claude получает результат, если она завершилась за это время и сервер всё ещё о ней знает | Не меняйте имя сервера и настройки подключения |
532| Вы возобновляете сессию задачи с `--resume` или `--continue` в однократном запуске `claude -p "<prompt>"` | Этот запуск не отслеживает задачу | Возобновите её в интерактивном режиме или с `--input-format stream-json` |532| Вы возобновляете сессию задачи с `--resume` или `--continue` в однократном запуске `claude -p "<prompt>"` | Этот запуск не отслеживает задачу | Возобновите интерактивно или с `--input-format stream-json` |
533| Вы начинаете новую сессию или используете `--fork-session` | Новая сессия не отслеживает задачу | Возобновите сессию, в которой она была запущена |533| Вы начинаете новую сессию или используете `--fork-session` | Новая сессия не отслеживает задачу | Возобновите сессию, в которой она началась |
534 534
535#### Что нужно, чтобы вызов стал MCP-задачей535#### Что нужно, чтобы вызов стал задачей MCP
536 536
537Вызов инструмента становится MCP-задачей, только если выполняются все эти условия:537Вызов инструмента становится задачей MCP, только если выполняются все эти условия:
538 538
539* Сервер поддерживает задачи539* Сервер поддерживает задачи
540* Сервер является HTTP-сервером, stdio-сервером или сервером коннектора claude.ai, подключённым по [ревизии протокола 2026-07-28](#mcp-client-runtimes). Установка [`MCP_SDK_GENERATION=v1` или `MCP_PROTOCOL_NEGOTIATION=legacy`](https://code.claude.com/docs/ru/env-vars) это исключает540* Сервер — это HTTP-, stdio-сервер или коннектор claude.ai, подключённый на [ревизии протокола 2026-07-28](#mcp-client-runtimes). Задание [`MCP_SDK_GENERATION=v1` или `MCP_PROTOCOL_NEGOTIATION=legacy`](https://code.claude.com/docs/ru/env-vars) это исключает
541* Сессия [получает флаги функций](https://code.claude.com/docs/ru/env-vars.md#features-that-need-feature-flag-fetching), то есть не у стороннего провайдера, такого как Amazon Bedrock, и не с отключённой телеметрией или получением флагов541* Сессия [получает флаги функций](https://code.claude.com/docs/ru/env-vars.md#features-that-need-feature-flag-fetching), то есть не работает через стороннего провайдера, например Amazon Bedrock, и в ней не отключены телеметрия или получение флагов
542* Anthropic включила MCP-задачи для вашего типа сессии. В v2.1.304 или новее это охватывает сессии CLI в терминале, сессии [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md) и запуски [GitHub Actions](https://code.claude.com/docs/ru/github-actions.md). В других интерфейсах, например [расширении VS Code](https://code.claude.com/docs/ru/vs-code.md) и [десктопном приложении](https://code.claude.com/docs/ru/desktop.md), MCP-задач нет542* Anthropic включила задачи MCP для вашего типа сессии. В v2.1.304 или новее это касается сессий терминального CLI, сессий [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md) и запусков [GitHub Actions](https://code.claude.com/docs/ru/github-actions.md). В других интерфейсах, например в [расширении VS Code](https://code.claude.com/docs/ru/vs-code.md) и [десктопном приложении](https://code.claude.com/docs/ru/desktop.md), задач MCP нет
543* Вызов исходит из основного диалога, а не из [субагента](https://code.claude.com/docs/ru/sub-agents.md)543* Вызов исходит из основного диалога, а не из [субагента](https://code.claude.com/docs/ru/sub-agents.md)
544* Либо сессия интерактивная, либо в сессии [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md) или в запуске `claude -p`, читающем `--input-format stream-json`:544* Либо сессия интерактивная, либо в сессии [Agent SDK](https://code.claude.com/docs/ru/agent-sdk/overview.md) или запуске `claude -p` с чтением `--input-format stream-json`:
545 * [`CLAUDE_AUTO_BACKGROUND_TASKS`](https://code.claude.com/docs/ru/env-vars) равна `1`545 * [`CLAUDE_AUTO_BACKGROUND_TASKS`](https://code.claude.com/docs/ru/env-vars) равна `1`
546 * `CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND` не равна `1`546 * `CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND` не равна `1`
547 * `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` не равна `0`547 * `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` не равна `0`
548 548
549Любой другой вызов — это обычный вызов инструмента, и в разделе [Автоматический перевод длительных вызовов инструментов в фон](#automatic-backgrounding-of-long-tool-calls) сказано, какие из них переносятся в фон.549Любой другой вызов — это обычный вызов инструмента, а какие из них переносятся в фон, описано в разделе [Автоматический перенос длительных вызовов инструментов в фон](#automatic-backgrounding-of-long-tool-calls).
550 550
551Держите ввод сессии Agent SDK или stream-json открытым, потому что после закрытия ввода запуск [не ждёт MCP-задачи](https://code.claude.com/docs/ru/headless.md#mcp-work-when-a-non-interactive-run-ends). Однократный запуск `claude -p "<prompt>"` не получает MCP-задач.551Держите ввод сессии Agent SDK или stream-json открытым, поскольку после закрытия ввода запуск [не ждёт задач MCP](https://code.claude.com/docs/ru/headless.md#mcp-work-when-a-non-interactive-run-ends). Однократный запуск `claude -p "<prompt>"` не получает задач MCP.
552 552
553#### Сообщения о статусе MCP-задачи553#### Сообщения о статусе задачи MCP
554 554
555Эти сообщения в записи задачи в `/tasks` или в её завершающей строке в транскрипте означают, что Claude Code не может связаться с сервером или задачей. Пока одно из них отображается в `/tasks`, работа может по-прежнему выполняться: Claude Code её не трогает и продолжает проверять. Сообщения с `300s` и сообщения о конфигурации остаются в записи даже после восстановления связи.555Эти сообщения в записи задачи в `/tasks` или в её завершающей строке транскрипта означают, что Claude Code не может связаться с сервером или задачей. Пока такое сообщение отображается в `/tasks`, работа может всё ещё выполняться: Claude Code не трогает её и продолжает проверять. Сообщения с `300s` и сообщения о конфигурации остаются в записи даже после восстановления связи.
556 556
557| Сообщение | Что происходит | Что можно сделать |557| Сообщение | Что происходит | Что вы можете сделать |
558| - | - | - |558| - | - | - |
559| `reconnecting…` | Сервер не отвечал с момента возобновления, или проверки статуса остаются без ответа | Если сообщение не исчезает, переподключитесь из `/mcp` |559| `reconnecting…` | Сервер не отвечал с момента возобновления, или проверки статуса остаются без ответа | Если сообщение не исчезает, переподключитесь из `/mcp` |
560| `needs a sign-in to <server>` | Сервер отклонил проверку статуса | Войдите из `/mcp` |560| `needs a sign-in to <server>` | Сервер отклонил проверку статуса | Войдите из `/mcp` |
561| `status requests come back with errors; retrying…` | Сервер или прокси перед ним отвечает на проверки статуса ошибками | Подождите, пока Claude Code повторяет попытки |561| `status requests come back with errors; retrying…` | Сервер или прокси перед ним отвечает на проверки статуса ошибками | Подождите, пока Claude Code повторяет попытки |
562| `server '<name>' did not reconnect within 300s` | В течение пяти минут ни одна проверка не получила ответа, например из-за разорванного соединения или отключённого сервера | Переподключитесь из `/mcp` |562| `server '<name>' did not reconnect within 300s` | Пять минут нет ответа на проверки, например когда подключение разорвано или сервер отключён | Переподключитесь из `/mcp` |
563| `server '<name>' asked for a sign-in, and none was accepted within 300s` | Через пять минут сервер всё ещё требует входа | Войдите из `/mcp` |563| `server '<name>' asked for a sign-in, and none was accepted within 300s` | Через пять минут сервер всё ещё требует входа | Войдите из `/mcp` |
564| `status requests to server '<name>' came back with errors, and none succeeded in 300s` | Пять минут ответов с ошибками | Проверьте работоспособность или логи самого сервера |564| `status requests to server '<name>' came back with errors, and none succeeded in 300s` | Пять минут ответов с ошибками | Проверьте работоспособность или логи самого сервера |
565| `server '<name>' is not configured in this session; the task may still be running on it` | В сессии нет сервера с таким именем, например он был удалён, переименован или не включён в `--mcp-config`, либо коннектор claude.ai ещё загружается | Восстановите сервер под тем же именем, затем снова возобновите сессию. Для загружающегося коннектора ничего делать не нужно: Claude Code начнёт отслеживать задачу, как только он появится |565| `server '<name>' is not configured in this session; the task may still be running on it` | В сессии нет сервера с таким именем, например он был удалён, переименован или не включён в `--mcp-config`, либо коннектор claude.ai ещё загружается | Восстановите сервер под тем же именем, затем снова возобновите сессию. Для загружающегося коннектора ничего делать не нужно: Claude Code начнёт отслеживать задачу, как только он появится |
566| Сообщение, начинающееся с `server '<name>' was reconfigured to a different transport since this task was created` | Сервер с таким именем существует, но его настройки подключения изменились с момента запуска задачи, например URL, команда, args, env, headers или timeout | Восстановите прежние настройки, затем снова возобновите сессию |566| Сообщение, начинающееся с `server '<name>' was reconfigured to a different transport since this task was created` | Сервер с таким именем существует, но его настройки подключения изменились с момента начала задачи, например URL, command, args, env, headers или timeout | Восстановите прежние настройки, затем снова возобновите сессию |
567| `the server rejected this task's id; asking again…` | Сервер сообщает, что не знает ID задачи. Claude Code продолжает спрашивать до пяти минут | Подождите: сообщение исчезнет, если сервер снова распознает ID, иначе появится строка `outcome unknown.` |567| `the server rejected this task's id; asking again…` | Сервер сообщает, что не знает ID задачи. Claude Code продолжает спрашивать до пяти минут | Подождите: сообщение исчезнет, если сервер снова распознает ID, либо последует строка `outcome unknown.` |
568| Строка в транскрипте, заканчивающаяся на `outcome unknown.`, в одной из форм — `expired on the server: outcome unknown.` | Сервер отклонил ID или отказал с другой постоянной ошибкой, и Claude Code прекратил отслеживать задачу | Повторный вызов может повторить работу. Прежде чем снова вызывать инструмент, выясните у сервера, что было сделано, например попросив Claude использовать другие инструменты сервера |568| Строка транскрипта, заканчивающаяся на `outcome unknown.`, в одной из форм `expired on the server: outcome unknown.` | Сервер отклонил ID или отказал с другой постоянной ошибкой, и Claude Code прекратил отслеживать задачу | Повторный вызов может повторить работу. Прежде чем снова вызывать инструмент, выясните у сервера, что было сделано, например попросив Claude воспользоваться другими инструментами сервера |
569 569
570#### Ограничения времени для MCP-задач570#### Ограничения времени для задач MCP
571 571
572По умолчанию для задачи в фоне Claude Code не устанавливает ограничения времени. [Ограничения времени для вызовов инструментов](#time-limits-on-mcp-tool-calls), включая ограничение по реальному времени и таймаут простоя, действуют до тех пор, пока сервер не ответит на вызов задачей. Если вы [заставите Claude ждать](#make-claude-wait-for-the-result-of-an-mcp-task), они действуют в течение всей задачи. Проверки статуса, получившие ответ, считаются активностью для таймаута простоя.572По умолчанию у задачи в фоне нет ограничения времени со стороны Claude Code. [Ограничения времени для вызовов инструментов](#time-limits-on-mcp-tool-calls), включая ограничение по реальному времени и таймаут простоя, действуют, пока сервер не ответит на вызов задачей. Если вы [заставите Claude ждать](#make-claude-wait-for-the-result-of-an-mcp-task), они действуют в течение всей задачи. Проверки статуса, получившие ответ, считаются активностью для таймаута простоя.
573 573
574#### Как заставить Claude ждать результата MCP-задачи574#### Как заставить Claude ждать результата задачи MCP
575 575
576Чтобы Claude ждал результата задачи в интерактивной сессии, установите одну из двух переменных окружения, например в блоке `env` файла [`settings.json`](https://code.claude.com/docs/ru/settings):576Чтобы Claude ждал результата задачи в интерактивной сессии, задайте одну из двух переменных окружения, например в блоке `env` файла [`settings.json`](https://code.claude.com/docs/ru/settings):
577 577
578* **[`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/ru/env-vars) со значением `0`**: Claude ждёт завершения каждого вызова MCP-инструмента578* **[`CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`](https://code.claude.com/docs/ru/env-vars), равная `0`**: Claude ждёт завершения каждого вызова инструмента MCP
579* **[`CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND`](https://code.claude.com/docs/ru/env-vars) со значением `1`**: Claude ждёт результата задачи. Пока включён [автоматический перевод в фон](#automatic-backgrounding-of-long-tool-calls), он по умолчанию переносит вызов через две минуты, поэтому короткие задачи завершаются на месте, а длинные вас не блокируют. Перенесённый вызов — это обычный фоновый вызов, а не MCP-задача. Он не переживает выход из сессии579* **[`CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND`](https://code.claude.com/docs/ru/env-vars), равная `1`**: Claude ждёт результата задачи. Пока включён [автоматический перенос в фон](#automatic-backgrounding-of-long-tool-calls), по умолчанию он переносит вызов через две минуты, поэтому короткие задачи завершаются на месте, а длинные вас не блокируют. Перенесённый вызов — это обычный фоновый вызов, а не задача MCP. Он не сохраняется после выхода из сессии
580 580
581Пока Claude ждёт, нажатие `Esc` или достижение [ограничения по реальному времени или таймаута простоя](#time-limits-on-mcp-tasks) завершает вызов, и Claude Code просит сервер отменить задачу.581Пока Claude ждёт, нажатие `Esc` или достижение [ограничения по реальному времени или таймаута простоя](#time-limits-on-mcp-tasks) завершает вызов, и Claude Code просит сервер отменить задачу.
582 582
583Если вы установите `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` в `1` или запустите [режим bare](https://code.claude.com/docs/ru/headless.md#start-faster-with-bare-mode), само по себе это не заставит Claude ждать MCP-задачи. В этом примере `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` установлена в `0`, поэтому Claude ждёт каждый вызов MCP-инструмента:583Если вы задали `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` равной `1` или запустились в [режиме bare](https://code.claude.com/docs/ru/headless.md#start-faster-with-bare-mode), само по себе это не заставляет Claude ждать задач MCP. В этом примере `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` задана равной `0`, поэтому Claude ждёт каждый вызов инструмента MCP:
584 584
585```json settings.json theme={null}585```json settings.json theme={null}
586{586{
590}590}
591```591```
592 592
593### MCP-задачи для авторов серверов593### Задачи MCP для авторов серверов
594 594
595Если вы создаёте MCP-сервер, вы можете ответить на длительный `tools/call` задачей. [Расширение MCP tasks](https://modelcontextprotocol.io/extensions/tasks/overview) определяет сообщения, которые вы отправляете. При подключении по [ревизии протокола 2026-07-28](#mcp-client-runtimes) каждый запрос несёт клиентские возможности Claude Code в `params._meta["io.modelcontextprotocol/clientCapabilities"]`, с `"io.modelcontextprotocol/tasks": {}` в `extensions`. Запрос `tools/call`, который [не может стать задачей](#requirements-for-mcp-tasks), не содержит этого расширения.595Если вы создаёте MCP-сервер, вы можете отвечать на длительный `tools/call` задачей. [Расширение MCP tasks](https://modelcontextprotocol.io/extensions/tasks/overview) определяет сообщения, которые вы отправляете. При подключении на [ревизии протокола 2026-07-28](#mcp-client-runtimes) каждый запрос несёт клиентские возможности Claude Code в `params._meta["io.modelcontextprotocol/clientCapabilities"]`, с `"io.modelcontextprotocol/tasks": {}` в `extensions`. Запрос `tools/call`, который [не может стать задачей](#requirements-for-mcp-tasks), не содержит этого расширения.
596 596
597#### Ответ на вызов задачей597#### Ответ на вызов задачей
598 598
613 613
614| Поле | Как его обрабатывает Claude Code |614| Поле | Как его обрабатывает Claude Code |
615| - | - |615| - | - |
616| `resultType` | Установите его в `"task"`, чтобы пометить ответ как задачу. Без него Claude Code воспринимает ответ как обычный результат |616| `resultType` | Задайте `"task"`, чтобы пометить ответ как задачу. Без него Claude Code считает ответ обычным результатом |
617| `taskId` | Обязательное. Не более 128 печатных символов ASCII без пробелов, иначе Claude получит ошибку инструмента, начинающуюся с `MCP server "<name>" returned a malformed task handle for tool "<tool>"`. Обеспечьте, чтобы на запросы по этому ID можно было отвечать при разных подключениях, потому что после возобновления Claude Code спрашивает о нём через новое подключение |617| `taskId` | Обязательно. Не более 128 печатаемых символов ASCII без пробелов, иначе Claude получает ошибку инструмента, начинающуюся с `MCP server "<name>" returned a malformed task handle for tool "<tool>"`. Обеспечьте, чтобы на запросы по ID можно было ответить в разных подключениях, поскольку после возобновления Claude Code спрашивает о нём через новое подключение |
618| `status` | Обязательное. Одно из значений `working`, `input_required`, `completed`, `failed` или `cancelled`. Другое значение приводит к ошибке `Unsupported result type` |618| `status` | Обязательно. Одно из значений `working`, `input_required`, `completed`, `failed` или `cancelled`. Другое значение приводит к ошибке `Unsupported result type` |
619| `createdAt`, `lastUpdatedAt`, `ttlMs` | Обязательны согласно расширению tasks, и `ttlMs` может быть `null`. Claude Code не отбрасывает задачу из-за истечения её `ttlMs` |619| `createdAt`, `lastUpdatedAt`, `ttlMs` | Требуются расширением tasks, причём `ttlMs` может быть `null`. Claude Code не отбрасывает задачу из-за истечения её `ttlMs` |
620| `pollIntervalMs` | Необязательное. Миллисекунды между запросами `tasks/get`, ограниченные диапазоном от 250 до 30000. Claude Code использует 2000, когда поле отсутствует или равно `null`, и заново считывает значение из каждого ответа `tasks/get` |620| `pollIntervalMs` | Необязательно. Миллисекунды между запросами `tasks/get`, ограниченные диапазоном от 250 до 30000. Claude Code использует 2000, если поле отсутствует или равно `null`, и заново считывает значение из каждого ответа на `tasks/get` |
621| `statusMessage` | Необязательное. `/tasks` показывает значение из вашего последнего ответа `tasks/get`, а не из этого первого, и ответ без этого поля очищает его. Его место может занять [сообщение о статусе от Claude Code](#status-messages-on-an-mcp-task) |621| `statusMessage` | Необязательно. `/tasks` показывает значение из вашего последнего ответа на `tasks/get`, а не из этого первого, а ответ без этого поля очищает его. Его место может занять [сообщение о статусе от Claude Code](#status-messages-on-an-mcp-task) |
622 622
623Claude Code принимает ответ-задачу без `createdAt`, `lastUpdatedAt` или `ttlMs` либо с `pollIntervalMs`, равным `null`. До v2.1.317 вызов вместо этого завершался ошибкой `Unsupported result type`. Чтобы работать и с этими версиями, отправляйте три поля, которые требует расширение tasks, а `pollIntervalMs` отправляйте числом или не отправляйте вовсе.623Claude Code принимает ответ-задачу без `createdAt`, `lastUpdatedAt` или `ttlMs` либо с `pollIntervalMs`, равным `null`. До v2.1.317 вызов в этом случае завершался ошибкой `Unsupported result type`. Чтобы работать и с этими версиями, отправляйте три поля, которые требует расширение tasks, а `pollIntervalMs` отправляйте числом или не отправляйте вовсе.
624 624
625На HTTP-сервере или сервере коннектора claude.ai ответ задачей должен начаться в пределах [таймера для отдельного запроса](#time-limits-on-mcp-tool-calls), поэтому сначала примите работу и ответьте, а затем выполняйте её.625На HTTP-сервере или коннекторе claude.ai ответ-задача должен начаться в пределах [таймера на каждый запрос](#time-limits-on-mcp-tool-calls), поэтому сначала примите работу и ответьте, а затем выполняйте её.
626 626
627#### Сообщение о статусе, результатах и вопросах627#### Сообщение статуса, результатов и вопросов
628 628
629Сразу после ответа задачей Claude Code отправляет `tasks/get` с `{ "taskId": ... }`, затем повторяет его раз в интервал опроса. Расширение tasks требует, чтобы ваш ответ содержал `"resultType": "complete"` вместе с `taskId`, `status`, `createdAt`, `lastUpdatedAt` и `ttlMs`. `ttlMs` может быть `null`, а `statusMessage` и `pollIntervalMs` необязательны. В этом примере сообщается о завершении сборки:629Сразу после ответа-задачи Claude Code отправляет `tasks/get` с `{ "taskId": ... }`, затем повторяет его раз в интервал опроса. Расширение tasks требует, чтобы ваш ответ содержал `"resultType": "complete"` вместе с `taskId`, `status`, `createdAt`, `lastUpdatedAt` и `ttlMs`. `ttlMs` может быть `null`, а `statusMessage` и `pollIntervalMs` необязательны. В этом примере сообщается о завершении сборки:
630 630
631```json theme={null}631```json theme={null}
632{632{
645| Статус, метод или ответ | Как его обрабатывает Claude Code |645| Статус, метод или ответ | Как его обрабатывает Claude Code |
646| - | - |646| - | - |
647| `working` | Продолжает опрос |647| `working` | Продолжает опрос |
648| `completed` | Передаёт Claude обычный результат `tools/call` в объекте `result` верхнего уровня. `isError: true` в нём сообщается как сбой |648| `completed` | Передаёт Claude обычный результат `tools/call` из объекта `result` верхнего уровня. `isError: true` в нём считается сбоем |
649| `failed` | Сообщает Claude `message` объекта `error` верхнего уровня `{ code, message, data }`, который расширение tasks требует для сбойной задачи. Без этого `message` Claude получает вместо него `statusMessage`, а при его отсутствии — `Task failed` |649| `failed` | Сообщает Claude `message` объекта `error` верхнего уровня `{ code, message, data }`, который расширение tasks требует для задачи со сбоем. Без этого `message` Claude вместо этого получает `statusMessage`, а при его отсутствии — `Task failed` |
650| `cancelled` | Сообщает Claude `statusMessage`, а при его отсутствии — `Task was cancelled by the server` |650| `cancelled` | Сообщает Claude `statusMessage`, а при его отсутствии — `Task was cancelled by the server` |
651| `input_required` | Читает `inputRequests` — объект, сопоставляющий выбранный вами ключ с `{ method, params }`. Claude Code отвечает на каждый ключ один раз через `tasks/update` с `{ taskId, inputResponses }`, где `inputResponses` сопоставляет тот же ключ с результатом этого запроса. Ключи сверх 16 на задачу игнорируются |651| `input_required` | Считывает `inputRequests` — объект, сопоставляющий выбранный вами ключ с `{ method, params }`. Claude Code отвечает на каждый ключ один раз через `tasks/update` с `{ taskId, inputResponses }`, где `inputResponses` сопоставляет тот же ключ с результатом этого запроса. Ключи сверх 16 на задачу игнорируются |
652| Методы в `inputRequests` | `elicitation/create` обслуживается только в интерактивных сессиях в терминале, а `roots/list` — везде. Когда Claude Code не может обслужить запрос, он просит сервер отменить задачу |652| Методы в `inputRequests` | `elicitation/create` обслуживается только в интерактивных сессиях терминала, а `roots/list` — везде. Когда Claude Code не может обслужить запрос, он просит сервер отменить задачу |
653| Другое значение `status` | Claude Code просит сервер отменить задачу и сообщает Claude о ней как о сбойной |653| Другое значение `status` | Claude Code просит сервер отменить задачу и сообщает о ней Claude как о завершившейся сбоем |
654| Ошибка JSON-RPC `-32602` | Воспринимается как неизвестный ID задачи. Для задачи в фоне Claude Code продолжает спрашивать до пяти минут, затем сообщает Claude, что результат неизвестен |654| Ошибка JSON-RPC `-32602` | Считается неизвестным ID задачи. Для задачи в фоне Claude Code продолжает спрашивать до пяти минут, затем сообщает Claude, что результат неизвестен |
655| `tasks/cancel` | Отправляется, например, когда Claude или пользователь останавливает задачу, пока сервер подключён. При выходе не отправляется |655| `tasks/cancel` | Отправляется, например, когда Claude или пользователь останавливает задачу, пока сервер подключён. При выходе не отправляется |
656| `tasks/result`, `tasks/list`, `notifications/tasks` | Не используются, поэтому передавайте итог в ответах на `tasks/get` |656| `tasks/result`, `tasks/list`, `notifications/tasks` | Не используются, поэтому передавайте итог в своих ответах на `tasks/get` |
657 657
658### MCP-серверы, предоставляемые плагинами658### MCP-серверы, предоставляемые плагинами
659 659
661 661
662**Как работают MCP-серверы плагинов**:662**Как работают MCP-серверы плагинов**:
663 663
664* Плагины определяют MCP-серверы в `.mcp.json` в корне плагина или встроенно в `plugin.json`664* Плагины определяют MCP-серверы в файле `.mcp.json` в корне плагина или непосредственно в `plugin.json`
665* Когда вы включаете плагин, Claude Code автоматически запускает его MCP-серверы665* Когда вы включаете плагин, Claude Code автоматически запускает его MCP-серверы
666* Claude Code предлагает инструменты MCP плагинов наряду с вручную настроенными инструментами MCP666* Claude Code предлагает MCP-инструменты плагинов наряду с MCP-инструментами, настроенными вручную
667* Вы добавляете и удаляете серверы плагинов, устанавливая или удаляя плагин, а не с помощью команд `/mcp`. Вы по-прежнему можете [выключить сервер установленного плагина](#disable-a-server-without-removing-it) в `/mcp`, после чего Claude Code перестанет к нему подключаться без удаления плагина667* Вы добавляете и удаляете серверы плагинов путём установки или удаления плагина, а не командами `/mcp`. При этом вы по-прежнему можете [отключить сервер установленного плагина](#disable-a-server-without-removing-it) в `/mcp`, после чего Claude Code перестанет к нему подключаться, но плагин не будет удалён
668 668
669**Пример конфигурации MCP плагина**:669**Пример конфигурации MCP плагина**:
670 670
671В `.mcp.json` в корне плагина:671В файле `.mcp.json` в корне плагина:
672 672
673```json theme={null}673```json theme={null}
674{674{
684}684}
685```685```
686 686
687Или встроенно в `plugin.json`:687Или непосредственно в `plugin.json`:
688 688
689```json theme={null}689```json theme={null}
690{690{
701**Возможности MCP плагинов**:701**Возможности MCP плагинов**:
702 702
703* **Автоматический жизненный цикл**: серверы подключаются и отключаются в следующие моменты:703* **Автоматический жизненный цикл**: серверы подключаются и отключаются в следующие моменты:
704 * При запуске сессии Claude Code автоматически подключает серверы включённых плагинов. В `/mcp` удалённый (HTTP или SSE) сервер плагина, который вы использовали раньше, может вместо этого показывать [статус `cached`](#server-status-detail); Claude Code подключает его, когда Claude впервые вызывает один из его инструментов. Если подключение stdio-сервера плагина не удалось менее 15 минут назад, Claude Code [пропускает подключение](https://code.claude.com/docs/ru/errors.md#skipping-connection-recent-failure-cached)704 * При запуске сессии Claude Code автоматически подключает серверы включённых плагинов. В `/mcp` удалённый (HTTP или SSE) сервер плагина, который вы использовали ранее, может вместо этого отображаться со [статусом `cached`](#server-status-detail); Claude Code подключает его, когда Claude впервые вызывает один из его инструментов. Если подключение к stdio-серверу плагина завершилось ошибкой менее 15 минут назад, Claude Code [пропускает подключение](https://code.claude.com/docs/ru/errors.md#skipping-connection-recent-failure-cached)
705 * Если вы включаете или отключаете плагин во время сессии, Claude Code подключает или отключает его MCP-серверы, когда изменение применяется. Раздел [Применение изменений плагинов без перезапуска](https://code.claude.com/docs/ru/plugins/cli-reference.md#reload-plugins) описывает, когда это происходит. В сессии без интерактивного терминала `/reload-plugins` не подключает и не отключает MCP-серверы плагинов; эти изменения вступают в силу в следующей сессии705 * Если вы включаете или отключаете плагин во время сессии, Claude Code подключает или отключает его MCP-серверы в момент применения изменения. Когда именно это происходит, описано в разделе [Применение изменений плагинов без перезапуска](https://code.claude.com/docs/ru/plugins/cli-reference.md#reload-plugins). В сессии без интерактивного терминала `/reload-plugins` не подключает и не отключает MCP-серверы плагинов; такие изменения вступают в силу в следующей сессии
706 * При перезагрузке Claude Code сохраняет активные соединения серверов плагинов, конфигурация которых не изменилась, и делает то же самое, когда вы [заменяете список MCP-серверов сессии](https://code.claude.com/docs/ru/agent-sdk/typescript.md#mcpsetserversresult) из Agent SDK, не указывая их706 * При перезагрузке Claude Code сохраняет активные подключения серверов плагинов, конфигурация которых не изменилась, и поступает так же, когда вы [заменяете список MCP-серверов сессии](https://code.claude.com/docs/ru/agent-sdk/typescript.md#mcpsetserversresult) из Agent SDK, не указывая их
707 * Когда вы [перемещаете сессию с помощью `/cd`](https://code.claude.com/docs/ru/permissions#move-the-session-to-another-directory) в v2.1.246 или новее, Claude Code подключает серверы плагинов, которые включены настройками нового каталога, и отключает серверы плагинов, которые больше не включены, поэтому вам не нужно запускать `/reload-plugins` после перемещения707 * Когда вы [перемещаете сессию с помощью `/cd`](https://code.claude.com/docs/ru/permissions#move-the-session-to-another-directory) в версии v2.1.246 или новее, Claude Code подключает серверы плагинов, которые включены настройками нового каталога, и отключает серверы плагинов, которые больше не включены, поэтому после перемещения не нужно запускать `/reload-plugins`
708 * В [облачных сессиях](https://code.claude.com/docs/ru/claude-code-on-the-web.md) вызов MCP к серверу плагина, который ещё не подключён, например сразу после пробуждения неактивной сессии, запускает сервер по требованию и ждёт его подключения708 * В [облачных сессиях](https://code.claude.com/docs/ru/claude-code-on-the-web.md) MCP-вызов к серверу плагина, который ещё не подключён, например сразу после пробуждения неактивной сессии, запускает сервер по требованию и ожидает его подключения
709* **Заполнители путей**: `${CLAUDE_PLUGIN_ROOT}` разрешается в каталог установки плагина, `${CLAUDE_PLUGIN_DATA}` — в каталог его [постоянного состояния](https://code.claude.com/docs/ru/plugins/components.md#path-variables-and-persistent-data), а `${CLAUDE_PROJECT_DIR}` — в стабильный корень проекта. Подстановка применяется к:709* **Заполнители путей**: `${CLAUDE_PLUGIN_ROOT}` разрешается в каталог установки плагина, `${CLAUDE_PLUGIN_DATA}` — в каталог его [постоянного состояния](https://code.claude.com/docs/ru/plugins/components.md#path-variables-and-persistent-data), а `${CLAUDE_PROJECT_DIR}` — в стабильный корень проекта. Подстановка применяется к:
710 * серверам `stdio`: `command`, `args`, `env`710 * серверам `stdio`: `command`, `args`, `env`
711 * серверам `http`, `sse` и `ws`: `url`, `headers` и `headersHelper`711 * серверам `http`, `sse` и `ws`: `url`, `headers` и `headersHelper`
712* **Доступ к пользовательскому окружению**: доступ к тем же переменным окружения, что и у вручную настроенных серверов712* **Доступ к пользовательскому окружению**: доступ к тем же переменным окружения, что и у серверов, настроенных вручную
713* **Несколько типов транспорта**: поддержка транспортов stdio, SSE, HTTP и WebSocket, хотя поддержка транспортов может различаться в зависимости от сервера713* **Несколько типов транспорта**: поддержка транспортов stdio, SSE, HTTP и WebSocket, хотя поддержка транспорта может различаться в зависимости от сервера
714 714
715Серверы плагинов отображаются в `/mcp` с индикаторами, показывающими, что они получены из плагинов.715Серверы плагинов отображаются в `/mcp` с индикаторами, показывающими, что они предоставлены плагинами.
716 716
717`claude mcp get` скрывает значения, настроенные для stdio- или WebSocket-сервера плагина, потому что они могут содержать учётные данные:717`claude mcp get` скрывает значения, настроенные для stdio- или WebSocket-сервера плагина, поскольку они могут содержать учётные данные:
718 718
719* **stdio-сервер**: команда выводит `Command: stdio`, пустую строку `Args:` и каждую переменную окружения в виде `NAME=[REDACTED]`719* **stdio-сервер**: выводится `Command: stdio`, пустая строка `Args:` и каждая переменная окружения в виде `NAME=[REDACTED]`
720* **WebSocket-сервер**: команда выводит `URL: ws` и каждый заголовок в виде `<name>: [REDACTED]`, а `claude mcp list` показывает `ws` вместо URL720* **WebSocket-сервер**: выводится `URL: ws` и каждый заголовок в виде `<name>: [REDACTED]`, а `claude mcp list` показывает `ws` вместо URL
721 721
722Чтобы увидеть, что настроил плагин, [найдите плагин на диске](https://code.claude.com/docs/ru/plugins/loading.md#find-plugins-on-disk) и прочитайте его `.mcp.json` или `plugin.json`.722Чтобы увидеть, что настроил плагин, [найдите плагин на диске](https://code.claude.com/docs/ru/plugins/loading.md#find-plugins-on-disk) и прочитайте его `.mcp.json` или `plugin.json`.
723 723
724**Имена инструментов MCP плагинов**:724**Имена MCP-инструментов плагинов**:
725 725
726Инструменты MCP-сервера, входящего в состав плагина, содержат в своём вызываемом имени и имя плагина, и ключ сервера. Полная форма — `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`, где любой символ вне `A-Z`, `a-z`, `0-9`, `_` и `-` заменяется на `_`. Для сервера `database-tools` из плагина с именем `my-plugin` инструмент `query` вызывается как:726Вызываемые имена инструментов из MCP-сервера, входящего в состав плагина, включают как имя плагина, так и ключ сервера. Полная форма — `mcp__plugin_<plugin-name>_<server-name>__<tool-name>`, где любой символ, кроме `A-Z`, `a-z`, `0-9`, `_` и `-`, заменяется на `_`. Для сервера `database-tools`, входящего в плагин с именем `my-plugin`, инструмент `query` вызывается как:
727 727
728```728```
729mcp__plugin_my-plugin_database-tools__query729mcp__plugin_my-plugin_database-tools__query
730```730```
731 731
732Используйте это полное имя при указании инструмента в [правилах разрешений](https://code.claude.com/docs/ru/permissions.md), списке `allowed-tools` скилла, [поле `tools` субагента](https://code.claude.com/docs/ru/sub-agents#available-tools) или [matcher хука](https://code.claude.com/docs/ru/hooks.md#match-mcp-tools). Matcher хука, написанный для голого ключа сервера, например `mcp__database-tools__.*`, никогда не срабатывает для сервера, входящего в состав плагина.732Используйте это полное имя при указании инструмента в [правилах разрешений](https://code.claude.com/docs/ru/permissions.md), в списке `allowed-tools` скилла, в [поле `tools` субагента](https://code.claude.com/docs/ru/sub-agents#available-tools) или в [matcher хука](https://code.claude.com/docs/ru/hooks.md#match-mcp-tools). Matcher хука, написанный для голого ключа сервера, например `mcp__database-tools__.*`, никогда не срабатывает для сервера, входящего в состав плагина.
733 733
734Сам сервер регистрируется под именем с областью действия `plugin:<plugin-name>:<server-name>`, например `plugin:my-plugin:database-tools`. Используйте это имя там, где ожидается имя настроенного сервера, например в [поле `server` хука `mcp_tool`](https://code.claude.com/docs/ru/hooks#mcp-tool-hook-fields).734Сам сервер регистрируется под именем с областью `plugin:<plugin-name>:<server-name>`, например `plugin:my-plugin:database-tools`. Используйте это имя там, где ожидается имя настроенного сервера, например в [поле `server` хука `mcp_tool`](https://code.claude.com/docs/ru/hooks#mcp-tool-hook-fields).
735 735
736Подробнее о включении MCP-серверов в плагины см. в [справочнике по компонентам плагинов](https://code.claude.com/docs/ru/plugins/components.md#mcp-servers).736Подробнее о включении MCP-серверов в плагины см. в [справочнике по компонентам плагинов](https://code.claude.com/docs/ru/plugins/components.md#mcp-servers).
737 737
1800* **Claude Opus 4.5, Sonnet 4.5, Haiku 4.5 и позже**: поиск инструментов включён по умолчанию, как и на API Anthropic.1800* **Claude Opus 4.5, Sonnet 4.5, Haiku 4.5 и позже**: поиск инструментов включён по умолчанию, как и на API Anthropic.
1801* **Более ранние модели Agent Platform**: Claude Code загружает все инструменты MCP заранее, потому что их стеки обслуживания отклоняют требуемый заголовок бета-версии. `ENABLE_TOOL_SEARCH=true` не переопределяет это.1801* **Более ранние модели Agent Platform**: Claude Code загружает все инструменты MCP заранее, потому что их стеки обслуживания отклоняют требуемый заголовок бета-версии. `ENABLE_TOOL_SEARCH=true` не переопределяет это.
1802 1802
1803До версии 2.1.221 Claude Code отключал поиск инструментов для всех моделей на Agent Platform Google Cloud, если вы не установили `ENABLE_TOOL_SEARCH=true`.
1804
1805Управляйте поведением поиска инструментов с помощью переменной окружения `ENABLE_TOOL_SEARCH`:1803Управляйте поведением поиска инструментов с помощью переменной окружения `ENABLE_TOOL_SEARCH`:
1806 1804
1807| Значение | Поведение |1805| Значение | Поведение |