Skip to main content
Glama

Git MCP-сервер

МашинописьМодель контекстного протокола Версия Лицензия Статус GitHub

Сервер MCP (Model Context Protocol), предоставляющий инструменты для взаимодействия с репозиториями Git. Позволяет LLM и агентам ИИ выполнять операции Git, такие как клонирование, фиксация, отправка, извлечение, ветвь, сравнение, журналирование, статус и многое другое через стандарт MCP.

Этот сервер, созданный на основе cyanheads/mcp-ts-template , имеет модульную архитектуру:

Примечание разработчика : этот репозиторий включает файл .clinerules , который служит шпаргалкой разработчика для вашего агента кодирования LLM с кратким справочником по шаблонам кодовой базы, расположению файлов и фрагментам кода.

Оглавление

| Обзор | Особенности | Установка |

| Конфигурация | Структура проекта |

| Инструменты | Ресурсы | Разработка | Лицензия |

Related MCP server: GitHub MCP Server

Обзор

Расширьте возможности своих ИИ-агентов и инструментов разработки с помощью бесшовной интеграции с Git!

Сервер Git MCP выступает в качестве моста, позволяя приложениям (клиентам MCP), которые понимают протокол контекста модели (MCP), например, продвинутым помощникам на основе искусственного интеллекта (LLM), расширениям IDE или пользовательским скриптам, напрямую и безопасно взаимодействовать с локальными репозиториями Git.

Вместо сложных сценариев или ручного CLI ваши инструменты могут использовать этот сервер для:

  • Автоматизируйте рабочие процессы Git : клонируйте репозитории, создавайте ветки, подготавливайте изменения, фиксируйте работу, отправляйте обновления и управляйте тегами программным способом.

  • Получайте информацию о репозитории : проверяйте статус, просматривайте журналы, сравнивайте изменения и проверяйте объекты Git, не покидая хост-приложения.

  • Интегрируйте Git в разработку на основе ИИ : предоставьте возможность магистрам права управлять версиями в рамках своих задач по кодированию или рефакторингу.

Этот сервер, построенный на надежном mcp-ts-template , обеспечивает стандартизированный, безопасный и эффективный способ раскрытия функциональности Git через стандарт MCP. Он достигает этого путем безопасного выполнения стандартного инструмента командной строки git , установленного в системе, с использованием модуля child_process Node.js, что обеспечивает совместимость и использование всей мощи Git.

Функции

Основные утилиты (из шаблона)

Использует надежные утилиты, предоставляемые mcp-ts-template :

  • Ведение журнала : структурированное, настраиваемое ведение журнала (ротация файлов, консоль, уведомления MCP) с редактированием конфиденциальных данных.

  • Обработка ошибок : централизованная обработка ошибок, стандартизированные типы ошибок ( McpError ) и автоматическое ведение журнала.

  • Конфигурация : загрузка переменных среды ( dotenv ).

  • Проверка/очистка входных данных : использует zod для проверки схемы и пользовательской логики очистки (важно для путей).

  • Контекст запроса : отслеживание и корреляция операций с помощью уникальных идентификаторов запросов.

  • Безопасность типов : строгая типизация, обеспечиваемая схемами TypeScript и Zod.

  • Вариант HTTP-транспорта : встроенный сервер Express с SSE, управлением сеансами и поддержкой CORS.

Операции Git

  • Прямое выполнение Git CLI : взаимодействует с Git, безопасно выполняя стандартный инструмент командной строки git через child_process Node.js, обеспечивая полную совместимость и доступ к функциям Git.

  • Комплексное покрытие команд : предоставляет широкий спектр команд Git в качестве инструментов MCP (см. раздел «Инструменты» ).

  • Взаимодействие с репозиторием : поддерживает проверку состояния, ветвление, подготовку, фиксацию, извлечение, вытягивание, отправку, сравнение, регистрацию, сброс, тегирование и многое другое.

  • Управление рабочим каталогом : позволяет устанавливать и очищать рабочий каталог для конкретного сеанса для сохранения контекста между несколькими операциями Git.

  • Функции безопасности : Включает проверки и требует явного подтверждения для потенциально разрушительных операций, таких как git clean и git reset --hard .

  • Подписание коммитов : поддерживает подпись GPG или SSH для проверенных коммитов, управляется через переменную среды GIT_SIGN_COMMITS и конфигурацию Git на стороне сервера. Включает необязательный параметр инструмента для возврата к неподписанным коммитам при сбое подписи.

Установка

Предпосылки

  • Node.js (>=18.0.0)

  • npm (входит в состав Node.js)

  • Git установлен и доступен в системной переменной PATH.

Установить через npm

  1. Установите пакет глобально:

    npm install @cyanheads/git-mcp-server

Установить из источника

  1. Клонируйте репозиторий:

    git clone https://github.com/cyanheads/git-mcp-server.git cd git-mcp-server
  2. Установить зависимости:

    npm install
  3. Создайте проект:

    npm run build (or `npm run rebuild`)

    Это компилирует код TypeScript в JavaScript в каталоге dist/ и делает точку входа исполняемой.

Конфигурация

Переменные среды

Настройте сервер с помощью переменных окружения. Создайте файл .env в корне проекта (скопируйте из .env.example ) или задайте их в своем окружении.

Переменная

Описание

По умолчанию

MCP_TRANSPORT_TYPE

Механизм транспортировки: stdio или http .

stdio

MCP_HTTP_PORT

Порт для HTTP-сервера (если MCP_TRANSPORT_TYPE=http ). Повторяет попытки со следующих портов, если они заняты.

3010

MCP_HTTP_HOST

Адрес хоста для HTTP-сервера (если MCP_TRANSPORT_TYPE=http ).

127.0.0.1

MCP_ALLOWED_ORIGINS

Список разрешенных источников для CORS, разделенных запятыми (если MCP_TRANSPORT_TYPE=http ).

(никто)

MCP_LOG_LEVEL

Уровень ведения журнала ( debug , info , notice , warning , error , crit , alert , emerg ). Унаследовано от шаблона.

info

GIT_SIGN_COMMITS

Установите значение "true" , чтобы включить попытки подписи для коммитов, сделанных инструментом git_commit . Требуется настройка Git/key на стороне сервера (см. ниже).

false

MCP_AUTH_SECRET_KEY

Секретный ключ для подписи/проверки токенов аутентификации (требуется, если аутентификация будет включена в будущем).

''

Настройки клиента MCP

Добавьте в настройки клиента MCP (например, cline_mcp_settings.json ):

{ "mcpServers": { "git-mcp-server": { // Use a descriptive name "command": "node", // Use node to run the script "args": ["/path/to/your/git-mcp-server/dist/index.js"], // Absolute path to the built entry point "env": { // "MCP_TRANSPORT_TYPE": "http", // Optional: if using http // "MCP_HTTP_PORT": "3010", // Optional: if using http and non-default port // "GIT_SIGN_COMMITS": "true" // Optional: Enable commit signing attempts if server is configured }, "disabled": false, "autoApprove": [] // Configure auto-approval rules if desired } } }

Структура проекта

Кодовая база имеет модульную структуру в каталоге src/ :

src/ ├── index.ts # Entry point: Initializes and starts the server ├── config/ # Configuration loading (env vars, package info) │ └── index.ts ├── mcp-server/ # Core MCP server logic and capability registration │ ├── server.ts # Server setup, capability registration │ ├── transports/ # Transport handling (stdio, http) │ ├── resources/ # MCP Resource implementations (currently none) │ └── tools/ # MCP Tool implementations (subdirs per tool) ├── types-global/ # Shared TypeScript type definitions └── utils/ # Common utility functions (logger, error handler, etc.)

Для получения подробного дерева файлов выполните команду npm run tree или посетите docs/tree.md .

Инструменты

Сервер Git MCP предоставляет набор инструментов для взаимодействия с репозиториями Git, вызываемых через протокол контекста модели.

Название инструмента

Описание

Ключевые аргументы

git_add

Этапы определяют файлы или шаблоны.

path? , files?

git_branch

Управляет ветвями (список, создание, удаление, переименование, показ текущих).

path? , mode , branchName? , newBranchName? , startPoint? , force? , all? , remote?

git_checkout

Переключает ветви или восстанавливает рабочие файлы дерева.

path? , branchOrPath , newBranch? , force?

git_cherry_pick

Применяет изменения, внесенные существующими коммитами.

path? , commitRef , mainline? , strategy? , noCommit? , signoff?

git_clean

Удаляет неотслеживаемые файлы. Требуется .

path? , force , dryRun? , directories? , ignored?

git_clear_working_dir

Очищает рабочий каталог сеанса.

(никто)

git_clone

Клонирует репозиторий по указанному абсолютному пути.

repositoryUrl , targetPath , branch? depth? quiet?

git_commit

Фиксирует поэтапные изменения. Поддерживает переопределение автора, контроль подписи.

path? message , author? allowEmpty? amend? forceUnsignedOnFailure?

git_diff

Показывает изменения между коммитами, рабочим деревом и т. д.

path? , commit1? , commit2? , staged? , file?

git_fetch

Загружает объекты и ссылки из других репозиториев.

path? , remote? , prune? , tags? , all?

git_init

Инициализирует новый репозиторий Git по указанному абсолютному пути. По умолчанию — «main» для начальной ветки.

path , initialBranch? bare? quiet?

git_log

Показывает журналы коммитов.

path? , maxCount? , author? , since? , until? , branchOrFile?

git_merge

Объединяет указанную ветвь с текущей ветвью.

path? , branch , commitMessage? , noFf? , squash? , abort?

git_pull

Извлекает данные из другого репозитория или локальной ветки и интегрируется с ними.

path? , remote? , branch? , rebase? , ffOnly?

git_push

Обновляет удаленные ссылки, используя локальные ссылки.

path? , remote? , branch? , remoteBranch? , force? , forceWithLease? , setUpstream? , tags? , delete?

git_rebase

Повторно применяет коммиты поверх другого базового наконечника.

path? , mode? , upstream? , branch? , interactive? , strategy? , strategyOption? , onto?

git_remote

Управляет удаленными репозиториями (список, добавление, удаление, отображение).

path? mode , name? url?

git_reset

Сбрасывает текущий HEAD в указанное состояние. Поддерживает мягкий, смешанный, жесткий режимы. ИСПОЛЬЗУЙТЕ 'hard' С ОСТОРОЖНОСТЬЮ .

path? mode? commit?

git_set_working_dir

Устанавливает рабочий каталог по умолчанию. Может опционально инициализировать репозиторий, если он отсутствует. Требуется абсолютный путь.

path , validateGitRepo? initializeIfNotPresent?

git_show

Показывает информацию об объектах Git (коммитах, тегах и т. д.).

path? ref , filePath?

git_stash

Управляет сохраненными изменениями (список, применение, извлечение, удаление, сохранение).

path? mode , stashRef? message?

git_status

Получает статус репозитория (ветвь, подготовленный, измененный, неотслеживаемые файлы).

path?

git_tag

Управляет тегами (список, создание аннотированных/облегченных, удаление).

path? , mode , tagName? , message? , commitRef? , annotate?

git_worktree

Управляет рабочими деревьями Git (перечисление, добавление, удаление, перемещение, обрезка).

path? , mode , worktreePath? , commitish? , newBranch? , force? , detach? , newPath? , verbose? , dryRun? , expire?

Примечание: Параметр

Ресурсы

Ресурсы MCP не реализованы в этой версии (v2.0.12).

Эта версия фокусируется на переработанной реализации инструментов Git на основе новейшего mcp-ts-template и MCP SDK v1.12.0. Возможности ресурсов, доступные ранее, были временно удалены во время этого крупного обновления.

Если вам требуется доступ к ресурсам MCP (например, для чтения содержимого файла непосредственно через сервер), используйте стабильную версию v1.2.4 .

В будущем в последующих версиях могут быть вновь введены возможности ресурсов.

Примечание: Эта версия (v2.0.0) фокусируется на рефакторинге и обновлении основных инструментов Git на основе новейшего MCP SDK. Возможности MCP Resource не реализованы в этой версии. Для доступа к ресурсам используйте v1.2.4 .

Разработка

Сборка и тестирование

# Build the project (compile TS to JS in dist/ and make executable) npm run build # Test the server locally using the MCP inspector tool (stdio transport) npm run inspector # Test the server locally using the MCP inspector tool (http transport) npm run inspector:http # Clean build artifacts (runs scripts/clean.ts) npm run clean # Generate a file tree representation for documentation (runs scripts/tree.ts) npm run tree # Clean build artifacts and then rebuild the project npm run rebuild # Start the server using stdio (default) npm start # Or explicitly: npm run start:stdio # Start the server using HTTP transport npm run start:http

Лицензия

Данный проект лицензирован в соответствии с лицензией Apache License 2.0 — подробности см. в файле LICENSE .


Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cyanheads/git-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server