MCP в GigaCode CLI

Что такое MCP

MCP (Model Context Protocol) позволяет подключать CLI к внешним инструментам и источникам данных. MCP-серверы дают агенту доступ к вашим API, базам данных, локальным утилитам и автоматизированным workflow.

Что можно делать через MCP

СценарийПримеры
Работа с файлами и репозиториямиread/search/write, если соответствующие tools разрешены
Работа с базами данныхintrospection схемы, запросы, отчеты
Интеграция внутренних сервисовобертка ваших API как MCP tools
Автоматизацияповторяемые задачи как tools или prompts

Быстрый старт

GigaCode CLI загружает MCP-серверы из секции mcpServers в settings.json.

Два способа настроить сервер

СпособКогда удобен
Редактировать settings.json вручнуюКогда нужен полный контроль
Использовать gigacode mcp ...Когда нужно быстро добавить или удалить сервер

Первый сервер

  1. Добавить сервер, например remote HTTP MCP:
gigacode mcp add --transport http my-server http://localhost:3000/mcp
  1. Запустить CLI:
gigacode
  1. Открыть управление MCP:
/mcp
  1. Если CLI уже был запущен до добавления сервера, перезапустить его в том же проекте.

Где хранится конфигурация

Обычно достаточно двух scopes:

ScopeПутьДля чего
User scope~/.gigacode/settings.jsonДля всех проектов на машине
Project scope.gigacode/settings.jsonТолько для конкретного проекта

Пример записи в user scope:

gigacode mcp add --scope user --transport http my-server http://localhost:3000/mcp

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

Выбор transport

TransportКогда использоватьОсновные поля в JSON
httpРекомендуемый вариант для удаленных сервисовhttpUrl и опционально headers
sseДля legacy/deprecated серверов с Server-Sent Eventsurl и опционально headers
stdioДля локальных процессов, скриптов, CLI и Dockercommand, args, опционально cwd, env

Рекомендация из источника:

  • если сервер поддерживает и http, и sse, лучше выбирать http.

settings.json vs gigacode mcp add

Оба подхода создают одну и ту же структуру mcpServers в settings.json.

Примеры конфигурации

stdio: локальный процесс

{
  "mcpServers": {
    "pythonTools": {
      "command": "python",
      "args": ["-m", "my_mcp_server", "--port", "8080"],
      "cwd": "./mcp-servers/python",
      "env": {
        "DATABASE_URL": "$DB_CONNECTION_STRING",
        "API_KEY": "${EXTERNAL_API_KEY}"
      },
      "timeout": 15000
    }
  }
}

CLI-вариант:

gigacode mcp add pythonTools -e DATABASE_URL=$DB_CONNECTION_STRING -e API_KEY=$EXTERNAL_API_KEY \
  --timeout 15000 python -m my_mcp_server --port 8080

http: remote streamable HTTP

{
  "mcpServers": {
    "httpServerWithAuth": {
      "httpUrl": "http://localhost:3000/mcp",
      "headers": {
        "Authorization": "Bearer your-api-token"
      },
      "timeout": 5000
    }
  }
}

CLI-вариант:

gigacode mcp add --transport http httpServerWithAuth http://localhost:3000/mcp \
  --header "Authorization: Bearer your-api-token" --timeout 5000

sse: remote Server-Sent Events

{
  "mcpServers": {
    "sseServer": {
      "url": "http://localhost:8080/sse",
      "timeout": 30000
    }
  }
}

CLI-вариант:

gigacode mcp add --transport sse sseServer http://localhost:8080/sse --timeout 30000

MCP prompts и resources

Помимо tools, GigaCode CLI умеет использовать еще две MCP-примитивы:

ПримитивНазначение
PromptsСерверные слэш-команды
ResourcesДанные, которые можно инжектить в сообщение

Prompts

Любой prompt, который сервер отдает через prompts/list, становится исполняемой слэш-командой.

Примеры:

/my_prompt --arg1="value" --arg2="value"
/my_prompt "value" "value"
/my_prompt help

Особенности:

  • prompt отображается в слэш-списке с пометкой MCP: <server>;
  • его messages отправляются модели, а затем модель действует на их основе;
  • если сервер реализует prompts/list, но не объявил capability prompts, GigaCode CLI все равно попытается их получить.

Resources

Resources, которые сервер отдает через resources/list, доступны через /mcp и через ссылочный синтаксис @server:uri.

Пример:

summarize @myserver:file:///docs/spec.md and list the open questions

Как это работает:

ПоведениеДеталь
АвтодополнениеПри вводе @myserver: показываются ресурсы сервера
ФильтрацияСрабатывает по URI и friendly name/title, case-insensitive
Инжект в сообщениеТекст добавляется inline, бинарные blobs как attachments
Совместимость с обычным @pathЕсли prefix server не совпадает с MCP server, токен трактуется как обычный файловый путь
БезопасностьResource reads отключены в untrusted folders

Progressive availability и discovery timeouts

MCP discovery выполняется в фоне, уже после того как UI стал интерактивным.

Что это дает

РежимПоведение
InteractiveUI появляется сразу, tools добавляются по мере готовности серверов
Non-interactiveCLI ждет завершения discovery перед отправкой первого prompt

Во время discovery в интерактивном режиме отображается статус вида N/M MCP servers ready.

discoveryTimeoutMs

У каждого сервера есть отдельный timeout только на discovery-фазу:

  • connect;
  • tools/list;
  • prompts/list;
  • resources/list.

Значения по умолчанию:

Тип сервераDefault discovery timeout
stdio30s
http / sse5s

Пример override:

{
  "mcpServers": {
    "slow-stdio": {
      "command": "node",
      "args": ["./slow-server.js"],
      "discoveryTimeoutMs": 60000
    },
    "flaky-remote": {
      "httpUrl": "https://example.com/mcp",
      "discoveryTimeoutMs": 10000
    }
  }
}

Важно:

  • обычное поле timeout относится к tools/call;
  • по источнику его default — 600000 ms (10 минут);
  • discoveryTimeoutMs не влияет на долгие tool calls.

Безопасность и контроль

trust: true

Если у сервера выставлен trust: true, CLI пропускает confirmation prompts для вызовов его инструментов.

НастройкаЭффект
trust: falseПодтверждения работают как обычно
trust: trueПодтверждения для этого сервера пропускаются

Рекомендация:

  • использовать sparingly и только для действительно доверенных серверов.

Redirect URI

СценарийЧто важно
Local developmentПо умолчанию используется http://localhost:7777/oauth/callback
Remote/cloud deploymentlocalhost не сработает, нужен публично доступный callback URL

Пример для remote:

gigacode mcp add --transport sse remote-server https://api.example.com/sse/ \
  --oauth-redirect-uri https://your-remote-server.example.com/oauth/callback

OAuth через settings.json

{
  "mcpServers": {
    "oauthServer": {
      "url": "https://api.example.com/sse/",
      "oauth": {
        "enabled": true,
        "clientId": "your-client-id",
        "clientSecret": "your-client-secret",
        "authorizationUrl": "https://provider.example.com/authorize",
        "tokenUrl": "https://provider.example.com/token",
        "redirectUri": "https://your-server.com/oauth/callback",
        "scopes": ["read", "write"]
      }
    }
  }
}

Поля OAuth

ПолеНазначение
enabledВключает OAuth для сервера
clientIdOAuth client identifier
clientSecretOAuth client secret
authorizationUrlEndpoint авторизации
tokenUrlEndpoint выдачи токенов
scopesНужные OAuth scopes
redirectUriRedirect URI, особенно важен для remote deployment
tokenParamNameИмя query-параметра для токенов в SSE URLs
audiencesСписок аудиторий, для которых валиден токен

Хранение токенов

По документации токены:

  • по умолчанию лежат в ~/.gigacode/mcp-oauth-tokens.json;
  • это plaintext-файл с режимом 0600;
  • могут обновляться автоматически при наличии refresh token;
  • валидируются перед каждым подключением.

Фильтрация инструментов

На уровне сервера: includeTools / excludeTools

Эти поля ограничивают инструменты конкретного MCP-сервера с точки зрения GigaCode CLI.

Пример allowlist:

{
  "mcpServers": {
    "filteredServer": {
      "command": "python",
      "args": ["-m", "my_mcp_server"],
      "includeTools": ["safe_tool", "file_reader", "data_processor"],
      "timeout": 30000
    }
  }
}

Правила:

СитуацияРезультат
Задан includeToolsДоступны только перечисленные tools
Задан excludeToolsПеречисленные tools скрываются
Заданы обаexcludeTools имеет приоритет

Глобальные allow/deny списки

В settings.json есть глобальный объект mcp:

ПолеНазначение
mcp.allowedAllow-list имен серверов из mcpServers
mcp.excludedDeny-list имен серверов

Пример:

{
  "mcp": {
    "allowed": ["my-trusted-server"],
    "excluded": ["experimental-server"]
  }
}

Troubleshooting

Типовые проблемы из источника:

ПроблемаЧто проверить
В gigacode mcp list сервер показывает DisconnectedПроверить URL/command и увеличить timeout
stdio сервер не стартуетИспользовать absolute path для command, проверить cwd и env
Переменные окружения в JSON не резолвятсяУбедиться, что env существуют именно в окружении, где запущен GigaCode CLI

Reference: структура settings.json

mcpServers

Пример структуры:

{
  "mcpServers": {
    "serverName": {
      "command": "path/to/server",
      "args": ["--arg1", "value1"],
      "env": {
        "API_KEY": "$MY_API_TOKEN"
      },
      "cwd": "./server-directory",
      "timeout": 30000,
      "trust": false
    }
  }
}

Обязательные поля

Нужно указать одно из следующих:

ПолеДля чего
commandИсполняемый файл для stdio
urlSSE endpoint URL
httpUrlHTTP streaming endpoint URL

Необязательные поля

ПолеОписание
argsАргументы командной строки для stdio
headersHTTP headers для url или httpUrl
envПеременные окружения для процесса сервера
cwdWorking directory для stdio
timeoutTimeout запроса в миллисекундах, default 600000
trustЕсли true, bypass confirmation prompts
includeToolsAllow-list инструментов сервера
excludeToolsDeny-list инструментов сервера
targetAudienceOAuth/IAP-настройка для service_account_impersonation
targetServiceAccountService account для impersonation

Управление через gigacode mcp

CLI обычно быстрее ручного редактирования settings.json.

Добавление сервера

Общий формат:

gigacode mcp add [options] <name> <commandOrUrl> [args...]

Основные аргументы и флаги:

Аргумент/опцияНазначениеDefault
<name>Уникальное имя сервера—
<commandOrUrl>Команда для stdio или URL для http/sse—
[args...]Аргументы для stdio—
-s, --scopeScope конфигурации: user или projectuser
-t, --transportstdio, sse или httpstdio
-e, --envПеременные окружения—
-H, --headerHTTP headers для sse и http—
--timeoutTimeout в миллисекундах—
--trustДоверенный сервер без подтвержденийfalse
--descriptionОписание сервера—
--include-toolsСписок tools через запятую для allow-listВсе tools
--exclude-toolsСписок tools через запятую для deny-listНет
--oauth-client-idOAuth client ID—
--oauth-client-secretOAuth client secret—
--oauth-redirect-uriOAuth redirect URIhttp://localhost:7777/oauth/callback
--oauth-authorization-urlOAuth authorization URL—
--oauth-token-urlOAuth token URL—
--oauth-scopesOAuth scopes через запятую—

Ограничение:

  • --oauth-* флаги поддерживаются только с --transport sse и --transport http;
  • для stdio такая комбинация отклоняется.

Удаление сервера

gigacode mcp remove <name>