Skip to content

Latest commit

 

History

History
224 lines (163 loc) · 13.6 KB

File metadata and controls

224 lines (163 loc) · 13.6 KB

Использование GAC в качестве MCP-сервера

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. Дополнительная настройка не требуется, кроме:

  1. Провайдер и модель: Запустите uvx gac init или uvx gac model для настройки вашего ИИ-провайдера
  2. API-ключи: Хранятся в ~/.gac.env (настраиваются при uvx gac init)
  3. Дополнительные настройки: Все переменные окружения 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.

См. также