Настройка MCP серверов
Все настройки MCP серверов хранятся в одном файле: mcp.json. Откройте его из панели Kodik через MCP Серверы → Установленные → Настроить MCP Серверы, или отредактируйте напрямую. Файл хранится в директории глобального хранилища Kodik (…/User/globalStorage/kodik.chat/settings/mcp.json).
Файл парсится как JSONC — можно свободно использовать // комментарии строк, /* */ блочные комментарии и замыкающие запятые.
Верхнеуровневая структура
Заголовок раздела «Верхнеуровневая структура»{ "servers": { // именованные записи серверов здесь }, "inputs": [ // опционально: переменные, запрашиваемые один раз для секретов/путей ],}Примечание: верхнеуровневый ключ —
servers, а неmcpServers. Конфигурации, написанные для других инструментов с ключомmcpServers, нужно переименовать.
Поля записи сервера
Заголовок раздела «Поля записи сервера»Каждая запись сервера имеет общие поля независимо от типа транспорта.
Общие поля
Заголовок раздела «Общие поля»| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
disabled | boolean | false | Установите true, чтобы деактивировать сервер без удаления |
timeout | число (секунды) | 60 | Время ожидания ответа на вызов инструмента. Минимум 30 с |
autoApprove | string[] | [] | Имена инструментов, которые авто-одобряются без запроса пользователя |
enabledTools | string[] | — | Если задано, только эти инструменты доступны агенту |
disabledTools | string[] | — | Инструменты, скрытые от агента |
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.
stdio — локальный процесс
Заголовок раздела «stdio — локальный процесс»Запускает команду на вашей машине и общается через stdin/stdout.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
command | string | да | Исполняемый файл (например, node, python, npx) |
args | string[] | нет | Аргументы командной строки |
env | объект | нет | Дополнительные переменные среды, объединённые с унаследованной средой |
cwd | string | нет | Рабочая директория запускаемого процесса |
{ "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, }, },}sse — Server-Sent Events
Заголовок раздела «sse — Server-Sent Events»Подключается к удалённому серверу по HTTP с использованием SSE транспорта. Требует type: "sse", когда запись сервера также имеет поле url (для отличия от streamable HTTP).
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
url | string (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"). Оба написания принимаются и нормализуются внутри.
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
url | string (URL) | да | URL streamable HTTP эндпоинта |
headers | объект | нет | Дополнительные HTTP заголовки запроса |
{ "servers": { "my-http-server": { "type": "http", "url": "https://example.com/mcp", }, },}Одобрение инструментов
Заголовок раздела «Одобрение инструментов»По умолчанию 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 2.1 аутентификация (HTTP/SSE серверы)
Заголовок раздела «OAuth 2.1 аутентификация (HTTP/SSE серверы)»Удалённые серверы могут требовать OAuth. Kodik поддерживает OAuth 2.1 с автоматическим обнаружением через Protected Resource Metadata. Блок auth позволяет переопределить конкретные значения, когда авто-обнаружение недоступно (например, для самостоятельно размещённых серверов без эндпоинтов .well-known).
| Поле | Тип | Описание |
|---|---|---|
disabled | boolean | Установите true, чтобы полностью пропустить OAuth для этого сервера |
clientId | string | Предварительно зарегистрированный OAuth client ID |
clientSecret | string | Секрет клиента (хранится в SecretStorage при вводе через UI) |
scopes | string[] | Запрашиваемые OAuth области |
authorizationServer | string (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", }, }, },}Когда Kodik получает 401 от сервера, он автоматически инициирует OAuth поток, предлагая вам войти.
Входные переменные
Заголовок раздела «Входные переменные»Массив 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, чтобы он никогда не хранился в открытом виде.
Управление серверами через UI
Заголовок раздела «Управление серверами через UI»Большинство операций можно выполнить без ручного редактирования файла:
- Включить/отключить: переключите тумблер рядом с сервером во вкладке Установленные
- Перезапустить: нажмите кнопку Перезапуск рядом с сервером или кнопку “Перезапустить Сервер” внутри панели настроек сервера
- Удалить: нажмите красную кнопку “Удалить Сервер” в панели настроек сервера
- Тайм-аут: используйте выпадающий список “Тайм-аут запроса” в панели настроек сервера (от 30 с до 1 ч)
Устранение неполадок
Заголовок раздела «Устранение неполадок»| Симптом | Вероятная причина |
|---|---|
| Сервер не подключается | Неверная команда/путь или не установлена необходимая среда выполнения (Node, Python) |
| Инструмент не виден | disabled: true, имя инструмента в disabledTools или отсутствует в enabledTools |
| Медленные ответы | Увеличьте timeout; проверьте сетевую задержку для удалённых серверов |
| Ошибка аутентификации на удалённом сервере | Проверьте поля auth или повторно запустите OAuth поток, перезапустив сервер |