mcpField
G
GIT MCP Server

GIT MCP Server

本地服务
github.com/wty0512版本控制182 周前更新

关于 GIT MCP Server

GIT MCP Server 通过 MCP 向 AI 助手和大模型 Agent 提供 Git 仓库数据与操作,涵盖仓库、分支、工作区、远程端及高级 Git 任务,并以结构化资源呈现历史和文件变更。

主要功能

  1. 01初始化、克隆和检查仓库
  2. 02创建、切换、合并和删除分支
  3. 03暂存、提交和比较变更
  4. 04获取、拉取和推送远程更新
  5. 05管理标签、暂存区、拣选和变基
  6. 06读取仓库资源与提交历史

适用场景

  1. 01让 AI Agent 检查仓库状态和历史
  2. 02通过 MCP 工具修改分支和提交
  3. 03查看文件内容、差异和行归属
  4. 04管理远程更新和高级 Git 操作

MCP 相关

该 MCP 服务将 Git 操作作为工具、仓库信息作为资源提供。MCP 客户端可通过这些接口操作,而无需直接访问文件系统或命令行。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"git-mcp-server-wty0512": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
启动命令npx -y @modelcontextprotocol/inspector

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@modelcontextprotocol/inspector

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

GIT MCP 服务

TypeScript Model Context Protocol Version License Status GitHub

一个用于与 Git 仓库交互并提供工具的模型上下文协议(MCP)服务。该服务允许 AI 助手和大模型 Agent 通过标准化接口管理仓库、分支、提交和文件,无需直接访问文件系统或命令行。它将 Git 操作作为 MCP 资源和工具公开,同时保持适当的安全边界。

目录

概述

核心功能:

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

核心系统架构:

点击展开 Mermaid 图
flowchart TB
    subgraph API["API Layer"]
        direction LR
        MCP["MCP Protocol"]
        Val["Validation"]

        MCP --> Val
    end

    subgraph Core["Core Services"]
        direction LR
        GitService["Git Service"]
        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 服务:使用模型上下文协议 SDK 创建一个公开资源和工具的服务
  • Git 服务:基于 simple-git 的抽象层,为 Git 操作提供简洁的接口
  • 资源:通过 MCP 资源和一致的 URI 模板公开 Git 数据
  • 工具:通过 MCP 工具公开 Git 操作,并提供定义明确的架构
  • 错误处理:标准化的错误处理与报告

功能

资源访问

通过 MCP 资源公开 Git 仓库信息:

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

通过 MCP 工具执行 Git 命令:

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

安装

先决条件
  • Node.js 16 或更高版本
  • 已安装 Git,且可通过 PATH 使用
从 NPM 安装
npm install -g git-mcp-server
从源代码安装
git clone https://github.com/cyanheads/git-mcp-server.git
cd git-mcp-server
npm install
npm run build

使用方法

运行服务
git-mcp-server

服务通过 stdin/stdout 使用 Model Context Protocol 通信,因此兼容任何 MCP 客户端。

与 Claude 集成

添加到 Claude 配置文件中:

{
  "mcpServers": {
    "git": {
      "command": "git-mcp-server",
      "args": [],
      "env": {},
      "disabled": false
    }
  }
}
与其他 MCP 客户端集成

使用 MCP 检查器测试服务:

npx @modelcontextprotocol/inspector git-mcp-server

项目结构

代码库采用模块化结构:

git-mcp-server/
├── src/
│   ├── index.ts           # Entry point
│   ├── server.ts          # MCP server implementation
│   ├── resources/         # Resource implementations
│   │   ├── descriptors.ts # Resource URI templates
│   │   ├── diff.ts        # Diff-related resources
│   │   ├── file.ts        # File-related resources
│   │   ├── history.ts     # History-related resources
│   │   ├── index.ts       # Resource registration
│   │   └── repository.ts  # Repository resources
│   ├── services/          # Service implementations
│   │   ├── error-service.ts # Error handling
│   │   └── git-service.ts   # Git operations abstraction
│   ├── tools/             # Tool implementations
│   │   ├── advanced.ts    # Advanced Git operations
│   │   ├── branch.ts      # Branch operations
│   │   ├── index.ts       # Tool registration
│   │   ├── remote.ts      # Remote operations
│   │   ├── repository.ts  # Repository operations
│   │   └── workdir.ts     # Working directory operations
│   ├── types/             # Type definitions
│   │   └── git.ts         # Git-related types
│   └── utils/             # Utility functions
│       └── validation.ts  # Input validation
└── scripts/               # Development scripts

工具

Git MCP Server 提供了一套全面的 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 Server 通过标准 MCP 资源公开 Git 数据:

仓库资源
资源描述
git://repo/{repoPath}/infoGit 仓库的基本信息,包括当前分支、状态和引用详情
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
npm run watch

# Test with MCP inspector
npm run inspector

# Clean build artifacts
npm run clean

# Rebuild completely
npm run rebuild

许可证

Apache License 2.0 - 详情请参阅 LICENSE。


使用 Model Context Protocol 构建

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。