MCP Git Tools

MCP Git Tools

site icon
2025.03.09 2
RustGit 工具集成代码仓库管理开发效率
mcp-git-tools 是一个为 Model Context Protocol (MCP) 提供的 Git 工具集成库。它提供了一系列 Git 操作,可以通过 MCP 协议调用,包括获取仓库状态、分支信息、提交历史、创建提交、拉取和推送更改、查看文件差异等。该工具适用于需要集成 Git 功能的 MCP 客户端或服务器,帮助开发者更高效地管理代码仓库。
View on GitHub

Overview

基本能力

产品定位

mcp-git-tools 是一个为 Model Context Protocol (MCP) 提供的 Git 工具集成库,旨在通过 MCP 协议提供一系列 Git 操作功能。

核心功能

  • git_status - 获取仓库状态
  • git_branches - 列出分支信息
  • git_log - 获取提交历史
  • git_time_filtered_log - 获取指定时间范围内的提交
  • git_commit - 创建新提交
  • git_pull - 从远程拉取更改
  • git_push - 推送更改到远程
  • git_diff - 查看文件差异
  • git_add - 将文件内容添加到暂存区
  • git_reset - 将暂存区或工作树重置到指定状态

适用场景

  • 需要集成 Git 功能的 MCP 客户端或服务器
  • 自动化代码仓库管理
  • 代码审查和版本控制

工具列表

  1. git_status:获取仓库状态,返回当前修改和未跟踪的文件列表。
  2. git_branches:列出所有分支信息,包括当前分支。
  3. git_log:获取提交历史,可指定最大返回数量和分支。
  4. git_time_filtered_log:获取指定时间范围内的提交,可过滤作者和分支。
  5. git_commit:创建新提交,可自动暂存修改的文件。
  6. git_pull:从远程拉取更改,可指定远程和分支。
  7. git_push:推送更改到远程,可指定远程和分支,支持强制推送。
  8. git_diff:查看文件差异,可指定文件路径、暂存状态或提交。
  9. git_add:将文件内容添加到暂存区,支持通配符和全部添加。
  10. git_reset:重置暂存区或工作树到指定状态,支持硬重置。

常见问题解答

使用教程

使用依赖

确保已安装 Git 和 Rust 工具链。

安装教程

# 克隆仓库
git clone https://github.com/lileeei/mcp-git-tools.git

# 进入目录
cd mcp-git-tools

# 构建
cargo build

调试方式

  1. 作为独立服务器运行:
cargo run --bin mcp-git-server
  1. 在 MCP 客户端中使用:
use mcp_client::{
    client::{ClientCapabilities, ClientInfo, McpClient},
    StdioTransport, Transport, McpService,
};
use std::collections::HashMap;
use std::time::Duration;

// 创建连接到 Git 工具服务器
let transport = StdioTransport::new(
    "path/to/mcp-git-server", 
    vec![], 
    HashMap::new()
);

// 启动传输
let handle = transport.start().await?;
let service = McpService::with_timeout(handle, Duration::from_secs(10));
let mut client = McpClient::new(service);

// 初始化客户端
client.initialize(
    ClientInfo {
        name: "my-client".into(),
        version: "1.0.0".into(),
    },
    ClientCapabilities::default(),
).await?;

// 调用 git_status 工具
let status = client
    .call_tool("git_status", serde_json::json!({ "repo_path": "/path/to/repo" }))
    .await?;

println!("Git status: {:?}", status);
  1. 集成到自己的 MCP 服务器中:
use mcp_git_tools::register_git_tools;
use mcp_server::McpServerBuilder;

// 创建服务器
let mut builder = McpServerBuilder::new("my-server", "1.0.0");

// 注册 Git 工具
register_git_tools(&mut builder);

// 添加其他工具...

// 构建服务器
let server = builder.build();

许可证

该项目遵循 MIT 开源许可条款,请参阅 MIT 了解完整条款。