Перейти к содержимому

Настройка MCP серверов

Глобальные настройки MCP серверов хранятся в файле mcp.json активного профиля. Откройте его из панели Kodik через MCP СерверыУстановленныеНастроить MCP Серверы, или отредактируйте напрямую. В локальном окне файл хранится в локальной директории глобального хранилища Kodik (…/User/globalStorage/kodik.chat/settings/mcp.json). Когда окно подключено к удалённому окружению, Kodik использует путь глобального хранилища этого удалённого окружения, чтобы глобальная конфигурация MCP находилась там, где запускаются серверы.

MCP серверы рабочей области задаются в <workspace>/.kodik/mcp.json и загружаются только для доверенной рабочей области. Для чата путь в системном промпте следует папке, выбранной для данного диалога. Если эта папка находится внутри доверенной рабочей области IDE (включая размещённые внутри неё worktree), поиск MCP и пути запуска серверов тоже следуют ей. Для внешней папки чат показывает неактивный путь, но не запускает её MCP процессы на основании доверия к рабочей области IDE. MCP серверы из плагинов остаются в файле <Kodik plugin directory>/<plugin-id>/.mcp.json соответствующего плагина; изменяйте этот файл, а не копируйте сервер в глобальную конфигурацию.

Kodik передаёт агенту активные абсолютные пути и эти правила областей конфигурации. Поэтому настройка через агента соответствует текущей среде: сборка для разработки использует данные профиля code-oss-dev, установленная версия — данные профиля .kodik, удалённое окно — путь конфигурации удалённой среды, а установленные плагины остаются в пользовательской директории плагинов Kodik.

Файл парсится как JSONC — можно свободно использовать // комментарии строк, /* */ блочные комментарии и замыкающие запятые.

{
"servers": {
// именованные записи серверов здесь
},
"inputs": [
// опционально: переменные, запрашиваемые один раз для секретов/путей
],
}

Примечание: верхнеуровневый ключ — servers, а не mcpServers. Конфигурации, написанные для других инструментов с ключом mcpServers, нужно переименовать.

Каждая запись сервера имеет общие поля независимо от типа транспорта.

ПолеТипПо умолчаниюОписание
disabledbooleanfalseУстановите true, чтобы деактивировать сервер без удаления
timeoutчисло (секунды)60Время ожидания ответа на вызов инструмента. Минимум 30 с
autoApprovestring[][]Имена инструментов, которые авто-одобряются без запроса пользователя
enabledToolsstring[]Если задано, только эти инструменты доступны агенту
disabledToolsstring[]Инструменты, скрытые от агента
defaultToolsApprovalMode"always-ask" | "auto-approve"Режим одобрения по умолчанию для всех инструментов сервера. Записи в autoApprove имеют приоритет
authобъектКонфигурация OAuth 2.1 для HTTP/SSE серверов (см. ниже)

Поле type выбирает транспорт. Если не указано, Kodik определяет тип: конфигурация с command — это stdio; конфигурация с url и type: "sse" — SSE; type: "http" или type: "streamableHttp" — streamable HTTP.

Запускает команду на вашей машине и общается через stdin/stdout.

ПолеТипОбязательноОписание
commandstringдаИсполняемый файл (например, node, python, npx)
argsstring[]нетАргументы командной строки
envобъектнетДополнительные переменные среды, объединённые с унаследованной средой
cwdstringнетРабочая директория запускаемого процесса
{
"servers": {
"my-local-server": {
"command": "node",
"args": ["/path/to/server.js"],
"env": {
"API_KEY": "your_api_key",
},
"timeout": 60,
"autoApprove": ["read_file", "list_dir"],
"disabled": false,
},
},
}

Подключается к удалённому серверу по HTTP с использованием SSE транспорта. Требует type: "sse", когда запись сервера также имеет поле url (для отличия от streamable HTTP).

ПолеТипОбязательноОписание
urlstring (URL)даURL SSE эндпоинта
headersобъектнетДополнительные HTTP заголовки запроса
{
"servers": {
"my-sse-server": {
"type": "sse",
"url": "https://example.com/mcp/sse",
"headers": {
"X-Custom-Header": "value",
},
},
},
}

http — Streamable HTTP (рекомендуется для новых серверов)

Заголовок раздела «http — Streamable HTTP (рекомендуется для новых серверов)»

Современный транспорт MCP. Используйте type: "http" (или псевдоним "streamableHttp"). Оба написания принимаются и нормализуются внутри.

ПолеТипОбязательноОписание
urlstring (URL)даURL streamable HTTP эндпоинта
headersобъектнетДополнительные HTTP заголовки запроса
{
"servers": {
"my-http-server": {
"type": "http",
"url": "https://example.com/mcp",
},
},
}

Kodik обнаруживает настроенные MCP-серверы параллельно, поэтому один медленный сервер не блокирует весь список инструментов. Локальные stdio-серверы остаются запущенными и переиспользуются между получением списка инструментов и вызовами, а затем очищаются после простоя; при очистке завершается всё дерево процессов сервера, а не только прямой дочерний процесс. Ответы Streamable HTTP ограничены по размеру, поэтому слишком большой JSON или inline SSE завершает MCP-запрос ошибкой вместо переполнения процесса agent host.

По умолчанию Kodik запрашивает подтверждение перед запуском любого инструмента. Это можно изменить глобально для сервера или для конкретных инструментов.

{
"servers": {
"my-server": {
"command": "node",
"args": ["server.js"],
// Авто-одобрять все инструменты сервера без запроса:
"defaultToolsApprovalMode": "auto-approve",
},
},
}

Или добавьте конкретные имена инструментов в autoApprove, чтобы одобрять только их, оставив остальные в режиме always-ask:

{
"servers": {
"my-server": {
"command": "node",
"args": ["server.js"],
"autoApprove": ["read_file", "search"],
},
},
}

Подробнее о рабочем процессе одобрения см. Авто-одобрение.

Используйте enabledTools, чтобы открыть агенту только подмножество того, что предоставляет сервер, или disabledTools, чтобы скрыть конкретные инструменты:

{
"servers": {
"big-server": {
"type": "http",
"url": "https://example.com/mcp",
// Открыть агенту только эти два инструмента:
"enabledTools": ["search", "read_document"],
},
},
}

Удалённые серверы могут требовать OAuth. Kodik поддерживает OAuth 2.1 с автоматическим обнаружением через Protected Resource Metadata. Блок auth позволяет переопределить конкретные значения, когда авто-обнаружение недоступно (например, для самостоятельно размещённых серверов без эндпоинтов .well-known).

ПолеТипОписание
disabledbooleanУстановите true, чтобы полностью пропустить OAuth для этого сервера
clientIdstringПредварительно зарегистрированный OAuth client ID
clientSecretstringСекрет клиента (хранится в SecretStorage при вводе через UI)
scopesstring[]Запрашиваемые OAuth области
authorizationServerstring (URL)Переопределить URL сервера авторизации
{
"servers": {
"protected-server": {
"type": "http",
"url": "https://api.example.com/mcp",
"auth": {
"clientId": "my-client-id",
"scopes": ["mcp:read", "mcp:write"],
"authorizationServer": "https://auth.example.com",
},
},
},
}

Сервер, отвечающий 401, отображается в Настройках → Серверы MCP со статусом «Требуется аутентификация» и кнопкой «Войти» рядом с переключателем. «Войти» запускает OAuth поток — браузер открывает страницу согласия сервиса, и после подтверждения сервер переходит в состояние «Подключено». Альтернативно укажите токен в headers сервера (например, "Authorization": "Bearer <токен>") или используйте запрос «Настроить» у сервера плагина из маркетплейса, который объявляет токен в своей пользовательской конфигурации; заголовок с пустым токеном не отправляется, поэтому ненастроенный токен ведёт к OAuth входу. Когда агент вызывает инструмент неаутентифицированного сервера, карточка неудавшегося инструмента в чате предлагает ту же кнопку входа.

Kodik подбирает OAuth-клиент в следующем порядке: явный auth.clientId из вашей конфигурации, встроенное приложение Kodik для данного вендора (GitHub, Slack, Google Drive, Figma), клиент, зарегистрированный при предыдущем входе, и, наконец, автоматическая динамическая регистрация клиента (DCR). Если вендор блокирует автоматическую регистрацию (как Figma), Kodik один раз запросит client ID и запомнит его. Выполненные входы сохраняются в защищённом хранилище и переиспользуются между перезапусками редактора — токены обновляются автоматически, пока вы не выйдете из сервера.

Массив inputs определяет переменные, которые Kodik запрашивает один раз, а затем подставляет в значения конфигурации сервера. Это позволяет избежать хардкода секретов в mcp.json. Используйте ${input:<id>} в любом месте args, env, headers или url.

{
"inputs": [
{
"id": "api_key",
"type": "promptString",
"description": "Введите ваш API ключ",
"password": true,
},
],
"servers": {
"my-server": {
"command": "node",
"args": ["server.js"],
"env": {
"API_KEY": "${input:api_key}",
},
},
},
}

password: true направляет кэшированный ответ в SecretStorage, чтобы он никогда не хранился в открытом виде.

Большинство операций можно выполнить без ручного редактирования файла:

  • Включить/отключить: переключите тумблер рядом с сервером во вкладке Установленные
  • Перезапустить: нажмите кнопку Перезапуск рядом с сервером или кнопку “Перезапустить Сервер” внутри панели настроек сервера
  • Удалить: нажмите красную кнопку “Удалить Сервер” в панели настроек сервера
  • Тайм-аут: используйте выпадающий список “Тайм-аут запроса” в панели настроек сервера (от 30 с до 1 ч)
СимптомВероятная причина
Сервер не подключаетсяНеверная команда/путь или не установлена необходимая среда выполнения (Node, Python)
Инструмент не виденdisabled: true, имя инструмента в disabledTools или отсутствует в enabledTools
Медленные ответыУвеличьте timeout; проверьте сетевую задержку для удалённых серверов
Ошибка аутентификации на удалённом сервереПроверьте поля auth или повторно запустите OAuth поток, перезапустив сервер