Git仓库交互服务器

一个基于模型上下文协议的Git仓库交互与自动化工具,提供通过大型语言模型读取、搜索和操作Git仓库的功能。

  • by Arnabdaz
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Arnabdaz/Git_MCP_finetuned

使用说明

mcp服务器git:git mcp服务器

概述

用于Git存储库交互和自动化的模型上下文协议服务器。此服务器提供通过大型语言模型读取、搜索和操作Git存储库的工具。

请注意,mcp服务器git目前处于早期开发阶段。随着我们不断开发和改进服务器,功能和可用工具可能会发生变化和扩展。

工具

  1. git_status

    • 显示工作树状态
    • 输入:
      • repo_path (string):Git存储库的路径
    • 返回:工作目录的当前状态作为文本输出
  2. git_diff_unstaged

    • 显示尚未暂存的工作目录中的更改
    • 输入:
      • repo_path (string):Git存储库的路径
      • context_lines (数字,可选):要显示的上下文行数(默认值:3)
    • 返回值:未暂存更改的差异输出
  3. git_diff_staged

    • 显示已提交的更改
    • 输入:
      • repo_path (string):Git存储库的路径
      • context_lines (数字,可选):要显示的上下文行数(默认值:3)
    • 返回值:分阶段更改的差异输出
  4. git_diff

    • 显示分支或提交之间的差异
    • 输入:
      • repo_path (string):Git存储库的路径
      • target (string):目标分支或提交进行比较
      • context_lines (数字,可选):要显示的上下文行数(默认值:3)
    • 返回:将当前状态与目标进行比较的Diff输出
  5. git_commit

    • 记录对存储库的更改
    • 输入:
      • repo_path (string):Git存储库的路径
      • message (string):提交消息
    • 返回:使用新的提交哈希进行确认
  6. git_add

    • 将文件内容添加到暂存区
    • 输入:
      • repo_path (string):Git存储库的路径
      • files (string[]):到stage的文件路径数组
    • 返回:暂存文件的确认
  7. git_reset

    • 取消所有阶段性变化
    • 输入:
      • repo_path (string):Git存储库的路径
    • 返回:重置操作确认
  8. git_log

    • 显示提交日志
    • 输入:
      • repo_path (string):Git存储库的路径
      • max_count (number,可选):要显示的最大提交数(默认值:10)
    • 返回:包含哈希、作者、日期和消息的提交条目数组
  9. git_create_branch

    • 创建新分支
    • 输入:
      • repo_path (string):Git存储库的路径
      • branch_name (string):新分支的名称
      • base_branch (字符串,可选):新分支的起点
    • 返回:分支创建确认
  10. git_checkout

  • 切换分支
  • 输入:
    • repo_path (string):Git存储库的路径
    • branch_name (string):要结账的分行名称
  • 返回:分支切换确认
  1. git_show
  • 显示提交的内容
  • 输入:
    • repo_path (string):Git存储库的路径
    • revision (string):要显示的修订(提交哈希、分支名称、标签)
  • 返回:指定提交的内容
  1. git_init
  • 初始化Git存储库
  • 输入:
    • repo_path (string):初始化git repo的目录路径
  • 返回:确认存储库初始化
  1. git_branch
  • 列出Git分支
  • 输入:
    • repo_path (string):Git存储库的路径。
    • branch_type (string):是列出本地分支('local')、远程分支('remote')还是所有分支('all')。
    • contains (string,可选):该分支应包含的commit-sha。如果没有指定commit-sha,则不要向此参数传递任何内容
    • not_contains (string,可选):该分支不应包含的commit sha。如果没有指定commit-sha,则不要向此参数传递任何内容
  • 返回:分支列表
  1. git_cherry_pick
  • Cherry选择当前分支的承诺
  • 输入:
    • repo_path (string):Git存储库的路径
    • commit_sha (string):樱桃采摘的提交哈希
    • no_commit (boolean,可选):如果为true,则选择樱桃而不提交(默认值:false)
  • 退货:确认樱桃采摘操作
  1. git_list_remotes
  • 列出已配置的遥控器
  • 输入:
    • repo_path (string):Git存储库的路径
    • verbose (布尔值,可选):如果为true,则显示远程URL(默认值:false)
  • 返回:已配置的遥控器列表
  1. git_pull
  • 从远程存储库中提取更改
  • 输入:
    • repo_path (string):Git存储库的路径
    • remote (string):远程设备的名称
    • branch (string):要拉取的分支的名称
  • 返回:拉取操作确认
  1. git_push
  • 将更改推送到远程存储库
  • 输入:
    • repo_path (string):Git存储库的路径
    • remote (string):远程设备的名称
    • branch (string):要推送的分支的名称
    • force (布尔值,可选):如果为true,则强制推送(默认值:false)
  • 返回:推送操作确认
  1. git_fetch
  • 从远程存储库获取更改
  • 输入:
    • repo_path (string):Git存储库的路径
    • remote (string):远程设备的名称
    • branch (字符串,可选):要获取的特定分支(默认:所有分支)
    • all_remotes (boolean,可选):如果为true,则从所有远程获取(默认值:false)
  • 返回:确认获取操作
  1. git_switch_create
  • 切换到新分支或从可选的基分支创建新分支
  • 输入:
    • repo_path (string):Git存储库的路径
    • branch_name (string):要创建和切换到的分支的名称
    • base_branch (string,可选):新分支的基础分支
  • 返回:分支创建和切换确认

安装

使用紫外线(推荐)

使用时 uv 不需要特定的安装。我们将 使用 uvx 直接运行 mcp服务器git.

使用PIP

或者,您可以安装 mcp-server-git 通过pip:

pip install mcp-server-git

安装后,您可以使用以下命令将其作为脚本运行:

python -m mcp_server_git

配置

使用Claude Desktop

将此添加到您的 claude_desktop_config.json:

Using uvx
"mcpServers": {
  "git": {
    "command": "uvx",
    "args": ["mcp-server-git", "--repository", "path/to/git/repo"]
  }
}
Using docker (secure configuration)
  • 注意:将“/Users/username/projects”替换为您希望访问的特定项目路径
  • 为了安全起见,只挂载您需要的特定目录,而不是整个用户目录
"mcpServers": {
  "git": {
    "command": "docker",
    "args": [
      "run", "--rm", "-i",
      "--security-opt=no-new-privileges:true",
      "--read-only",
      "--tmpfs", "/tmp:rw,noexec,nosuid,size=100m",
      "--mount", "type=bind,src=/Users/username/projects,dst=/workspace,readonly",
      "--user", "1000:1000",
      "mcp/git",
      "--repository", "/workspace/your-repo"
    ]
  }
}
Using pip installation
"mcpServers": {
  "git": {
    "command": "python",
    "args": ["-m", "mcp_server_git", "--repository", "path/to/git/repo"]
  }
}

使用VS代码

为了快速安装,请使用下面的一键安装按钮之一。..

对于手动安装,请将以下JSON块添加到VS Code中的用户设置(JSON)文件中。您可以按 Ctrl + Shift + P 和打字 Preferences: Open Settings (JSON).

您可以选择将其添加到名为的文件中 .vscode/mcp.json 在您的工作空间中。这将允许您与他人共享配置。

请注意 mcp 中不需要密钥 .vscode/mcp.json 文件。

{
  "mcp": {
    "servers": {
      "git": {
        "command": "uvx",
        "args": ["mcp-server-git"]
      }
    }
  }
}

对于Docker安装(安全配置):

{
  "mcp": {
    "servers": {
      "git": {
        "command": "docker",
        "args": [
          "run",
          "--rm",
          "-i",
          "--security-opt=no-new-privileges:true",
          "--read-only",
          "--tmpfs",
          "/tmp:rw,noexec,nosuid,size=100m",
          "--mount",
          "type=bind,src=${workspaceFolder},dst=/workspace",
          "--user",
          "1000:1000",
          "mcp/git",
          "--repository",
          "/workspace"
        ]
      }
    }
  }
}

使用方法 泽德

添加到您的Zed settings.json:

Using uvx
"context_servers": [
  "mcp-server-git": {
    "command": {
      "path": "uvx",
      "args": ["mcp-server-git"]
    }
  }
],
Using pip installation
"context_servers": {
  "mcp-server-git": {
    "command": {
      "path": "python",
      "args": ["-m", "mcp_server_git"]
    }
  }
},

使用方法 Zencoder

  1. 转到Zencoder菜单(…)
  2. 从下拉菜单中,选择 Agent Tools
  3. 点击 Add Custom MCP
  4. 从下面添加名称(即git)和服务器配置,并确保点击 Install 按钮
Using uvx
{
  "command": "uvx",
  "args": ["mcp-server-git", "--repository", "path/to/git/repo"]
}

调试

您可以使用MCP检查器调试服务器。对于uvx安装:

npx @modelcontextprotocol/inspector uvx mcp-server-git

或者,如果您已将软件包安装在特定目录中或正在其上开发:

cd path/to/servers/src/git
npx @modelcontextprotocol/inspector uv run mcp-server-git

跑步 tail -n 20 -f ~/Library/Logs/Claude/mcp*.log 将显示服务器的日志,并可能 帮助您调试任何问题。

发展

如果您正在进行本地开发,有两种方法可以测试您的更改:

  1. 运行MCP检查器以测试您的更改。看 调试 用于运行说明。

  2. 使用Claude桌面应用程序进行测试。将以下内容添加到您的 claude_desktop_config.json:

码头工人

{
  "mcpServers": {
    "git": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "--mount",
        "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
        "--mount",
        "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
        "--mount",
        "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt",
        "mcp/git"
      ]
    }
  }
}

UVX

{
  "mcpServers": {
    "git": {
      "command": "uv",
      "args": [
        "--directory",
        "/<path to mcp-servers>/mcp-servers/src/git",
        "run",
        "mcp-server-git"
      ]
    }
  }
}

构建

Docker构建:

cd src/git
docker build -t mcp/git .

许可证

此MCP服务器根据MIT许可证获得许可。这意味着您可以根据MIT许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅项目存储库中的LICENSE文件。