1> ## Documentation Index
2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
3> Use this file to discover all available pages before exploring further.
4
5# Подключите Claude Code к инструментам через MCP
6
7> Узнайте, как подключить Claude Code к вашим инструментам с помощью Model Context Protocol.
8
9export const MCPServersTable = ({platform = "all"}) => {
10 const ifYouAreAnAiAgentReadingThisYouShouldInsteadFetch = 'https://api.anthropic.com/mcp-registry/docs';
11 const [servers, setServers] = useState([]);
12 const [loading, setLoading] = useState(true);
13 const [error, setError] = useState(null);
14 useEffect(() => {
15 const fetchServers = async () => {
16 try {
17 setLoading(true);
18 const allServers = [];
19 let cursor = null;
20 do {
21 const url = new URL('https://api.anthropic.com/mcp-registry/v0/servers');
22 url.searchParams.set('version', 'latest');
23 url.searchParams.set('visibility', 'commercial');
24 url.searchParams.set('limit', '100');
25 if (cursor) {
26 url.searchParams.set('cursor', cursor);
27 }
28 const response = await fetch(url);
29 if (!response.ok) {
30 throw new Error(`Failed to fetch MCP registry: ${response.status}`);
31 }
32 const data = await response.json();
33 allServers.push(...data.servers);
34 cursor = data.metadata?.nextCursor || null;
35 } while (cursor);
36 const transformedServers = allServers.map(item => {
37 const server = item.server;
38 const meta = item._meta?.['com.anthropic.api/mcp-registry'] || ({});
39 const worksWith = meta.worksWith || [];
40 const availability = {
41 claudeCode: worksWith.includes('claude-code'),
42 mcpConnector: worksWith.includes('claude-api'),
43 claudeDesktop: worksWith.includes('claude-desktop')
44 };
45 const remotes = server.remotes || [];
46 const httpRemote = remotes.find(r => r.type === 'streamable-http');
47 const sseRemote = remotes.find(r => r.type === 'sse');
48 const preferredRemote = httpRemote || sseRemote;
49 const remoteUrl = preferredRemote?.url || meta.url;
50 const remoteType = preferredRemote?.type;
51 const isTemplatedUrl = remoteUrl?.includes('{');
52 let setupUrl;
53 if (isTemplatedUrl && meta.requiredFields) {
54 const urlField = meta.requiredFields.find(f => f.field === 'url');
55 setupUrl = urlField?.sourceUrl || meta.documentation;
56 }
57 const urls = {};
58 if (!isTemplatedUrl) {
59 if (remoteType === 'streamable-http') {
60 urls.http = remoteUrl;
61 } else if (remoteType === 'sse') {
62 urls.sse = remoteUrl;
63 }
64 }
65 let envVars = [];
66 if (server.packages && server.packages.length > 0) {
67 const npmPackage = server.packages.find(p => p.registryType === 'npm');
68 if (npmPackage) {
69 urls.stdio = `npx -y ${npmPackage.identifier}`;
70 if (npmPackage.environmentVariables) {
71 envVars = npmPackage.environmentVariables;
72 }
73 }
74 }
75 return {
76 name: meta.displayName || server.title || server.name,
77 description: meta.oneLiner || server.description,
78 documentation: meta.documentation,
79 urls: urls,
80 envVars: envVars,
81 availability: availability,
82 customCommands: meta.claudeCodeCopyText ? {
83 claudeCode: meta.claudeCodeCopyText
84 } : undefined,
85 setupUrl: setupUrl
86 };
87 });
88 setServers(transformedServers);
89 setError(null);
90 } catch (err) {
91 setError(err.message);
92 console.error('Error fetching MCP registry:', err);
93 } finally {
94 setLoading(false);
95 }
96 };
97 fetchServers();
98 }, []);
99 const generateClaudeCodeCommand = server => {
100 if (server.customCommands && server.customCommands.claudeCode) {
101 return server.customCommands.claudeCode.replace('--transport streamable-http', '--transport http');
102 }
103 const serverSlug = server.name.toLowerCase().replace(/[^a-z0-9]/g, '-');
104 if (server.urls.http) {
105 return `claude mcp add ${serverSlug} --transport http ${server.urls.http}`;
106 }
107 if (server.urls.sse) {
108 return `claude mcp add ${serverSlug} --transport sse ${server.urls.sse}`;
109 }
110 if (server.urls.stdio) {
111 const envFlags = server.envVars && server.envVars.length > 0 ? server.envVars.map(v => `--env ${v.name}=YOUR_${v.name}`).join(' ') : '';
112 const baseCommand = `claude mcp add ${serverSlug} --transport stdio`;
113 return envFlags ? `${baseCommand} ${envFlags} -- ${server.urls.stdio}` : `${baseCommand} -- ${server.urls.stdio}`;
114 }
115 return null;
116 };
117 if (loading) {
118 return <div>Loading MCP servers...</div>;
119 }
120 if (error) {
121 return <div>Error loading MCP servers: {error}</div>;
122 }
123 const filteredServers = servers.filter(server => {
124 if (platform === "claudeCode") {
125 return server.availability.claudeCode;
126 } else if (platform === "mcpConnector") {
127 return server.availability.mcpConnector;
128 } else if (platform === "claudeDesktop") {
129 return server.availability.claudeDesktop;
130 } else if (platform === "all") {
131 return true;
132 } else {
133 throw new Error(`Unknown platform: ${platform}`);
134 }
135 });
136 return <>
137 <style jsx>{`
138 .cards-container {
139 display: grid;
140 gap: 1rem;
141 margin-bottom: 2rem;
142 }
143 .server-card {
144 border: 1px solid var(--border-color, #e5e7eb);
145 border-radius: 6px;
146 padding: 1rem;
147 }
148 .command-row {
149 display: flex;
150 align-items: center;
151 gap: 0.25rem;
152 }
153 .command-row code {
154 font-size: 0.75rem;
155 overflow-x: auto;
156 }
157 `}</style>
158
159 <div className="cards-container">
160 {filteredServers.map(server => {
161 const claudeCodeCommand = generateClaudeCodeCommand(server);
162 const mcpUrl = server.urls.http || server.urls.sse;
163 const commandToShow = platform === "claudeCode" ? claudeCodeCommand : mcpUrl;
164 return <div key={server.name} className="server-card">
165 <div>
166 {server.documentation ? <a href={server.documentation}>
167 <strong>{server.name}</strong>
168 </a> : <strong>{server.name}</strong>}
169 </div>
170
171 <p style={{
172 margin: '0.5rem 0',
173 fontSize: '0.9rem'
174 }}>
175 {server.description}
176 </p>
177
178 {server.setupUrl && <p style={{
179 margin: '0.25rem 0',
180 fontSize: '0.8rem',
181 fontStyle: 'italic',
182 opacity: 0.7
183 }}>
184 Requires user-specific URL.{' '}
185 <a href={server.setupUrl} style={{
186 textDecoration: 'underline'
187 }}>
188 Get your URL here
189 </a>.
190 </p>}
191
192 {commandToShow && !server.setupUrl && <>
193 <p style={{
194 display: 'block',
195 fontSize: '0.75rem',
196 fontWeight: 500,
197 minWidth: 'fit-content',
198 marginTop: '0.5rem',
199 marginBottom: 0
200 }}>
201 {platform === "claudeCode" ? "Command" : "URL"}
202 </p>
203 <div className="command-row">
204 <code>
205 {commandToShow}
206 </code>
207 </div>
208 </>}
209 </div>;
210 })}
211 </div>
212 </>;
213};
214
215Claude Code может подключаться к сотням внешних инструментов и источников данных через [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction), открытый стандарт для интеграции AI с инструментами. MCP servers предоставляют Claude Code доступ к вашим инструментам, базам данных и API.
216
217Подключите server, когда вы обнаружите, что копируете данные в чат из другого инструмента, например из трекера проблем или панели мониторинга. После подключения Claude может читать и действовать на этой системе напрямую вместо работы с тем, что вы вставляете.
218
219## Что вы можете делать с MCP
220
221С подключенными MCP servers вы можете попросить Claude Code:
222
223* **Реализовать функции из трекеров проблем**: "Добавьте функцию, описанную в задаче JIRA ENG-4521, и создайте PR на GitHub."
224* **Анализировать данные мониторинга**: "Проверьте Sentry и Statsig, чтобы проверить использование функции, описанной в ENG-4521."
225* **Запрашивать базы данных**: "Найдите адреса электронной почты 10 случайных пользователей, которые использовали функцию ENG-4521, на основе нашей базы данных PostgreSQL."
226* **Интегрировать дизайны**: "Обновите наш стандартный шаблон электронного письма на основе новых дизайнов Figma, которые были опубликованы в Slack"
227* **Автоматизировать рабочие процессы**: "Создайте черновики Gmail, приглашающие этих 10 пользователей на сеанс обратной связи о новой функции."
228* **Реагировать на внешние события**: MCP server также может действовать как [канал](/ru/channels), который отправляет сообщения в вашу сессию, поэтому Claude реагирует на сообщения Telegram, чаты Discord или события webhook, пока вас нет.
229
230## Популярные MCP servers
231
232Вот некоторые часто используемые MCP servers, которые вы можете подключить к Claude Code:
233
234<Warning>
235 Используйте сторонние MCP servers на свой риск - Anthropic не проверил
236 корректность или безопасность всех этих servers.
237 Убедитесь, что вы доверяете MCP servers, которые устанавливаете.
238 Будьте особенно осторожны при использовании MCP servers, которые могут получать ненадежный
239 контент, так как это может подвергнуть вас риску prompt injection.
240</Warning>
241
242<MCPServersTable platform="claudeCode" />
243
244<Note>
245 **Нужна конкретная интеграция?** [Найдите сотни других MCP servers на GitHub](https://github.com/modelcontextprotocol/servers), или создайте свой собственный, используя [MCP SDK](https://modelcontextprotocol.io/quickstart/server).
246</Note>
247
248## Установка MCP servers
249
250MCP servers можно настроить тремя различными способами в зависимости от ваших потребностей:
251
252### Вариант 1: Добавьте удаленный HTTP server
253
254HTTP servers — это рекомендуемый вариант для подключения к удаленным MCP servers. Это наиболее широко поддерживаемый транспорт для облачных сервисов.
255
256```bash theme={null}
257# Базовый синтаксис
258claude mcp add --transport http <name> <url>
259
260# Реальный пример: подключение к Notion
261claude mcp add --transport http notion https://mcp.notion.com/mcp
262
263# Пример с токеном Bearer
264claude mcp add --transport http secure-api https://api.example.com/mcp \
265 --header "Authorization: Bearer your-token"
266```
267
268### Вариант 2: Добавьте удаленный SSE server
269
270<Warning>
271 Транспорт SSE (Server-Sent Events) устарел. Используйте вместо этого HTTP servers, где они доступны.
272</Warning>
273
274```bash theme={null}
275# Базовый синтаксис
276claude mcp add --transport sse <name> <url>
277
278# Реальный пример: подключение к Asana
279claude mcp add --transport sse asana https://mcp.asana.com/sse
280
281# Пример с заголовком аутентификации
282claude mcp add --transport sse private-api https://api.company.com/sse \
283 --header "X-API-Key: your-key-here"
284```
285
286### Вариант 3: Добавьте локальный stdio server
287
288Stdio servers работают как локальные процессы на вашей машине. Они идеальны для инструментов, которым требуется прямой доступ к системе или пользовательские скрипты.
289
290```bash theme={null}
291# Базовый синтаксис
292claude mcp add [options] <name> -- <command> [args...]
293
294# Реальный пример: добавление Airtable server
295claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \
296 -- npx -y airtable-mcp-server
297```
298
299<Note>
300 **Важно: порядок опций**
301
302 Все опции (`--transport`, `--env`, `--scope`, `--header`) должны идти **перед** именем server. Затем `--` (двойной дефис) отделяет имя server от команды и аргументов, которые передаются MCP server.
303
304 Например:
305
306 * `claude mcp add --transport stdio myserver -- npx server` → запускает `npx server`
307 * `claude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080` → запускает `python server.py --port 8080` с `KEY=value` в окружении
308
309 Это предотвращает конфликты между флагами Claude и флагами server.
310</Note>
311
312### Управление вашими servers
313
314После настройки вы можете управлять своими MCP servers с помощью этих команд:
315
316```bash theme={null}
317# Список всех настроенных servers
318claude mcp list
319
320# Получить детали для конкретного server
321claude mcp get github
322
323# Удалить server
324claude mcp remove github
325
326# (в Claude Code) Проверить статус server
327/mcp
328```
329
330### Динамические обновления инструментов
331
332Claude Code поддерживает MCP `list_changed` уведомления, позволяя MCP servers динамически обновлять свои доступные инструменты, подсказки и ресурсы без необходимости отключения и переподключения. Когда MCP server отправляет уведомление `list_changed`, Claude Code автоматически обновляет доступные возможности от этого server.
333
334### Автоматическое переподключение
335
336Если HTTP или SSE server отключится во время сеанса, Claude Code автоматически переподключится с экспоненциальной задержкой: до пяти попыток, начиная с задержки в одну секунду и удваивая каждый раз. Server отображается как ожидающий в `/mcp` во время переподключения. После пяти неудачных попыток server помечается как неудачный, и вы можете повторить попытку вручную из `/mcp`. Stdio servers — это локальные процессы и не переподключаются автоматически.
337
338Та же задержка применяется, когда HTTP или SSE server не может подключиться при запуске. Начиная с версии 2.1.121, Claude Code повторяет попытку начального подключения до трех раз при временных ошибках, таких как ответ 5xx, отказ в соединении или timeout, а затем помечает server как неудачный, если он все еще не может подключиться. Ошибки аутентификации и ошибки не найдено не повторяются, так как они требуют изменения конфигурации для разрешения.
339
340### Отправка сообщений через каналы
341
342MCP server также может отправлять сообщения непосредственно в вашу сессию, чтобы Claude мог реагировать на внешние события, такие как результаты CI, оповещения мониторинга или сообщения чата. Чтобы включить это, ваш server объявляет возможность `claude/channel` и вы включаете ее с флагом `--channels` при запуске. См. [Каналы](/ru/channels) для использования официально поддерживаемого канала или [Справочник каналов](/ru/channels-reference) для создания собственного.
343
344<Tip>
345 Советы:
346
347 * Используйте флаг `--scope` для указания места хранения конфигурации:
348 * `local` (по умолчанию): доступно только вам в текущем проекте (в старых версиях называлось `project`)
349 * `project`: общий доступ для всех в проекте через файл `.mcp.json`
350 * `user`: доступно вам во всех проектах (в старых версиях называлось `global`)
351 * Установите переменные окружения с флагами `--env` (например, `--env KEY=value`)
352 * Настройте timeout запуска MCP server, используя переменную окружения MCP\_TIMEOUT (например, `MCP_TIMEOUT=10000 claude` устанавливает timeout в 10 секунд)
353 * Claude Code отобразит предупреждение, когда выход инструмента MCP превышает 10 000 токенов. Чтобы увеличить этот лимит, установите переменную окружения `MAX_MCP_OUTPUT_TOKENS` (например, `MAX_MCP_OUTPUT_TOKENS=50000`)
354 * Используйте `/mcp` для аутентификации с удаленными servers, которые требуют аутентификацию OAuth 2.0
355</Tip>
356
357### MCP servers, предоставляемые плагинами
358
359[Плагины](/ru/plugins) могут включать MCP servers, автоматически предоставляя инструменты и интеграции при включении плагина. Plugin MCP servers работают идентично пользовательским настроенным servers.
360
361**Как работают plugin MCP servers**:
362
363* Плагины определяют MCP servers в `.mcp.json` в корне плагина или встроенные в `plugin.json`
364* Когда плагин включен, его MCP servers запускаются автоматически
365* Plugin MCP tools отображаются рядом с вручную настроенными MCP tools
366* Plugin servers управляются через установку плагина (не через команды `/mcp`)
367
368**Пример конфигурации plugin MCP**:
369
370В `.mcp.json` в корне плагина:
371
372```json theme={null}
373{
374 "mcpServers": {
375 "database-tools": {
376 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
377 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
378 "env": {
379 "DB_URL": "${DB_URL}"
380 }
381 }
382 }
383}
384```
385
386Или встроенные в `plugin.json`:
387
388```json theme={null}
389{
390 "name": "my-plugin",
391 "mcpServers": {
392 "plugin-api": {
393 "command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",
394 "args": ["--port", "8080"]
395 }
396 }
397}
398```
399
400**Функции plugin MCP**:
401
402* **Автоматический жизненный цикл**: При запуске сеанса servers для включенных плагинов подключаются автоматически. Если вы включите или отключите плагин во время сеанса, запустите `/reload-plugins` для подключения или отключения его MCP servers
403* **Переменные окружения**: используйте `${CLAUDE_PLUGIN_ROOT}` для файлов плагина и `${CLAUDE_PLUGIN_DATA}` для [постоянного состояния](/ru/plugins-reference#persistent-data-directory), которое сохраняется при обновлении плагина
404* **Доступ к переменным окружения пользователя**: доступ к тем же переменным окружения, что и вручную настроенные servers
405* **Несколько типов транспорта**: поддержка stdio, SSE и HTTP транспортов (поддержка транспорта может варьироваться в зависимости от server)
406
407**Просмотр plugin MCP servers**:
408
409```bash theme={null}
410# В Claude Code, см. все MCP servers, включая plugin ones
411/mcp
412```
413
414Plugin servers отображаются в списке с индикаторами, показывающими, что они поступают из плагинов.
415
416**Преимущества plugin MCP servers**:
417
418* **Упакованное распределение**: инструменты и servers упакованы вместе
419* **Автоматическая настройка**: не требуется ручная конфигурация MCP
420* **Согласованность команды**: все получают одинаковые инструменты при установке плагина
421
422См. [справочник компонентов плагина](/ru/plugins-reference#mcp-servers) для получения подробной информации о включении MCP servers в плагины.
423
424## Области установки MCP
425
426MCP servers можно настроить на трех различных уровнях области. Область, которую вы выбираете, контролирует, в каких проектах загружается server и является ли конфигурация общей с вашей командой.
427
428| Область | Загружается в | Общий доступ с командой | Хранится в |
429| --------------------------- | --------------------- | ------------------------- | --------------------------- |
430| [Локальная](#local-scope) | Только текущий проект | Нет | `~/.claude.json` |
431| [Проект](#project-scope) | Только текущий проект | Да, через контроль версий | `.mcp.json` в корне проекта |
432| [Пользователь](#user-scope) | Все ваши проекты | Нет | `~/.claude.json` |
433
434### Локальная область
435
436Локальная область — это область по умолчанию. Server с локальной областью загружается только в проекте, где вы его добавили, и остается приватным для вас. Claude Code хранит его в `~/.claude.json` в пути вашего проекта, поэтому один и тот же server не будет отображаться в ваших других проектах. Используйте локальную область для личных development servers, экспериментальных конфигураций или servers с учетными данными, которые вы не хотите в контроле версий.
437
438<Note>
439 Термин "локальная область" для MCP servers отличается от общих локальных параметров. MCP servers с локальной областью хранятся в `~/.claude.json` (ваш домашний каталог), в то время как общие локальные параметры используют `.claude/settings.local.json` (в каталоге проекта). См. [Параметры](/ru/settings#settings-files) для получения подробной информации о расположении файлов параметров.
440</Note>
441
442```bash theme={null}
443# Добавить server с локальной областью (по умолчанию)
444claude mcp add --transport http stripe https://mcp.stripe.com
445
446# Явно указать локальную область
447claude mcp add --transport http stripe --scope local https://mcp.stripe.com
448```
449
450Команда записывает server в запись для вашего текущего проекта внутри `~/.claude.json`. Пример ниже показывает результат при запуске из `/path/to/your/project`:
451
452```json theme={null}
453{
454 "projects": {
455 "/path/to/your/project": {
456 "mcpServers": {
457 "stripe": {
458 "type": "http",
459 "url": "https://mcp.stripe.com"
460 }
461 }
462 }
463 }
464}
465```
466
467### Область проекта
468
469Servers с областью проекта позволяют командной работе, сохраняя конфигурации в файле `.mcp.json` в корневом каталоге вашего проекта. Этот файл предназначен для проверки в систему контроля версий, обеспечивая всем членам команды доступ к одним и тем же MCP tools и сервисам. Когда вы добавляете server с областью проекта, Claude Code автоматически создает или обновляет этот файл с соответствующей структурой конфигурации.
470
471```bash theme={null}
472# Добавить server с областью проекта
473claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp
474```
475
476Результирующий файл `.mcp.json` следует стандартизированному формату:
477
478```json theme={null}
479{
480 "mcpServers": {
481 "shared-server": {
482 "command": "/path/to/server",
483 "args": [],
484 "env": {}
485 }
486 }
487}
488```
489
490По соображениям безопасности Claude Code запрашивает одобрение перед использованием servers с областью проекта из файлов `.mcp.json`. Если вам нужно сбросить эти выборы одобрения, используйте команду `claude mcp reset-project-choices`.
491
492### Область пользователя
493
494Servers с областью пользователя хранятся в `~/.claude.json` и обеспечивают доступность между проектами, делая их доступными во всех проектах на вашей машине, оставаясь приватными для вашей учетной записи пользователя. Эта область хорошо работает для личных utility servers, инструментов разработки или сервисов, которые вы часто используете в разных проектах.
495
496```bash theme={null}
497# Добавить server пользователя
498claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic
499```
500
501### Иерархия области и приоритет
502
503Когда один и тот же server определен в более чем одном месте, Claude Code подключается к нему один раз, используя определение из источника с наивысшим приоритетом:
504
5051. Локальная область
5062. Область проекта
5073. Область пользователя
5084. [Plugin-provided servers](/ru/plugins)
5095. [claude.ai connectors](#use-mcp-servers-from-claude-ai)
510
511Три области совпадают дубликаты по имени. Плагины и соединители совпадают по конечной точке, поэтому тот, который указывает на тот же URL или команду, что и server выше, рассматривается как дубликат.
512
513### Расширение переменных окружения в `.mcp.json`
514
515Claude Code поддерживает расширение переменных окружения в файлах `.mcp.json`, позволяя командам делиться конфигурациями, сохраняя гибкость для путей, специфичных для машины, и чувствительных значений, таких как ключи API.
516
517**Поддерживаемый синтаксис:**
518
519* `${VAR}` - расширяется до значения переменной окружения `VAR`
520* `${VAR:-default}` - расширяется до `VAR`, если установлена, иначе использует `default`
521
522**Места расширения:**
523Переменные окружения могут быть расширены в:
524
525* `command` - путь к исполняемому файлу server
526* `args` - аргументы командной строки
527* `env` - переменные окружения, передаваемые server
528* `url` - для типов HTTP server
529* `headers` - для аутентификации HTTP server
530
531**Пример с расширением переменных:**
532
533```json theme={null}
534{
535 "mcpServers": {
536 "api-server": {
537 "type": "http",
538 "url": "${API_BASE_URL:-https://api.example.com}/mcp",
539 "headers": {
540 "Authorization": "Bearer ${API_KEY}"
541 }
542 }
543 }
544}
545```
546
547Если требуемая переменная окружения не установлена и не имеет значения по умолчанию, Claude Code не сможет разобрать конфигурацию.
548
549## Практические примеры
550
551{/* ### Пример: автоматизация тестирования браузера с помощью Playwright
552
553```bash
554claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest
555```
556
557Затем напишите и запустите тесты браузера:
558
559```text
560Проверьте, работает ли поток входа с test@example.com
561```
562```text
563Сделайте снимок экрана страницы оформления заказа на мобильном устройстве
564```
565```text
566Убедитесь, что функция поиска возвращает результаты
567``` */}
568
569### Пример: мониторинг ошибок с помощью Sentry
570
571```bash theme={null}
572claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
573```
574
575Аутентифицируйтесь с помощью вашей учетной записи Sentry:
576
577```text theme={null}
578/mcp
579```
580
581Затем отладьте проблемы в production:
582
583```text theme={null}
584Какие наиболее распространенные ошибки за последние 24 часа?
585```
586
587```text theme={null}
588Покажите мне трассировку стека для ошибки ID abc123
589```
590
591```text theme={null}
592Какое развертывание внесло эти новые ошибки?
593```
594
595### Пример: подключение к GitHub для проверки кода
596
597GitHub's remote MCP server аутентифицируется с помощью токена личного доступа GitHub, переданного как заголовок. Чтобы получить его, откройте [параметры токена GitHub](https://github.com/settings/personal-access-tokens), создайте новый детальный токен с доступом к репозиториям, с которыми вы хотите, чтобы Claude работал, затем добавьте server:
598
599```bash theme={null}
600claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
601 --header "Authorization: Bearer YOUR_GITHUB_PAT"
602```
603
604Затем работайте с GitHub:
605
606```text theme={null}
607Проверьте PR #456 и предложите улучшения
608```
609
610```text theme={null}
611Создайте новую проблему для найденной нами ошибки
612```
613
614```text theme={null}
615Покажите мне все открытые PR, назначенные мне
616```
617
618### Пример: запрос к базе данных PostgreSQL
619
620```bash theme={null}
621claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
622 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"
623```
624
625Затем запрашивайте вашу базу данных естественным образом:
626
627```text theme={null}
628Какой у нас общий доход в этом месяце?
629```
630
631```text theme={null}
632Покажите мне схему для таблицы orders
633```
634
635```text theme={null}
636Найдите клиентов, которые не совершали покупку в течение 90 дней
637```
638
639## Аутентификация с удаленными MCP servers
640
641Многие облачные MCP servers требуют аутентификации. Claude Code поддерживает OAuth 2.0 для безопасных соединений.
642
643<Steps>
644 <Step title="Добавьте server, который требует аутентификации">
645 Например:
646
647 ```bash theme={null}
648 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
649 ```
650 </Step>
651
652 <Step title="Используйте команду /mcp в Claude Code">
653 В Claude Code используйте команду:
654
655 ```text theme={null}
656 /mcp
657 ```
658
659 Затем следуйте инструкциям в вашем браузере для входа.
660 </Step>
661</Steps>
662
663<Tip>
664 Советы:
665
666 * Токены аутентификации хранятся безопасно и автоматически обновляются
667 * Используйте "Clear authentication" в меню `/mcp` для отзыва доступа
668 * Если ваш браузер не открывается автоматически, скопируйте предоставленный URL и откройте его вручную
669 * Если перенаправление браузера не удается с ошибкой соединения после аутентификации, вставьте полный URL обратного вызова из адресной строки браузера в приглашение URL, которое появляется в Claude Code
670 * Аутентификация OAuth работает с HTTP servers
671</Tip>
672
673### Используйте фиксированный порт обратного вызова OAuth
674
675Некоторые MCP servers требуют конкретный URI перенаправления, зарегистрированный заранее. По умолчанию Claude Code выбирает случайный доступный порт для обратного вызова OAuth. Используйте `--callback-port` для фиксации порта, чтобы он соответствовал предварительно зарегистрированному URI перенаправления формы `http://localhost:PORT/callback`.
676
677Вы можете использовать `--callback-port` самостоятельно (с динамической регистрацией клиента) или вместе с `--client-id` (с предварительно настроенными учетными данными).
678
679```bash theme={null}
680# Фиксированный порт обратного вызова с динамической регистрацией клиента
681claude mcp add --transport http \
682 --callback-port 8080 \
683 my-server https://mcp.example.com/mcp
684```
685
686### Используйте предварительно настроенные учетные данные OAuth
687
688Некоторые MCP servers не поддерживают автоматическую настройку OAuth через Dynamic Client Registration. Если вы видите ошибку типа "Incompatible auth server: does not support dynamic client registration", server требует предварительно настроенные учетные данные. Claude Code также поддерживает servers, которые используют Client ID Metadata Document (CIMD) вместо Dynamic Client Registration, и обнаруживает их автоматически. Если автоматическое обнаружение не удается, сначала зарегистрируйте приложение OAuth через портал разработчика server, затем предоставьте учетные данные при добавлении server.
689
690<Steps>
691 <Step title="Зарегистрируйте приложение OAuth с помощью server">
692 Создайте приложение через портал разработчика server и запишите ваш client ID и client secret.
693
694 Многие servers также требуют URI перенаправления. Если это так, выберите порт и зарегистрируйте URI перенаправления в формате `http://localhost:PORT/callback`. Используйте тот же порт с `--callback-port` на следующем шаге.
695 </Step>
696
697 <Step title="Добавьте server с вашими учетными данными">
698 Выберите один из следующих методов. Порт, используемый для `--callback-port`, может быть любым доступным портом. Он просто должен соответствовать URI перенаправления, который вы зарегистрировали на предыдущем шаге.
699
700 <Tabs>
701 <Tab title="claude mcp add">
702 Используйте `--client-id` для передачи client ID вашего приложения. Флаг `--client-secret` запрашивает secret с замаскированным вводом:
703
704 ```bash theme={null}
705 claude mcp add --transport http \
706 --client-id your-client-id --client-secret --callback-port 8080 \
707 my-server https://mcp.example.com/mcp
708 ```
709 </Tab>
710
711 <Tab title="claude mcp add-json">
712 Включите объект `oauth` в конфигурацию JSON и передайте `--client-secret` как отдельный флаг:
713
714 ```bash theme={null}
715 claude mcp add-json my-server \
716 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' \
717 --client-secret
718 ```
719 </Tab>
720
721 <Tab title="claude mcp add-json (только порт обратного вызова)">
722 Используйте `--callback-port` без client ID для фиксации порта при использовании динамической регистрации клиента:
723
724 ```bash theme={null}
725 claude mcp add-json my-server \
726 '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"callbackPort":8080}}'
727 ```
728 </Tab>
729
730 <Tab title="CI / переменная окружения">
731 Установите secret через переменную окружения, чтобы пропустить интерактивное приглашение:
732
733 ```bash theme={null}
734 MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \
735 --client-id your-client-id --client-secret --callback-port 8080 \
736 my-server https://mcp.example.com/mcp
737 ```
738 </Tab>
739 </Tabs>
740 </Step>
741
742 <Step title="Аутентифицируйтесь в Claude Code">
743 Запустите `/mcp` в Claude Code и следуйте потоку входа браузера.
744 </Step>
745</Steps>
746
747<Tip>
748 Советы:
749
750 * Client secret хранится безопасно в вашей системной связке ключей (macOS) или файле учетных данных, а не в вашей конфигурации
751 * Если server использует публичный OAuth клиент без secret, используйте только `--client-id` без `--client-secret`
752 * `--callback-port` можно использовать с `--client-id` или без него
753 * Эти флаги применяются только к HTTP и SSE транспортам. Они не влияют на stdio servers
754 * Используйте `claude mcp get <name>` для проверки того, что учетные данные OAuth настроены для server
755</Tip>
756
757### Переопределите обнаружение метаданных OAuth
758
759Укажите Claude Code на конкретный URL метаданных сервера авторизации OAuth, чтобы обойти цепочку обнаружения по умолчанию. Установите `authServerMetadataUrl`, когда стандартные конечные точки MCP server выдают ошибку, или когда вы хотите направить обнаружение через внутренний прокси. По умолчанию Claude Code сначала проверяет метаданные защищенного ресурса RFC 9728 на `/.well-known/oauth-protected-resource`, затем возвращается к метаданным сервера авторизации RFC 8414 на `/.well-known/oauth-authorization-server`.
760
761Установите `authServerMetadataUrl` в объекте `oauth` конфигурации вашего server в `.mcp.json`:
762
763```json theme={null}
764{
765 "mcpServers": {
766 "my-server": {
767 "type": "http",
768 "url": "https://mcp.example.com/mcp",
769 "oauth": {
770 "authServerMetadataUrl": "https://auth.example.com/.well-known/openid-configuration"
771 }
772 }
773 }
774}
775```
776
777URL должен использовать `https://`. `authServerMetadataUrl` требует Claude Code v2.1.64 или позже. `scopes_supported` URL метаданных переопределяет области, которые объявляет upstream server.
778
779### Ограничьте области OAuth
780
781Установите `oauth.scopes` для фиксации областей, которые Claude Code запрашивает во время потока авторизации. Это поддерживаемый способ ограничить MCP server подмножеством, одобренным командой безопасности, когда upstream сервер авторизации объявляет больше областей, чем вы хотите предоставить. Значение — это одна строка, разделенная пробелами, соответствующая формату параметра `scope` в RFC 6749 §3.3.
782
783```json theme={null}
784{
785 "mcpServers": {
786 "slack": {
787 "type": "http",
788 "url": "https://mcp.slack.com/mcp",
789 "oauth": {
790 "scopes": "channels:read chat:write search:read"
791 }
792 }
793 }
794}
795```
796
797`oauth.scopes` имеет приоритет над `authServerMetadataUrl` и областями, которые server обнаруживает на `/.well-known`. Оставьте его неустановленным, чтобы позволить MCP server определить запрашиваемый набор областей.
798
799Если сервер авторизации объявляет `offline_access` в `scopes_supported`, Claude Code добавляет его к фиксированным областям, чтобы токен доступа мог быть обновлен без нового входа в браузер.
800
801Если server позже возвращает 403 `insufficient_scope` для вызова инструмента, Claude Code переаутентифицируется с теми же фиксированными областями. Расширьте `oauth.scopes`, когда инструмент, который вам нужен, требует область вне фиксации.
802
803### Используйте динамические заголовки для пользовательской аутентификации
804
805Если ваш MCP server использует схему аутентификации, отличную от OAuth (такую как Kerberos, краткосрочные токены или внутреннее SSO), используйте `headersHelper` для генерации заголовков запроса во время подключения. Claude Code запускает команду и объединяет ее выход в заголовки подключения.
806
807```json theme={null}
808{
809 "mcpServers": {
810 "internal-api": {
811 "type": "http",
812 "url": "https://mcp.internal.example.com",
813 "headersHelper": "/opt/bin/get-mcp-auth-headers.sh"
814 }
815 }
816}
817```
818
819Команда также может быть встроенной:
820
821```json theme={null}
822{
823 "mcpServers": {
824 "internal-api": {
825 "type": "http",
826 "url": "https://mcp.internal.example.com",
827 "headersHelper": "echo '{\"Authorization\": \"Bearer '\"$(get-token)\"'\"}'"
828 }
829 }
830}
831```
832
833**Требования:**
834
835* Команда должна записать объект JSON пар строк ключ-значение в stdout
836* Команда запускается в оболочке с timeout в 10 секунд
837* Динамические заголовки переопределяют любые статические `headers` с тем же именем
838
839Помощник запускается заново при каждом подключении (при запуске сеанса и при переподключении). Кэширования нет, поэтому ваш скрипт отвечает за любое повторное использование токена.
840
841Claude Code устанавливает эти переменные окружения при выполнении помощника:
842
843| Переменная | Значение |
844| :---------------------------- | :------------- |
845| `CLAUDE_CODE_MCP_SERVER_NAME` | имя MCP server |
846| `CLAUDE_CODE_MCP_SERVER_URL` | URL MCP server |
847
848Используйте их для написания одного скрипта помощника, который служит нескольким MCP servers.
849
850<Note>
851 `headersHelper` выполняет произвольные команды оболочки. Когда определено в области проекта или локальной области, он запускается только после того, как вы примете диалог доверия рабочей области.
852</Note>
853
854## Добавьте MCP servers из конфигурации JSON
855
856Если у вас есть конфигурация JSON для MCP server, вы можете добавить ее напрямую:
857
858<Steps>
859 <Step title="Добавьте MCP server из JSON">
860 ```bash theme={null}
861 # Базовый синтаксис
862 claude mcp add-json <name> '<json>'
863
864 # Пример: добавление HTTP server с конфигурацией JSON
865 claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'
866
867 # Пример: добавление stdio server с конфигурацией JSON
868 claude mcp add-json local-weather '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'
869
870 # Пример: добавление HTTP server с предварительно настроенными учетными данными OAuth
871 claude mcp add-json my-server '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' --client-secret
872 ```
873 </Step>
874
875 <Step title="Проверьте, что server был добавлен">
876 ```bash theme={null}
877 claude mcp get weather-api
878 ```
879 </Step>
880</Steps>
881
882<Tip>
883 Советы:
884
885 * Убедитесь, что JSON правильно экранирован в вашей оболочке
886 * JSON должен соответствовать схеме конфигурации MCP server
887 * Вы можете использовать `--scope user` для добавления server в вашу конфигурацию пользователя вместо конфигурации, специфичной для проекта
888</Tip>
889
890## Импортируйте MCP servers из Claude Desktop
891
892Если вы уже настроили MCP servers в Claude Desktop, вы можете их импортировать:
893
894<Steps>
895 <Step title="Импортируйте servers из Claude Desktop">
896 ```bash theme={null}
897 # Базовый синтаксис
898 claude mcp add-from-claude-desktop
899 ```
900 </Step>
901
902 <Step title="Выберите, какие servers импортировать">
903 После запуска команды вы увидите интерактивный диалог, который позволяет вам выбрать, какие servers вы хотите импортировать.
904 </Step>
905
906 <Step title="Проверьте, что servers были импортированы">
907 ```bash theme={null}
908 claude mcp list
909 ```
910 </Step>
911</Steps>
912
913<Tip>
914 Советы:
915
916 * Эта функция работает только на macOS и Windows Subsystem for Linux (WSL)
917 * Она читает файл конфигурации Claude Desktop из его стандартного расположения на этих платформах
918 * Используйте флаг `--scope user` для добавления servers в вашу конфигурацию пользователя
919 * Импортированные servers будут иметь те же имена, что и в Claude Desktop
920 * Если servers с одинаковыми именами уже существуют, они получат числовой суффикс (например, `server_1`)
921</Tip>
922
923## Используйте MCP servers из Claude.ai
924
925Если вы вошли в Claude Code с учетной записью [Claude.ai](https://claude.ai), MCP servers, которые вы добавили в Claude.ai, автоматически доступны в Claude Code:
926
927<Steps>
928 <Step title="Настройте MCP servers в Claude.ai">
929 Добавьте servers на [claude.ai/customize/connectors](https://claude.ai/customize/connectors). В планах Team и Enterprise только администраторы могут добавлять servers.
930 </Step>
931
932 <Step title="Аутентифицируйте MCP server">
933 Завершите все необходимые шаги аутентификации в Claude.ai.
934 </Step>
935
936 <Step title="Просмотрите и управляйте servers в Claude Code">
937 В Claude Code используйте команду:
938
939 ```text theme={null}
940 /mcp
941 ```
942
943 Claude.ai servers отображаются в списке с индикаторами, показывающими, что они поступают из Claude.ai.
944 </Step>
945</Steps>
946
947Чтобы отключить MCP servers claude.ai в Claude Code, установите переменную окружения `ENABLE_CLAUDEAI_MCP_SERVERS` на `false`:
948
949```bash theme={null}
950ENABLE_CLAUDEAI_MCP_SERVERS=false claude
951```
952
953## Используйте Claude Code как MCP server
954
955Вы можете использовать сам Claude Code как MCP server, к которому могут подключаться другие приложения:
956
957```bash theme={null}
958# Запустите Claude как stdio MCP server
959claude mcp serve
960```
961
962Вы можете использовать это в Claude Desktop, добавив эту конфигурацию в claude\_desktop\_config.json:
963
964```json theme={null}
965{
966 "mcpServers": {
967 "claude-code": {
968 "type": "stdio",
969 "command": "claude",
970 "args": ["mcp", "serve"],
971 "env": {}
972 }
973 }
974}
975```
976
977<Warning>
978 **Настройка пути к исполняемому файлу**: поле `command` должно ссылаться на исполняемый файл Claude Code. Если команда `claude` не находится в PATH вашей системы, вам нужно указать полный путь к исполняемому файлу.
979
980 Чтобы найти полный путь:
981
982 ```bash theme={null}
983 which claude
984 ```
985
986 Затем используйте полный путь в вашей конфигурации:
987
988 ```json theme={null}
989 {
990 "mcpServers": {
991 "claude-code": {
992 "type": "stdio",
993 "command": "/full/path/to/claude",
994 "args": ["mcp", "serve"],
995 "env": {}
996 }
997 }
998 }
999 ```
1000
1001 Без правильного пути к исполняемому файлу вы столкнетесь с ошибками типа `spawn claude ENOENT`.
1002</Warning>
1003
1004<Tip>
1005 Советы:
1006
1007 * Server предоставляет доступ к инструментам Claude, таким как View, Edit, LS и т. д.
1008 * В Claude Desktop попробуйте попросить Claude прочитать файлы в каталоге, внести изменения и многое другое.
1009 * Обратите внимание, что этот MCP server только предоставляет инструменты Claude Code вашему MCP клиенту, поэтому ваш собственный клиент отвечает за реализацию подтверждения пользователя для отдельных вызовов инструментов.
1010</Tip>
1011
1012## Лимиты выхода MCP и предупреждения
1013
1014Когда инструменты MCP производят большие выходы, Claude Code помогает управлять использованием токенов, чтобы предотвратить перегрузку контекста вашего разговора:
1015
1016* **Порог предупреждения выхода**: Claude Code отображает предупреждение, когда выход любого инструмента MCP превышает 10 000 токенов
1017* **Настраиваемый лимит**: вы можете отрегулировать максимальное количество разрешенных токенов выхода MCP, используя переменную окружения `MAX_MCP_OUTPUT_TOKENS`
1018* **Лимит по умолчанию**: максимум по умолчанию составляет 25 000 токенов
1019* **Область**: переменная окружения применяется к инструментам, которые не объявляют свой собственный лимит. Инструменты, которые устанавливают [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool), используют это значение вместо этого для текстового контента, независимо от того, что установлено `MAX_MCP_OUTPUT_TOKENS`. Инструменты, которые возвращают данные изображения, все еще подлежат `MAX_MCP_OUTPUT_TOKENS`
1020
1021Чтобы увеличить лимит для инструментов, которые производят большие выходы:
1022
1023```bash theme={null}
1024export MAX_MCP_OUTPUT_TOKENS=50000
1025claude
1026```
1027
1028Это особенно полезно при работе с MCP servers, которые:
1029
1030* запрашивают большие наборы данных или базы данных
1031* генерируют подробные отчеты или документацию
1032* обрабатывают обширные файлы журналов или информацию отладки
1033
1034### Повысьте лимит для конкретного инструмента
1035
1036Если вы создаете MCP server, вы можете позволить отдельным инструментам возвращать результаты больше, чем порог сохранения на диск по умолчанию, установив `_meta["anthropic/maxResultSizeChars"]` в записи инструмента в ответе `tools/list`. Claude Code повышает порог этого инструмента до аннотированного значения, вплоть до жесткого потолка в 500 000 символов.
1037
1038Это полезно для инструментов, которые возвращают по сути большие, но необходимые выходы, такие как схемы баз данных или полные деревья файлов. Без аннотации результаты, которые превышают порог по умолчанию, сохраняются на диск и заменяются ссылкой на файл в разговоре.
1039
1040```json theme={null}
1041{
1042 "name": "get_schema",
1043 "description": "Returns the full database schema",
1044 "_meta": {
1045 "anthropic/maxResultSizeChars": 200000
1046 }
1047}
1048```
1049
1050Аннотация применяется независимо от `MAX_MCP_OUTPUT_TOKENS` для текстового контента, поэтому пользователям не нужно повышать переменную окружения для инструментов, которые ее объявляют. Инструменты, которые возвращают данные изображения, все еще подлежат лимиту токенов.
1051
1052<Warning>
1053 Если вы часто сталкиваетесь с предупреждениями выхода с конкретными MCP servers, которые вы не контролируете, рассмотрите возможность увеличения лимита `MAX_MCP_OUTPUT_TOKENS`. Вы также можете попросить автора server добавить аннотацию `anthropic/maxResultSizeChars` или разбить на страницы свои ответы. Аннотация не влияет на инструменты, которые возвращают содержимое изображения; для них повышение `MAX_MCP_OUTPUT_TOKENS` — единственный вариант.
1054</Warning>
1055
1056## Ответьте на запросы MCP elicitation
1057
1058MCP servers могут запрашивать структурированный ввод от вас во время выполнения задачи, используя elicitation. Когда server нуждается в информации, которую он не может получить самостоятельно, Claude Code отображает интерактивный диалог и передает ваш ответ обратно server. На вашей стороне не требуется никакой конфигурации: диалоги elicitation появляются автоматически, когда server их запрашивает.
1059
1060Servers могут запрашивать ввод двумя способами:
1061
1062* **Режим формы**: Claude Code показывает диалог с полями формы, определенными server (например, приглашение имени пользователя и пароля). Заполните поля и отправьте.
1063* **Режим URL**: Claude Code открывает URL браузера для аутентификации или одобрения. Завершите процесс в браузере, затем подтвердите в CLI.
1064
1065Чтобы автоматически ответить на запросы elicitation без отображения диалога, используйте [`Elicitation` hook](/ru/hooks#Elicitation).
1066
1067Если вы создаете MCP server, который использует elicitation, см. [спецификацию MCP elicitation](https://modelcontextprotocol.io/docs/learn/client-concepts#elicitation) для деталей протокола и примеров схемы.
1068
1069## Используйте MCP ресурсы
1070
1071MCP servers могут предоставлять ресурсы, на которые вы можете ссылаться, используя упоминания @, аналогично тому, как вы ссылаетесь на файлы.
1072
1073### Ссылка на MCP ресурсы
1074
1075<Steps>
1076 <Step title="Список доступных ресурсов">
1077 Введите `@` в вашу подсказку, чтобы увидеть доступные ресурсы от всех подключенных MCP servers. Ресурсы отображаются рядом с файлами в меню автодополнения.
1078 </Step>
1079
1080 <Step title="Ссылка на конкретный ресурс">
1081 Используйте формат `@server:protocol://resource/path` для ссылки на ресурс:
1082
1083 ```text theme={null}
1084 Можете ли вы проанализировать @github:issue://123 и предложить исправление?
1085 ```
1086
1087 ```text theme={null}
1088 Пожалуйста, проверьте документацию API на @docs:file://api/authentication
1089 ```
1090 </Step>
1091
1092 <Step title="Несколько ссылок на ресурсы">
1093 Вы можете ссылаться на несколько ресурсов в одной подсказке:
1094
1095 ```text theme={null}
1096 Сравните @postgres:schema://users с @docs:file://database/user-model
1097 ```
1098 </Step>
1099</Steps>
1100
1101<Tip>
1102 Советы:
1103
1104 * Ресурсы автоматически получаются и включаются как вложения при ссылке
1105 * Пути ресурсов поддерживают нечеткий поиск в автодополнении упоминания @
1106 * Claude Code автоматически предоставляет инструменты для списка и чтения MCP ресурсов, когда servers их поддерживают
1107 * Ресурсы могут содержать любой тип контента, который предоставляет MCP server (текст, JSON, структурированные данные и т. д.)
1108</Tip>
1109
1110## Масштабирование с помощью MCP Tool Search
1111
1112Tool search сохраняет использование контекста MCP низким, откладывая определения инструментов до тех пор, пока Claude их не потребует. Только имена инструментов загружаются при запуске сеанса, поэтому добавление большего количества MCP servers имеет минимальное влияние на ваше окно контекста.
1113
1114### Как это работает
1115
1116Tool search включен по умолчанию. Инструменты MCP откладываются, а не загружаются в контекст заранее, и Claude использует инструмент поиска для обнаружения релевантных инструментов, когда задача их требует. Только инструменты, которые Claude действительно использует, входят в контекст. С вашей точки зрения инструменты MCP работают точно так же, как раньше.
1117
1118Если вы предпочитаете загрузку на основе порога, установите `ENABLE_TOOL_SEARCH=auto` для загрузки схем заранее, когда они подходят в пределах 10% окна контекста, и откладывайте только переполнение. См. [Настройте tool search](#configure-tool-search) для всех опций.
1119
1120### Для авторов MCP server
1121
1122Если вы создаете MCP server, поле инструкций server становится более полезным с включенным Tool Search. Инструкции server помогают Claude понять, когда искать ваши инструменты, аналогично тому, как работают [skills](/ru/skills).
1123
1124Добавьте четкие, описательные инструкции server, которые объясняют:
1125
1126* какую категорию задач обрабатывают ваши инструменты
1127* когда Claude должен искать ваши инструменты
1128* ключевые возможности, которые предоставляет ваш server
1129
1130Claude Code усекает описания инструментов и инструкции server на 2KB каждое. Держите их краткими, чтобы избежать усечения, и поместите критические детали в начало.
1131
1132### Настройте tool search
1133
1134Tool search включен по умолчанию: инструменты MCP откладываются и обнаруживаются по требованию. Он отключен по умолчанию на Vertex AI, который не принимает заголовок бета-версии tool search, и когда `ANTHROPIC_BASE_URL` указывает на хост, не являющийся первой стороной, так как большинство прокси не пересылают блоки `tool_reference`. Установите `ENABLE_TOOL_SEARCH` явно, чтобы согласиться. Эта функция требует моделей, которые поддерживают блоки `tool_reference`: Sonnet 4 и позже, или Opus 4 и позже. Модели Haiku не поддерживают tool search.
1135
1136Управляйте поведением tool search с помощью переменной окружения `ENABLE_TOOL_SEARCH`:
1137
1138| Значение | Поведение |
1139| :--------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1140| (не установлено) | Все инструменты MCP откладываются и загружаются по требованию. Возвращается к загрузке заранее на Vertex AI или когда `ANTHROPIC_BASE_URL` является хостом, не являющимся первой стороной |
1141| `true` | Все инструменты MCP откладываются, включая на Vertex AI и для `ANTHROPIC_BASE_URL`, не являющегося первой стороной |
1142| `auto` | Режим порога: инструменты загружаются заранее, если они подходят в пределах 10% окна контекста, откладываются иначе |
1143| `auto:<N>` | Режим порога с пользовательским процентом, где `<N>` — это 0-100 (например, `auto:5` для 5%) |
1144| `false` | Все инструменты MCP загружаются заранее, без откладывания |
1145
1146```bash theme={null}
1147# Используйте пользовательский порог 5%
1148ENABLE_TOOL_SEARCH=auto:5 claude
1149
1150# Полностью отключите tool search
1151ENABLE_TOOL_SEARCH=false claude
1152```
1153
1154Или установите значение в поле `env` вашего [settings.json](/ru/settings#available-settings).
1155
1156Вы также можете отключить инструмент ToolSearch специально:
1157
1158```json theme={null}
1159{
1160 "permissions": {
1161 "deny": ["ToolSearch"]
1162 }
1163}
1164```
1165
1166### Исключите server из откладывания
1167
1168Если инструменты server должны всегда быть видны Claude без этапа поиска, установите `alwaysLoad` в значение `true` в конфигурации этого server. Каждый инструмент из этого server затем загружается в контекст при запуске сеанса независимо от параметра `ENABLE_TOOL_SEARCH`. Используйте это для небольшого количества инструментов, которые Claude требуются на каждом ходу, так как каждый предварительно загруженный инструмент потребляет контекст, который в противном случае был бы доступен для вашего разговора.
1169
1170Следующая запись `.mcp.json` исключает один HTTP server, оставляя другие servers отложенными:
1171
1172```json theme={null}
1173{
1174 "mcpServers": {
1175 "core-tools": {
1176 "type": "http",
1177 "url": "https://mcp.example.com/mcp",
1178 "alwaysLoad": true
1179 }
1180 }
1181}
1182```
1183
1184Поле `alwaysLoad` доступно на всех типах server и требует Claude Code v2.1.121 или позже. MCP server также может отметить отдельные инструменты как всегда загружаемые, включив `"anthropic/alwaysLoad": true` в объект `_meta` инструмента, что имеет тот же эффект только для этого инструмента.
1185
1186## Используйте MCP подсказки как команды
1187
1188MCP servers могут предоставлять подсказки, которые становятся доступными как команды в Claude Code.
1189
1190### Выполните MCP подсказки
1191
1192<Steps>
1193 <Step title="Откройте доступные подсказки">
1194 Введите `/` для просмотра всех доступных команд, включая те из MCP servers. MCP подсказки отображаются в формате `/mcp__servername__promptname`.
1195 </Step>
1196
1197 <Step title="Выполните подсказку без аргументов">
1198 ```text theme={null}
1199 /mcp__github__list_prs
1200 ```
1201 </Step>
1202
1203 <Step title="Выполните подсказку с аргументами">
1204 Многие подсказки принимают аргументы. Передайте их через пробел после команды:
1205
1206 ```text theme={null}
1207 /mcp__github__pr_review 456
1208 ```
1209
1210 ```text theme={null}
1211 /mcp__jira__create_issue "Bug in login flow" high
1212 ```
1213 </Step>
1214</Steps>
1215
1216<Tip>
1217 Советы:
1218
1219 * MCP подсказки динамически обнаруживаются из подключенных servers
1220 * Аргументы анализируются на основе определенных параметров подсказки
1221 * Результаты подсказки вводятся непосредственно в разговор
1222 * Имена server и подсказки нормализуются (пробелы становятся подчеркиваниями)
1223</Tip>
1224
1225## Управляемая конфигурация MCP
1226
1227Для организаций, которым требуется централизованный контроль над MCP servers, Claude Code поддерживает две опции конфигурации:
1228
12291. **Исключительный контроль с `managed-mcp.json`**: развертывание фиксированного набора MCP servers, которые пользователи не могут изменять или расширять
12302. **Контроль на основе политики с allowlists/denylists**: позволить пользователям добавлять свои собственные servers, но ограничить, какие из них разрешены
1231
1232Эти опции позволяют IT администраторам:
1233
1234* **Контролировать, какие MCP servers могут использовать сотрудники**: развертывание стандартизированного набора одобренных MCP servers по всей организации
1235* **Предотвратить несанкционированные MCP servers**: ограничить пользователей от добавления неодобренных MCP servers
1236* **Полностью отключить MCP**: удалить функциональность MCP, если это необходимо
1237
1238### Вариант 1: Исключительный контроль с managed-mcp.json
1239
1240Когда вы развертываете файл `managed-mcp.json`, он берет **исключительный контроль** над всеми MCP servers. Пользователи не могут добавлять, изменять или использовать какие-либо MCP servers, кроме определенных в этом файле. Это самый простой подход для организаций, которые хотят полный контроль.
1241
1242Системные администраторы развертывают файл конфигурации в системный каталог:
1243
1244* macOS: `/Library/Application Support/ClaudeCode/managed-mcp.json`
1245* Linux и WSL: `/etc/claude-code/managed-mcp.json`
1246* Windows: `C:\Program Files\ClaudeCode\managed-mcp.json`
1247
1248<Note>
1249 Это системные пути (не домашние каталоги пользователей, такие как `~/Library/...`), которые требуют привилегий администратора. Они предназначены для развертывания IT администраторами.
1250</Note>
1251
1252Файл `managed-mcp.json` использует тот же формат, что и стандартный файл `.mcp.json`:
1253
1254```json theme={null}
1255{
1256 "mcpServers": {
1257 "github": {
1258 "type": "http",
1259 "url": "https://api.githubcopilot.com/mcp/"
1260 },
1261 "sentry": {
1262 "type": "http",
1263 "url": "https://mcp.sentry.dev/mcp"
1264 },
1265 "company-internal": {
1266 "type": "stdio",
1267 "command": "/usr/local/bin/company-mcp-server",
1268 "args": ["--config", "/etc/company/mcp-config.json"],
1269 "env": {
1270 "COMPANY_API_URL": "https://internal.company.com"
1271 }
1272 }
1273 }
1274}
1275```
1276
1277### Вариант 2: Контроль на основе политики с allowlists и denylists
1278
1279Вместо того чтобы брать исключительный контроль, администраторы могут позволить пользователям настраивать свои собственные MCP servers, одновременно применяя ограничения на то, какие servers разрешены. Этот подход использует `allowedMcpServers` и `deniedMcpServers` в [файле управляемых параметров](/ru/settings#settings-files).
1280
1281<Note>
1282 **Выбор между вариантами**: используйте вариант 1 (`managed-mcp.json`), когда вы хотите развернуть фиксированный набор servers без настройки пользователем. Используйте вариант 2 (allowlists/denylists), когда вы хотите позволить пользователям добавлять свои собственные servers в рамках ограничений политики.
1283</Note>
1284
1285#### Опции ограничения
1286
1287Каждая запись в allowlist или denylist может ограничивать servers тремя способами:
1288
12891. **По имени server** (`serverName`): соответствует настроенному имени server
12902. **По команде** (`serverCommand`): соответствует точной команде и аргументам, используемым для запуска stdio servers
12913. **По шаблону URL** (`serverUrl`): соответствует URL-адресам удаленных servers с поддержкой подстановочных символов
1292
1293**Важно**: каждая запись должна иметь ровно одно из `serverName`, `serverCommand` или `serverUrl`.
1294
1295#### Пример конфигурации
1296
1297```json theme={null}
1298{
1299 "allowedMcpServers": [
1300 // Разрешить по имени server
1301 { "serverName": "github" },
1302 { "serverName": "sentry" },
1303
1304 // Разрешить по точной команде (для stdio servers)
1305 { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem"] },
1306 { "serverCommand": ["python", "/usr/local/bin/approved-server.py"] },
1307
1308 // Разрешить по шаблону URL (для удаленных servers)
1309 { "serverUrl": "https://mcp.company.com/*" },
1310 { "serverUrl": "https://*.internal.corp/*" }
1311 ],
1312 "deniedMcpServers": [
1313 // Заблокировать по имени server
1314 { "serverName": "dangerous-server" },
1315
1316 // Заблокировать по точной команде (для stdio servers)
1317 { "serverCommand": ["npx", "-y", "unapproved-package"] },
1318
1319 // Заблокировать по шаблону URL (для удаленных servers)
1320 { "serverUrl": "https://*.untrusted.com/*" }
1321 ]
1322}
1323```
1324
1325#### Как работают ограничения на основе команд
1326
1327**Точное совпадение**:
1328
1329* Массивы команд должны совпадать **точно** — как команда, так и все аргументы в правильном порядке
1330* Пример: `["npx", "-y", "server"]` НЕ будет совпадать с `["npx", "server"]` или `["npx", "-y", "server", "--flag"]`
1331
1332**Поведение stdio server**:
1333
1334* Когда allowlist содержит **любые** записи `serverCommand`, stdio servers **должны** совпадать с одной из этих команд
1335* Stdio servers не могут пройти только по имени, когда присутствуют ограничения команд
1336* Это гарантирует, что администраторы могут применять, какие команды разрешены для запуска
1337
1338**Поведение удаленного server**:
1339
1340* Удаленные servers (HTTP, SSE, WebSocket) используют сопоставление на основе URL, когда в allowlist существуют записи `serverUrl`
1341* Если записей URL не существует, удаленные servers возвращаются к сопоставлению на основе имени
1342* Ограничения команд не применяются к удаленным servers
1343
1344#### Как работают ограничения на основе URL
1345
1346Шаблоны URL поддерживают подстановочные символы, используя `*` для совпадения с любой последовательностью символов. Это полезно для разрешения целых доменов или поддоменов.
1347
1348**Примеры подстановочных символов**:
1349
1350* `https://mcp.company.com/*` - разрешить все пути на конкретном домене
1351* `https://*.example.com/*` - разрешить любой поддомен example.com
1352* `http://localhost:*/*` - разрешить любой порт на localhost
1353
1354**Поведение удаленного server**:
1355
1356* Когда allowlist содержит **любые** записи `serverUrl`, удаленные servers **должны** совпадать с одним из этих шаблонов URL
1357* Удаленные servers не могут пройти только по имени, когда присутствуют ограничения URL
1358* Это гарантирует, что администраторы могут применять, какие удаленные конечные точки разрешены
1359
1360<Accordion title="Пример: allowlist только для URL">
1361 ```json theme={null}
1362 {
1363 "allowedMcpServers": [
1364 { "serverUrl": "https://mcp.company.com/*" },
1365 { "serverUrl": "https://*.internal.corp/*" }
1366 ]
1367 }
1368 ```
1369
1370 **Результат**:
1371
1372 * HTTP server на `https://mcp.company.com/api`: ✅ разрешено (совпадает с шаблоном URL)
1373 * HTTP server на `https://api.internal.corp/mcp`: ✅ разрешено (совпадает с подстановочным поддоменом)
1374 * HTTP server на `https://external.com/mcp`: ❌ заблокировано (не совпадает ни с одним шаблоном URL)
1375 * Stdio server с любой командой: ❌ заблокировано (нет записей имени или команды для совпадения)
1376</Accordion>
1377
1378<Accordion title="Пример: allowlist только для команд">
1379 ```json theme={null}
1380 {
1381 "allowedMcpServers": [
1382 { "serverCommand": ["npx", "-y", "approved-package"] }
1383 ]
1384 }
1385 ```
1386
1387 **Результат**:
1388
1389 * Stdio server с `["npx", "-y", "approved-package"]`: ✅ разрешено (совпадает с командой)
1390 * Stdio server с `["node", "server.js"]`: ❌ заблокировано (не совпадает с командой)
1391 * HTTP server с именем "my-api": ❌ заблокировано (нет записей имени для совпадения)
1392</Accordion>
1393
1394<Accordion title="Пример: смешанный allowlist имени и команды">
1395 ```json theme={null}
1396 {
1397 "allowedMcpServers": [
1398 { "serverName": "github" },
1399 { "serverCommand": ["npx", "-y", "approved-package"] }
1400 ]
1401 }
1402 ```
1403
1404 **Результат**:
1405
1406 * Stdio server с именем "local-tool" и `["npx", "-y", "approved-package"]`: ✅ разрешено (совпадает с командой)
1407 * Stdio server с именем "local-tool" и `["node", "server.js"]`: ❌ заблокировано (записи команд существуют, но не совпадают)
1408 * Stdio server с именем "github" и `["node", "server.js"]`: ❌ заблокировано (stdio servers должны совпадать с командами, когда существуют записи команд)
1409 * HTTP server с именем "github": ✅ разрешено (совпадает с именем)
1410 * HTTP server с именем "other-api": ❌ заблокировано (имя не совпадает)
1411</Accordion>
1412
1413<Accordion title="Пример: allowlist только для имени">
1414 ```json theme={null}
1415 {
1416 "allowedMcpServers": [
1417 { "serverName": "github" },
1418 { "serverName": "internal-tool" }
1419 ]
1420 }
1421 ```
1422
1423 **Результат**:
1424
1425 * Stdio server с именем "github" и любой командой: ✅ разрешено (нет ограничений команд)
1426 * Stdio server с именем "internal-tool" и любой командой: ✅ разрешено (нет ограничений команд)
1427 * HTTP server с именем "github": ✅ разрешено (совпадает с именем)
1428 * Любой server с именем "other": ❌ заблокировано (имя не совпадает)
1429</Accordion>
1430
1431#### Поведение allowlist (`allowedMcpServers`)
1432
1433* `undefined` (по умолчанию): нет ограничений - пользователи могут настроить любой MCP server
1434* Пустой массив `[]`: полная блокировка - пользователи не могут настроить какие-либо MCP servers
1435* Список записей: пользователи могут настроить только servers, которые совпадают по имени, команде или шаблону URL
1436
1437#### Поведение denylist (`deniedMcpServers`)
1438
1439* `undefined` (по умолчанию): никакие servers не блокируются
1440* Пустой массив `[]`: никакие servers не блокируются
1441* Список записей: указанные servers явно блокируются во всех областях
1442
1443#### Важные примечания
1444
1445* **Вариант 1 и вариант 2 можно комбинировать**: если существует `managed-mcp.json`, он имеет исключительный контроль и пользователи не могут добавлять servers. Allowlists/denylists все еще применяются к самим управляемым servers.
1446* **Denylist имеет абсолютный приоритет**: если server совпадает с записью denylist (по имени, команде или URL), он будет заблокирован, даже если он находится в allowlist
1447* Ограничения на основе имени, команды и URL работают вместе: server проходит, если он совпадает с **либо** записью имени, записью команды, либо шаблоном URL (если не заблокирован denylist)
1448
1449<Note>
1450 **При использовании `managed-mcp.json`**: пользователи не могут добавлять MCP servers через `claude mcp add` или файлы конфигурации. Параметры `allowedMcpServers` и `deniedMcpServers` все еще применяются для фильтрации, какие управляемые servers фактически загружаются.
1451</Note>