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 ... | Когда нужно быстро добавить или удалить сервер |
Первый сервер
- Добавить сервер, например remote HTTP MCP:
gigacode mcp add --transport http my-server http://localhost:3000/mcp- Запустить CLI:
gigacode- Открыть управление MCP:
/mcp- Если 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 Events | url и опционально headers |
stdio | Для локальных процессов, скриптов, CLI и Docker | command, 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 8080http: 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 5000sse: 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 30000MCP 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, но не объявил capabilityprompts, 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 стал интерактивным.
Что это дает
| Режим | Поведение |
|---|---|
| Interactive | UI появляется сразу, tools добавляются по мере готовности серверов |
| Non-interactive | CLI ждет завершения discovery перед отправкой первого prompt |
Во время discovery в интерактивном режиме отображается статус вида N/M MCP servers ready.
discoveryTimeoutMs
У каждого сервера есть отдельный timeout только на discovery-фазу:
connect;tools/list;prompts/list;resources/list.
Значения по умолчанию:
| Тип сервера | Default discovery timeout |
|---|---|
stdio | 30s |
http / sse | 5s |
Пример 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 deployment | localhost не сработает, нужен публично доступный 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/callbackOAuth через 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 для сервера |
clientId | OAuth client identifier |
clientSecret | OAuth client secret |
authorizationUrl | Endpoint авторизации |
tokenUrl | Endpoint выдачи токенов |
scopes | Нужные OAuth scopes |
redirectUri | Redirect 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.allowed | Allow-list имен серверов из mcpServers |
mcp.excluded | Deny-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 |
url | SSE endpoint URL |
httpUrl | HTTP streaming endpoint URL |
Необязательные поля
| Поле | Описание |
|---|---|
args | Аргументы командной строки для stdio |
headers | HTTP headers для url или httpUrl |
env | Переменные окружения для процесса сервера |
cwd | Working directory для stdio |
timeout | Timeout запроса в миллисекундах, default 600000 |
trust | Если true, bypass confirmation prompts |
includeTools | Allow-list инструментов сервера |
excludeTools | Deny-list инструментов сервера |
targetAudience | OAuth/IAP-настройка для service_account_impersonation |
targetServiceAccount | Service account для impersonation |
Управление через gigacode mcp
CLI обычно быстрее ручного редактирования settings.json.
Добавление сервера
Общий формат:
gigacode mcp add [options] <name> <commandOrUrl> [args...]Основные аргументы и флаги:
| Аргумент/опция | Назначение | Default |
|---|---|---|
<name> | Уникальное имя сервера | — |
<commandOrUrl> | Команда для stdio или URL для http/sse | — |
[args...] | Аргументы для stdio | — |
-s, --scope | Scope конфигурации: user или project | user |
-t, --transport | stdio, sse или http | stdio |
-e, --env | Переменные окружения | — |
-H, --header | HTTP headers для sse и http | — |
--timeout | Timeout в миллисекундах | — |
--trust | Доверенный сервер без подтверждений | false |
--description | Описание сервера | — |
--include-tools | Список tools через запятую для allow-list | Все tools |
--exclude-tools | Список tools через запятую для deny-list | Нет |
--oauth-client-id | OAuth client ID | — |
--oauth-client-secret | OAuth client secret | — |
--oauth-redirect-uri | OAuth redirect URI | http://localhost:7777/oauth/callback |
--oauth-authorization-url | OAuth authorization URL | — |
--oauth-token-url | OAuth token URL | — |
--oauth-scopes | OAuth scopes через запятую | — |
Ограничение:
--oauth-*флаги поддерживаются только с--transport sseи--transport http;- для
stdioтакая комбинация отклоняется.
Удаление сервера
gigacode mcp remove <name>