G

Git MCP协议服务器

一种模型上下文协议服务器,使大型语言模型能够通过强大的API与Git仓库进行交互,支持仓库初始化、克隆、文件暂存、提交和分支管理等操作。

version-controldeveloper-tools

1.9k 查看 · 2026-07-07 更新

简介

一种模型上下文协议服务器,使大型语言模型能够通过强大的API与Git仓库进行交互,支持仓库初始化、克隆、文件暂存、提交和分支管理等操作。

简介

一种模型上下文协议服务器,使大型语言模型能够通过强大的API与Git仓库进行交互,支持仓库初始化、克隆、文件暂存、提交和分支管理等操作。

GIT MCP 服务器

TypeScript 模型上下文协议 版本 许可证 状态 GitHub

一个模型上下文协议 (MCP) 服务器,提供了与 Git 仓库交互的工具。该服务器允许 AI 助手和 LLM 代理通过标准化接口管理仓库、分支、提交和文件,而无需直接访问文件系统或命令行。它将 Git 操作暴露为 MCP 资源和工具,利用 simple-git 库实现核心功能,同时保持适当的安全边界。

目录

概述

主要功能:

  • 仓库管理:初始化、克隆和检查仓库状态
  • 分支操作:创建、列出、切换、删除和合并分支
  • 工作目录:暂存文件、提交更改、创建差异
  • 远程操作:添加远程、获取、拉取、推送
  • 高级 Git 命令:管理标签、存储更改、挑选提交、变基

架构与组件

核心系统架构:

点击展开 Mermaid 图表
flowchart TB subgraph API["API Layer"] direction LR MCP["MCP Protocol"] Val["Validation (Zod)"] MCP --> Val end subgraph Core["Core Services"] direction LR GitService["Git Service (simple-git)"] ErrorService["Error Service"] GitService <--> ErrorService end subgraph Resources["Resource Layer"] direction LR Repo["Repository Resources"] Diff["Diff Resources"] File["File Resources"] History["History Resources"] Repo <--> Diff Repo <--> File Repo <--> History end subgraph Tools["Tool Layer"] direction LR RepoTools["Repository Tools"] BranchTools["Branch Tools"] WorkdirTools["Working Directory Tools"] RemoteTools["Remote Tools"] AdvancedTools["Advanced Tools"] RepoTools <--> BranchTools BranchTools <--> WorkdirTools WorkdirTools <--> RemoteTools RemoteTools <--> AdvancedTools end Val --> GitService GitService --> Resources GitService --> Tools classDef layer fill:#2d3748,stroke:#4299e1,stroke-width:3px,rx:5,color:#fff classDef component fill:#1a202c,stroke:#a0aec0,stroke-width:2px,rx:3,color:#fff classDef api fill:#3182ce,stroke:#90cdf4,stroke-width:2px,rx:3,color:#fff classDef core fill:#319795,stroke:#81e6d9,stroke-width:2px,rx:3,color:#fff classDef resource fill:#2f855a,stroke:#9ae6b4,stroke-width:2px,rx:3,color:#fff classDef tool fill:#805ad5,stroke:#d6bcfa,stroke-width:2px,rx:3,color:#fff class API,Core,Resources,Tools layer class MCP,Val api class GitService,ErrorService core class Repo,Diff,File,History resource class RepoTools,BranchTools,WorkdirTools,RemoteTools,AdvancedTools tool

核心组件:

  • MCP 服务器 (server.ts): 使用 @modelcontextprotocol/sdk 创建一个暴露资源和工具的服务器。
  • Git 服务 (services/git-service.ts): 在 simple-git 库之上提供了一个抽象层,为 Git 操作提供了清晰的接口。
  • 资源 (resources/): 通过 MCP 资源以一致的 URI 模板形式暴露 Git 数据(如状态、日志、文件内容)。
  • 工具 (tools/): 通过定义良好的输入模式(使用 Zod 进行验证)的 MCP 工具暴露 Git 操作(如提交、推送、拉取)。
  • 错误处理 (services/error-service.ts): 为 Git 和 MCP 操作提供标准化的错误处理和报告。
  • 入口点 (index.ts): 初始化并启动服务器,将其连接到标准 I/O 传输。

功能

资源访问

通过 MCP 资源暴露 Git 仓库信息:

  • 仓库信息:访问基本的 Git 仓库信息,包括当前分支、状态和引用详情
  • 仓库分支:列出仓库中的所有分支,并标明当前分支
  • 仓库远程:列出所有配置的远程仓库及其 URL
  • 仓库标签:列出仓库中的所有标签及其引用
  • 文件内容:在给定的 Git 引用下访问特定文件的内容
  • 目录列表:查看特定路径和引用下的文件和目录列表
  • 差异:获取不同引用之间、未暂存更改或已暂存更改之间的差异
  • 提交历史:查看包含作者、日期和消息信息的详细提交日志
  • 文件归责:查看逐行归属,显示最后一次修改每行的提交
  • 提交详情:访问特定提交的详细信息,包括差异更改

Git 操作

通过 MCP 工具执行 Git 命令:

  • 仓库操作:初始化仓库、从远程克隆、检查仓库状态
  • 分支操作:创建分支、列出分支、切换分支、删除分支、合并
  • 工作目录操作:暂存文件、取消暂存文件、提交更改、创建差异
  • 远程操作:添加远程、列出远程、抓取、拉取、推送
  • 高级操作:管理标签、存储更改、挑选提交、变基分支、重置、清理

安装

先决条件

  • Node.js 16 或更高版本
  • 已安装并可在 PATH 中使用的 Git

从 NPM 安装

npm install -g @cyanheads/git-mcp-server

从源代码安装

git clone https://github.com/cyanheads/git-mcp-server.git cd git-mcp-server npm install npm run build

使用

运行服务器

如果通过 NPM 全局安装:

git-mcp-server

如果从源代码运行:

node build/index.js

该服务器通过标准输入/输出使用模型上下文协议进行通信,使其与任何 MCP 客户端兼容。

与 Claude 集成

将以下内容添加到您的 Claude 配置文件中(例如,cline_mcp_settings.jsonclaude_desktop_config.json):

{ "mcpServers": { "git": { "command": "git-mcp-server", // Or the full path to build/index.js if not installed globally "args": [], "env": {}, "disabled": false, "autoApprove": [] // Configure auto-approval rules if desired } } }

与其他 MCP 客户端集成

使用 MCP 检查器测试服务器:

# If installed globally npx @modelcontextprotocol/inspector git-mcp-server # If running from source npx @modelcontextprotocol/inspector build/index.js

项目结构

代码库遵循模块化结构:

git-mcp-server/ ├── src/ │ ├── index.ts # Entry point: Initializes and starts the server │ ├── server.ts # Core MCP server implementation and setup │ ├── resources/ # MCP Resource implementations │ │ ├── descriptors.ts # Resource URI templates and descriptions │ │ ├── diff.ts # Diff-related resources (staged, unstaged, commit) │ │ ├── file.ts # File content and directory listing resources │ │ ├── history.ts # Commit history and blame resources │ │ ├── index.ts # Aggregates and registers all resources │ │ └── repository.ts # Repository info, branches, remotes, tags resources │ ├── services/ # Core logic and external integrations │ │ ├── error-service.ts # Centralized error handling utilities │ │ └── git-service.ts # Abstraction layer for simple-git operations │ ├── tools/ # MCP Tool implementations │ │ ├── advanced.ts # Advanced Git tools (tag, stash, cherry-pick, rebase, log, show) │ │ ├── branch.ts # Branch management tools (list, create, checkout, delete, merge) │ │ ├── index.ts # Aggregates and registers all tools │ │ ├── remote.ts # Remote interaction tools (add, list, fetch, pull, push) │ │ ├── repository.ts # Repository level tools (init, clone, status) │ │ └── workdir.ts # Working directory tools (add, reset, commit, diff, reset-commit, clean) │ ├── types/ # TypeScript type definitions │ │ └── git.ts # Custom types related to Git operations │ └── utils/ # Shared utility functions │ ├── global-settings.ts # Manages global working directory setting │ └── validation.ts # Input validation schemas (Zod) and helpers ├── build/ # Compiled JavaScript output ├── docs/ # Documentation files ├── logs/ # Log files (if any) ├── scripts/ # Helper scripts for development (e.g., clean, tree) ├── .env.example # Example environment variables ├── .gitignore # Git ignore rules ├── LICENSE # Project license file ├── package.json # Project metadata and dependencies ├── package-lock.json # Lockfile for dependencies ├── README.md # This file └── tsconfig.json # TypeScript compiler configuration

工具

Git MCP 服务器提供了一整套用于 Git 操作的工具:

仓库操作

工具描述
git_init在指定路径初始化一个新的 Git 仓库,支持创建裸仓库选项。
git_clone从远程 URL 克隆一个 Git 仓库到本地路径,支持分支和深度选项。
git_status获取 Git 仓库当前状态,包括工作目录和暂存区的更改。

分支操作

工具描述
git_branch_list列出仓库中的所有分支,支持包含远程分支的选项。
git_branch_create创建新分支,支持指定起始点和自动切换选项。
git_checkout切换分支、标签或提交,并支持在切换时创建新分支的选项。
git_branch_delete删除分支,支持强制删除未合并的分支选项。
git_merge将一个分支合并到当前分支,支持自定义提交信息和合并策略。

工作目录操作

工具描述
git_add将文件添加到暂存区,支持单独文件或整个目录。
git_reset从暂存区取消暂存文件,支持特定文件或所有暂存更改的选项。
git_commit提交暂存更改,支持自定义提交信息、作者信息和修改选项。
git_diff_unstaged获取工作目录中所有未暂存更改的差异,支持特定文件的选项。
git_diff_staged获取索引中所有已暂存更改的差异,支持特定文件的选项。
git_reset_commit将仓库重置到特定引用,支持硬重置、软重置或混合模式选项。
git_clean从工作树中移除未跟踪的文件,支持目录和强制清理选项。

远程操作

工具描述
git_remote_add使用名称和 URL 添加一个新的远程仓库。
git_remote_list列出所有配置的远程仓库及其 URL。
git_fetch从远程仓库获取更新,可指定特定分支。
git_pull从远程仓库拉取更改,可以选择变基策略。
git_push将本地更改推送到远程仓库,可选择强制推送和上游跟踪选项。

高级操作

工具描述
git_tag_create创建新标签,支持带有消息的注释标签。
git_tag_list列出仓库中的所有标签及其引用。
git_stash_create暂存工作目录中的更改,可选择暂存未跟踪文件并添加描述。
git_stash_list列出仓库中所有的暂存项及其描述。
git_stash_apply应用一个暂存更改而不从暂存列表中移除它。
git_stash_pop应用一个暂存更改并从暂存列表中移除它。
git_cherry_pick将特定提交的更改应用到当前分支。
git_rebase将当前分支变基到另一个分支,支持交互模式选项。
git_log获取提交历史记录,输出格式和深度可自定义。
git_show显示特定提交的详细信息,包括差异变更。

资源

Git MCP 服务器通过标准的 MCP 资源公开 Git 数据:

仓库资源

请注意,原文档末尾部分关于“Repository Resources”的具体内容没有提供,因此这部分保持原样。如果有更多具体信息需要翻译,请补充提供。

资源描述
git://repo/{repoPath}/info包括当前分支、状态和引用详情的基本 Git 仓库信息
git://repo/{repoPath}/branches仓库中所有分支的列表,带当前分支指示器
git://repo/{repoPath}/remotes所有配置的远程仓库及其 URL 的列表
git://repo/{repoPath}/tags仓库中所有标签及其引用的列表
git://repo/{repoPath}/file/{filePath}?ref={ref}返回给定 Git 引用处特定文件的内容
git://repo/{repoPath}/ls/{dirPath}?ref={ref}返回特定路径和引用下的文件和目录列表
git://repo/{repoPath}/diff/{fromRef}/{toRef}?path={path}返回两个 Git 引用(提交、分支、标签)之间的差异
git://repo/{repoPath}/diff-unstaged?path={path}返回工作目录中所有未暂存更改的差异
git://repo/{repoPath}/diff-staged?path={path}返回索引中所有已暂存更改的差异
git://repo/{repoPath}/log?maxCount={maxCount}&file={file}返回包含作者、日期和消息详情的提交历史日志
git://repo/{repoPath}/blame/{filePath}返回逐行归属,显示最后一次修改每行的提交
git://repo/{repoPath}/commit/{commitHash}返回关于特定提交的详细信息,包括差异更改

开发

构建与测试

# Build the project npm run build # Watch for changes and rebuild automatically npm run watch # Test the server locally using the MCP inspector tool npm run inspector # Clean build artifacts npm run clean # Generate a file tree representation for documentation npm run tree # Clean and rebuild the project completely npm run rebuild

许可证

Apache License 2.0 - 详见 LICENSE 获取详细信息。


使用 Model Context Protocol 构建

工具列表

  • init: Initialize a new Git repository

  • clone: Clone a repository

  • status: Get repository status

  • add: Stage files

  • commit: Create a commit

  • push: Push commits to remote

  • pull: Pull changes from remote

  • branch_list: List all branches

  • branch_create: Create a new branch

  • branch_delete: Delete a branch

  • checkout: Switch branches or restore working tree files

  • tag_list: List tags

  • tag_create: Create a tag

  • tag_delete: Delete a tag

  • remote_list: List remotes

  • remote_add: Add a remote

  • remote_remove: Remove a remote

  • stash_list: List stashes

  • stash_save: Save changes to stash

  • stash_pop: Apply and remove a stash

  • bulk_action: Execute multiple Git operations in sequence. This is the preferred way to execute multiple operations.

服务配置

[{'mcpServers': {'git-mcp-server': {'args': ['@cyanheads/git-mcp-server'], 'command': 'npx', 'env': {'GIT_SIGN_COMMITS': 'false', 'MCP_LOG_LEVEL': 'info'}}}}]

来源