Forge
markdown8e44aa49
1# Git MCP
2
3MCP-сервер с тулами **git_status**, **git_diff**, **git_log**, **git_fetch**, **git_pull**, **git_branch**, **git_show**, **git_submodule**, **git_commit**, **git_push**. Агент видит состояние репозитория и диффы без выхода из чата. Подключается в Cursor (и где угодно) — один exe, stdio.
4
5**Cursor:** примеры правил для копипаста — **[docs/cursor-rules-examples.md](docs/cursor-rules-examples.md)**.
6
7## Стек
8
9- C#, .NET 10, win-x64, self-contained (как agent-notes-mcp, dotnet-debug-mcp).
10- Вызовы `git` через процесс (требуется установленный git в PATH).
11- Семантика списка аргументов — пакет **[AIGuiders.GitMcp.Core](https://www.nuget.org/packages/AIGuiders.GitMcp.Core)**; исходники и CI публикации пакета — репозиторий **[KarataevDmitry/git-mcp-core](https://github.com/KarataevDmitry/git-mcp-core)** на GitHub (Trusted Publishing на nuget.org привязывается к **этому** репо, см. README там). Субмодуль `git-mcp-core` в `open` — канон разработки на GitLab Krawler.
12
13## Публикация
14
15```bash
16dotnet publish -c Release -o publish
17```
18
19Рекомендуется junction: например `D:\git-mcp` → каталог `publish`; в Cursor в mcp.json указать `command`: `D:\git-mcp\GitMcp.exe`, `args`: `[]`.
20
21### Быстрый локальный publish (рекомендуется)
22
23`publish-and-deploy.ps1` делает publish self-contained `win-x64`, зеркалит в фиксированный путь (по умолчанию `D:\git-mcp`) и гасит процесс, если он лочит файлы:
24
25```powershell
26.\publish-and-deploy.ps1
27```
28
29## Релизы (без Runner)
30
31См. `scripts/publish-release-win.ps1`: мультиплатформа (win-x64, linux-x64, osx-x64), загрузка в GitLab Generic Package и ссылка в релизе. Требуются `GITLAB_URL`, `GITLAB_TOKEN`.
32
33## Тулы
34
35| Имя | Описание | Аргументы |
36|-----|----------|-----------|
37| `git_status` | Ветка + git status (изменённые/добавленные/удалённые файлы). | `workspace_path` |
38| `git_diff` | Дифф (по умолчанию не застейдженный). | `workspace_path`, опционально `path`, `staged` (bool) |
39| `git_log` | Последние коммиты (git log -n N --oneline). | `workspace_path`, опционально `n` (по умолчанию 20, макс 500) |
40| `git_commit` | Коммит: add (указанные пути или всё) + commit -m. Только по решению пользователя. | `workspace_path`, `message`, опционально `paths` (массив строк) |
41| `git_push` | Push в remote. По умолчанию origin и текущая ветка. По решению пользователя. | `workspace_path`, опционально `remote`, `branch` |
42| `git_fetch` | Обновить refs с remote (`fetch`, опционально `--all`, `--prune`, имя remote). | `workspace_path`, опционально `remote`, `all`, `prune` |
43| `git_pull` | Подтянуть в текущую ветку; по умолчанию `--ff-only`. Без `remote`/`branch` — upstream. | `workspace_path`, опционально `remote`+`branch` вместе, `ff_only` |
44| `git_branch` | Список веток (`list`), создание (`create`), удаление (`delete`). | `workspace_path`, `action`, опционально `name`, `start_point`, `force` |
45| `git_show` | Показать объект/коммит (`rev`), опционально файл или `--stat`. | `workspace_path`, `rev`, опционально `path`, `stat_only` |
46| `git_submodule` | `status` или `update --init` (по умолчанию `--recursive`). | `workspace_path`, опционально `action`, `path`, `recursive` |
47
48`workspace_path` — каталог с репозиторием (корень, где лежит `.git`).
49
View only · write via MCP/CIDE