Git Server
MCP-сервер для взаимодействия с Git-репозиториями — статус, diff, коммиты, ветки и история изменений
Git Server предоставляет полный набор инструментов для работы с Git-репозиториями через MCP. Позволяет LLM читать, искать и манипулировать Git-репозиториями.
Возможности
Заголовок раздела «Возможности»- Просмотр статуса рабочей директории
- Просмотр различий (staged, unstaged, между ветками)
- Создание коммитов и управление staging area
- Создание и переключение веток
- Просмотр истории с фильтрацией по датам
Установка
Заголовок раздела «Установка»uvx mcp-server-git --repository /path/to/repopip install mcp-server-gitpython -m mcp_server_git --repository /path/to/repodocker run --rm -i \ --mount type=bind,src=/Users/username,dst=/Users/username \ mcp/gitИнструменты
Заголовок раздела «Инструменты»git_status
Заголовок раздела «git_status»Показывает статус рабочей директории.
| Параметр | Тип | Описание |
|---|---|---|
repo_path | string | Путь к Git-репозиторию |
git_diff_unstaged
Заголовок раздела «git_diff_unstaged»Показывает изменения в рабочей директории, не добавленные в staging.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
repo_path | string | — | Путь к репозиторию |
context_lines | number | 3 | Строк контекста |
git_diff_staged
Заголовок раздела «git_diff_staged»Показывает изменения, добавленные в staging для коммита.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
repo_path | string | — | Путь к репозиторию |
context_lines | number | 3 | Строк контекста |
git_diff
Заголовок раздела «git_diff»Показывает различия между ветками или коммитами.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
repo_path | string | — | Путь к репозиторию |
target | string | — | Целевая ветка или коммит |
context_lines | number | 3 | Строк контекста |
Пример:
{ "repo_path": "/projects/myapp", "target": "main", "context_lines": 5}git_add
Заголовок раздела «git_add»Добавляет файлы в staging area.
| Параметр | Тип | Описание |
|---|---|---|
repo_path | string | Путь к репозиторию |
files | string[] | Массив путей к файлам |
git_reset
Заголовок раздела «git_reset»Убирает все файлы из staging area.
| Параметр | Тип | Описание |
|---|---|---|
repo_path | string | Путь к репозиторию |
git_commit
Заголовок раздела «git_commit»Записывает изменения в репозиторий.
| Параметр | Тип | Описание |
|---|---|---|
repo_path | string | Путь к репозиторию |
message | string | Сообщение коммита |
Возвращает: подтверждение с хешем нового коммита.
git_log
Заголовок раздела «git_log»Показывает историю коммитов с опциональной фильтрацией по датам.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
repo_path | string | — | Путь к репозиторию |
max_count | number | 10 | Максимум коммитов |
start_timestamp | string? | — | Начальная дата |
end_timestamp | string? | — | Конечная дата |
Форматы дат:
- ISO 8601:
2024-01-15T14:30:25 - Относительные:
2 weeks ago,yesterday - Абсолютные:
2024-01-15,Jan 15 2024
Возвращает: массив коммитов с хешем, автором, датой и сообщением.
git_create_branch
Заголовок раздела «git_create_branch»Создаёт новую ветку.
| Параметр | Тип | Описание |
|---|---|---|
repo_path | string | Путь к репозиторию |
branch_name | string | Имя новой ветки |
base_branch | string? | Базовая ветка (по умолчанию: текущая) |
git_checkout
Заголовок раздела «git_checkout»Переключает ветку.
| Параметр | Тип | Описание |
|---|---|---|
repo_path | string | Путь к репозиторию |
branch_name | string | Имя ветки |
git_show
Заголовок раздела «git_show»Показывает содержимое коммита.
| Параметр | Тип | Описание |
|---|---|---|
repo_path | string | Путь к репозиторию |
revision | string | Ревизия (хеш, ветка, тег) |
git_branch
Заголовок раздела «git_branch»Выводит список веток.
| Параметр | Тип | Описание |
|---|---|---|
repo_path | string | Путь к репозиторию |
branch_type | string | local, remote или all |
contains | string? | SHA коммита, который должен содержаться |
not_contains | string? | SHA коммита, который НЕ должен содержаться |
Конфигурация
Заголовок раздела «Конфигурация»Claude Desktop
Заголовок раздела «Claude Desktop»{ "mcpServers": { "git": { "command": "uvx", "args": ["mcp-server-git", "--repository", "/path/to/repo"] } }}{ "mcpServers": { "git": { "command": "docker", "args": [ "run", "--rm", "-i", "--mount", "type=bind,src=/Users/username,dst=/Users/username", "mcp/git" ] } }}{ "mcpServers": { "git": { "command": "python", "args": ["-m", "mcp_server_git", "--repository", "/path/to/repo"] } }}VS Code
Заголовок раздела «VS Code»{ "servers": { "git": { "command": "uvx", "args": ["mcp-server-git"] } }}С Docker:
{ "mcp": { "servers": { "git": { "command": "docker", "args": [ "run", "--rm", "-i", "--mount", "type=bind,src=${workspaceFolder},dst=/workspace", "mcp/git" ] } } }}{ "context_servers": [ "mcp-server-git": { "command": { "path": "uvx", "args": ["mcp-server-git"] } } ]}Примеры использования
Заголовок раздела «Примеры использования»Просмотр изменений и создание коммита
Заголовок раздела «Просмотр изменений и создание коммита»- Проверить статус:
git_status - Посмотреть unstaged изменения:
git_diff_unstaged - Добавить файлы:
git_addс массивом файлов - Посмотреть staged изменения:
git_diff_staged - Создать коммит:
git_commitс сообщением
Сравнение с другой веткой
Заголовок раздела «Сравнение с другой веткой»{ "name": "git_diff", "arguments": { "repo_path": "/projects/myapp", "target": "feature/new-api", "context_lines": 5 }}Поиск коммитов за период
Заголовок раздела «Поиск коммитов за период»{ "name": "git_log", "arguments": { "repo_path": "/projects/myapp", "max_count": 20, "start_timestamp": "2024-01-01", "end_timestamp": "2024-01-31" }}Поиск веток с определённым коммитом
Заголовок раздела «Поиск веток с определённым коммитом»{ "name": "git_branch", "arguments": { "repo_path": "/projects/myapp", "branch_type": "all", "contains": "abc123" }}Отладка
Заголовок раздела «Отладка»npx @modelcontextprotocol/inspector uvx mcp-server-gitПросмотр логов Claude:
tail -n 20 -f ~/Library/Logs/Claude/mcp*.logСборка Docker-образа
Заголовок раздела «Сборка Docker-образа»cd src/gitdocker build -t mcp/git .