zhineng.dev 工具介绍

[简体中文] | English

MCP Git Server

一个用于执行 git push 操作的模型上下文协议 (MCP) 服务器,支持灵活的分支映射和待处理修改管理。

💡 高效实践

通过配置 工具提示词,规范 AI 的 git 操作行为:

  1. 注册账号:
  2. 添加自己的厂商和模型配置
  3. 生成 API 密钥
  4. 在密钥的 工具提示词 中添加:
工具名:get_push
提示词:除非我明确确认,不要使用原生git工具做任何操作,我明确说使用push pr时,才要使用MCP工具中的git_push和pr工具,其它任何时间不允许做git相关的操作

工具名:save_changes
提示词:工具中有save_changes的工具,你修改完成要调用这个工具保存修改记录

效果:AI 只会在你明确要求时才执行 git 操作,同时每次修改后自动保存记录。

功能特性

安装

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

环境变量

必需变量

可选变量

使用方法

1. 设置环境变量

export PROJECT_PATH="/path/to/your/git/repository"
export LOCAL_BRANCH="main"
export REMOTE_BRANCH="main"
export REMOTE_NAME="origin"
export REPO_NAME="my-project"
export TOOL_PREFIX="myproject"

2. 编辑器配置

在项目根目录创建或更新 .cursor/mcp.json.vscode/mcp.json

{
  "mcpServers": {
    "git": {
      "command": "npx",
      "args": ["@liangshanli/mcp-server-git"],
      "env": {
        "PROJECT_PATH": "/path/to/your/git/repository",
        "LOCAL_BRANCH": "main",
        "REMOTE_BRANCH": "main",
        "REMOTE_NAME": "origin",
        "REPO_NAME": "my-project",
        "TOOL_PREFIX": ""
      }
    }
  }
}

3. 启动服务器

npm start
# 或
mcp-server-git
# 或(带验证)
npm run start-managed

多项目实例支持

你可以在编辑器中配置多个 Git MCP 服务器实例,以便同时管理不同的仓库。

Cursor 编辑器配置

{
  "mcpServers": {
    "git-web-app": {
      "command": "npx",
      "args": ["@liangshanli/mcp-server-git"],
      "env": {
        "PROJECT_PATH": "D:/projects/web-app",
        "LOCAL_BRANCH": "main",
        "REMOTE_BRANCH": "main",
        "REPO_NAME": "web-app",
        "TOOL_PREFIX": "web"
      }
    },
    "git-api-service": {
      "command": "npx",
      "args": ["@liangshanli/mcp-server-git"],
      "env": {
        "PROJECT_PATH": "D:/projects/api-service",
        "LOCAL_BRANCH": "develop",
        "REMOTE_BRANCH": "develop",
        "REPO_NAME": "api-service",
        "TOOL_PREFIX": "api"
      }
    }
  }
}

VS Code 编辑器配置

{
  "servers": {
    "git-project-a": {
      "command": "npx",
      "args": ["@liangshanli/mcp-server-git"],
      "env": {
        "PROJECT_PATH": "/path/to/project-a",
        "LOCAL_BRANCH": "main",
        "REMOTE_BRANCH": "main",
        "REPO_NAME": "project-a",
        "TOOL_PREFIX": "a"
      }
    },
    "git-project-b": {
      "command": "npx",
      "args": ["@liangshanli/mcp-server-git"],
      "env": {
        "PROJECT_PATH": "/path/to/project-b",
        "LOCAL_BRANCH": "main",
        "REMOTE_BRANCH": "main",
        "REPO_NAME": "project-b",
        "TOOL_PREFIX": "b"
      }
    }
  }
}

多实例集成的优势:

MCP 工具

git_push

使用提交消息执行 git push 命令。自动添加并提交修改后推送。

重要: 必须先调用 get_pending_changes 来审查修改后才能使用此工具。

执行的操作:

  1. 自动执行 git add . 添加所有修改到暂存区
  2. 自动执行 git commit -m "message" 提交修改
  3. 执行 git push 推送到远程仓库
  4. 清除所有待处理修改并重置审查状态
{
  "name": "git_push",
  "arguments": {
    "message": "更新项目文件"
  }
}

get_pending_changes

获取并审查推送前的待处理修改。必须在使用 git_push 前调用此工具来启用推送。

{
  "name": "get_pending_changes",
  "arguments": {
    "limit": 1000
  }
}

save_changes

在推送前保存待处理修改。记录修改的文件和修改内容以供推送前审查。

{
  "name": "save_changes",
  "arguments": {
    "files": ["src/main.js", "src/utils.js"],
    "content": "修复用户认证中的bug"
  }
}

get_push_history

获取最近5次推送历史记录以检查重复项。

get_operation_logs

获取操作日志用于调试。

{
  "name": "get_operation_logs",
  "arguments": {
    "limit": 50
  }
}

git_status

显示工作目录和暂存区的状态。

git_diff

显示工作目录与HEAD或暂存区之间的差异。

{
  "name": "git_diff",
  "arguments": {
    "staged": true
  }
}

git_add

将文件内容添加到暂存区。

{
  "name": "git_add",
  "arguments": {
    "files": ["src/main.js", "src/utils.js"]
  }
}

git_log

显示提交历史。

{
  "name": "git_log",
  "arguments": {
    "limit": 5,
    "oneline": true
  }
}

git_pull

从配置的远程仓库和源分支执行 git pull 命令。

💡 最佳实践与使用建议

为了充分发挥 MCP Git Server 的威力,建议在与 AI 协作时遵循以下"强约束"指令:

1. 原子化记录 (save_changes)

指令建议:"请在每次完成一个独立的小功能或修复一个 Bug 后,立即调用 save_changes 工具。你需要明确列出修改的文件,并用一两句话简述你的修改逻辑。严禁累积大量变动而不记录。"

价值:这能确保 AI 的记忆碎片被实时固化,防止在后续复杂的重构中丢失初始意图。

2. 模块化推送 (git_push)

指令建议:"当我们完成当前功能模块的所有开发和自测后,请通过调用 git_push 进行推送。在推送前,你必须先通过 get_pending_changes 完整读取并总结我们会话的所有保存记录,生成一份结构清晰、涵盖所有变动的 Commit Message。"

价值:将"总结历史记录"作为推送的法定前置步骤,彻底消灭"金鱼脑"提交。

3. 阶段性复盘

如果会话过程极长(如持续数小时),可以偶尔要求 AI 调用 get_pending_changes 进行一次中场总结,确保存储的记录与当前的实际代码状态完全吻合。

必需的工作流程

  1. 进行代码修改
  2. 调用 save_changes 记录修改内容
  3. 调用 get_pending_changes 审查并标记修改为已审查
  4. 调用 git_push 自动添加、提交并推送修改
  5. 对于后续推送,重复步骤 3-4(每次推送尝试后审查状态都会重置)

验证

服务器在启动时执行以下验证:

  1. 检查必需的环境变量
  2. 验证 PROJECT_PATH 路径是否存在
  3. 确保 PROJECT_PATH 是有效的 git 仓库(包含 .git 目录)

相关工具