Использование GAC в качестве MCP-сервера
May 17, 2026 · View on GitHub
English | 简体中文 | 繁體中文 | 日本語 | 한국어 | हिन्दी | Tiếng Việt | Français | Русский | Español | Português | Norsk | Svenska | Deutsch | Nederlands | Italiano
GAC может работать как сервер Model Context Protocol (MCP), позволяя ИИ-агентам и редакторам генерировать коммиты через структурированные вызовы инструментов вместо команд оболочки.
Содержание
Что такое MCP?
Model Context Protocol - это открытый стандарт, позволяющий ИИ-приложениям вызывать внешние инструменты через структурированный интерфейс. Запустив GAC как MCP-сервер, любой MCP-совместимый клиент может проверять состояние репозитория и создавать коммиты с помощью ИИ, не вызывая команды оболочки напрямую.
Преимущества
- Структурированное взаимодействие: Агенты вызывают типизированные инструменты с валидированными параметрами вместо разбора вывода оболочки
- Рабочий процесс из двух инструментов:
gac_statusдля проверки,gac_commitдля действия - естественная модель для рассуждения агентов - Полные возможности GAC: ИИ-сообщения коммитов, групповые коммиты, сканирование секретов и отправка - всё доступно через MCP
- Нулевая конфигурация: Сервер использует вашу существующую конфигурацию GAC (
~/.gac.env, настройки провайдера и т.д.)
Настройка
MCP-сервер запускается командой uvx gac serve и общается через stdio - стандартный транспорт MCP.
Claude Code
Добавьте в файл .mcp.json вашего проекта или глобальный ~/.claude/claude_code_config.json:
{
"mcpServers": {
"gac": {
"command": "uvx",
"args": ["gac", "serve"]
}
}
}
Или если GAC установлен глобально:
{
"mcpServers": {
"gac": {
"command": "gac",
"args": ["serve"]
}
}
}
Cursor
Добавьте в настройки MCP Cursor (.cursor/mcp.json):
{
"mcpServers": {
"gac": {
"command": "uvx",
"args": ["gac", "serve"]
}
}
}
Другие MCP-клиенты
Любой MCP-совместимый клиент может использовать GAC. Точка входа сервера:
command: uvx
args: ["gac", "serve"]
transport: stdio
Доступные инструменты
Сервер предоставляет два инструмента:
gac_status
Проверка состояния репозитория. Используйте перед коммитом, чтобы понять, что будет зафиксировано.
Параметры:
| Parameter | Type | Default | Описание |
|---|---|---|---|
format | "summary" | "detailed" | "json" | "summary" | Формат вывода |
include_diff | bool | false | Включить полное содержимое diff |
include_stats | bool | true | Включить статистику изменений строк |
include_history | int | 0 | Количество последних коммитов для включения |
staged_only | bool | false | Показывать только индексированные изменения |
include_untracked | bool | true | Включить неотслеживаемые файлы |
max_diff_lines | int | 500 | Ограничить размер вывода diff (0 = без ограничения) |
Возвращает: Имя ветки, статус файлов (индексированные/неиндексированные/неотслеживаемые/конфликты), опциональное содержимое diff, опциональную статистику и опциональную историю коммитов.
gac_commit
Генерация сообщения коммита с помощью ИИ и опциональное выполнение коммита.
Параметры:
| Parameter | Type | Default | Описание |
|---|---|---|---|
stage_all | bool | false | Индексировать все изменения перед коммитом (git add -A) |
files | list[str] | [] | Конкретные файлы для индексации |
dry_run | bool | false | Предпросмотр без выполнения |
message_only | bool | false | Сгенерировать сообщение без коммита |
push | bool | false | Отправить в удалённый репозиторий после коммита |
group | bool | false | Разделить изменения на несколько логических коммитов |
one_liner | bool | false | Однострочное сообщение коммита |
scope | string | null | null | Область conventional commit (определяется автоматически, если не указана) |
hint | string | "" | Дополнительный контекст для улучшения сообщений |
model | string | null | null | Переопределить модель ИИ (provider:model_name) |
language | string | null | null | Переопределить язык сообщения коммита |
skip_secret_scan | bool | false | Пропустить сканирование безопасности |
no_verify | bool | false | Пропустить хуки pre-commit |
auto_confirm | bool | false | Пропустить запросы подтверждения (необходимо для агентов) |
Возвращает: Статус выполнения, сгенерированное сообщение коммита, хеш коммита (если выполнен), список изменённых файлов и предупреждения.
Рабочие процессы
Базовый коммит
1. gac_status() → Посмотреть, что изменилось
2. gac_commit(stage_all=true, auto_confirm=true) → Индексировать, сгенерировать сообщение и закоммитить
Предпросмотр перед коммитом
1. gac_status(include_diff=true, include_stats=true) → Подробно просмотреть изменения
2. gac_commit(stage_all=true, dry_run=true) → Предпросмотр сообщения коммита
3. gac_commit(stage_all=true, auto_confirm=true) → Выполнить коммит
Групповые коммиты
1. gac_status() → Посмотреть все изменения
2. gac_commit(stage_all=true, group=true, dry_run=true) → Предпросмотр логических группировок
3. gac_commit(stage_all=true, group=true, auto_confirm=true) → Выполнить групповые коммиты
Коммит с контекстом
1. gac_status(include_history=5) → Посмотреть недавние коммиты для ориентации по стилю
2. gac_commit(
stage_all=true,
hint="Fixes login timeout bug from issue #42",
scope="auth",
auto_confirm=true
)
Конфигурация
MCP-сервер использует вашу существующую конфигурацию GAC. Дополнительная настройка не требуется, кроме:
- Провайдер и модель: Запустите
uvx gac initилиuvx gac modelдля настройки вашего ИИ-провайдера - API-ключи: Хранятся в
~/.gac.env(настраиваются приuvx gac init) - Дополнительные настройки: Все переменные окружения GAC применяются (
GAC_LANGUAGE,GAC_VERBOSEи т.д.)
Смотрите основную документацию для всех опций конфигурации.
Устранение неполадок
"No model configured"
Запустите uvx gac init для настройки вашего ИИ-провайдера и модели перед использованием MCP-сервера.
"No staged changes found"
Либо индексируйте файлы вручную (git add), либо используйте stage_all=true в вызове gac_commit.
Сервер не запускается
Убедитесь, что GAC установлен и доступен:
uvx gac --version
Если используете uvx, убедитесь, что uv установлен и находится в вашем PATH.
Агент не может найти сервер
Убедитесь, что файл конфигурации MCP находится в правильном месте для вашего клиента и что путь command доступен из вашего окружения оболочки.
Повреждение вывода Rich
MCP-сервер автоматически перенаправляет весь вывод Rich-консоли в stderr для предотвращения повреждения протокола stdio. Если вы видите искажённый вывод, убедитесь, что запускаете uvx gac serve (а не uvx gac напрямую) при использовании MCP.