项目简介

Git File Forensics MCP 是一个 Model Context Protocol (MCP) 服务器,旨在为 LLM 客户端提供强大的 Git 文件级别取证能力。它专注于单个文件的分析,可以帮助用户深入了解文件的历史记录、变更模式以及代码演变过程。通过标准化的 MCP 协议,该服务器可以方便地集成到各种支持 MCP 协议的 LLM 应用中,为代码分析、安全审计和知识挖掘等场景提供有力的支持。

主要功能点

  • 版本历史追踪 (track_file_versions): 追踪指定文件的完整版本历史,包括文件重命名和移动记录,帮助用户了解文件的演变历程。
  • 文件差异分析 (analyze_file_diff): 对比分析文件中任意两个版本之间的具体差异,高亮显示代码变更内容,方便用户快速定位代码修改之处。
  • 文件上下文分析 (analyze_file_context): 分析特定提交中文件变更的上下文信息,例如与该文件变更相关的其他文件,以及提交的详细信息,帮助用户理解代码变更的背景和影响范围。
  • 文件语义分析 (analyze_file_semantics): 分析文件历史中的语义变更和模式,例如识别代码重构、功能添加等语义层面的变化,并分析代码变更的规律和趋势。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/davidorex/git-file-forensics
    cd git-file-forensics
  2. 安装依赖并构建:

    npm install
    npm run build

服务器配置

要将 Git File Forensics MCP 服务器添加到 MCP 客户端,您需要配置服务器启动命令和参数。以下是一个 'cline_mcp_settings.json' 配置文件示例,展示了如何配置该服务器:

{
  "mcpServers": {
    "git-file-forensics": {
      "command": "/opt/homebrew/bin/node",
      "args": ["/path/to/git-file-forensics/build/index.js"],
      "alwaysAllow": []
    }
  }
}

配置参数说明:

  • 'mcpServers': 定义所有 MCP 服务器配置的 JSON 对象。
  • 'git-file-forensics': 您为该服务器自定义的名称,在 MCP 客户端中用于标识和引用该服务器。
  • 'command': 启动 MCP 服务器的命令。这里指定了 'node' 命令,假设您的环境中已安装 Node.js 并可在 '/opt/homebrew/bin/node' 路径下访问到。请根据您的实际 Node.js 安装路径进行调整。
  • 'args': 传递给 'command' 命令的参数,以数组形式提供。这里指定了服务器入口文件 'index.js' 的路径。'/path/to/git-file-forensics/build/index.js' 需要替换为 您本地仓库构建后 'index.js' 文件的实际路径
  • 'alwaysAllow': 一个数组,用于配置默认允许 MCP 客户端调用的工具或访问的资源。这里设置为空数组 '[]',表示没有任何默认允许项。您可以根据需要配置允许列表。

请务必根据您的实际环境修改 'command' 和 'args' 中的路径,确保 MCP 客户端能够正确启动 Git File Forensics MCP 服务器。

基本使用方法

Git File Forensics MCP 服务器通过 JSON-RPC 协议与 MCP 客户端通信。客户端需要向服务器发送符合 MCP 协议的 JSON-RPC 请求来调用工具并获取分析结果。

以下是一些工具调用的 JSON-RPC 请求示例:

1. 调用 'track_file_versions' 工具:

{
  "method": "tools/call",
  "params": {
    "name": "track_file_versions",
    "arguments": {
      "repoPath": "/path/to/repo",  // 替换为您的 Git 仓库的绝对路径
      "file": "path/to/file",      // 替换为仓库内您要分析的文件的相对路径 (相对于 repoPath)
      "outputPath": "output.json"   // 指定分析结果 JSON 文件输出路径
    }
  }
}

2. 调用 'analyze_file_diff' 工具:

{
  "method": "tools/call",
  "params": {
    "name": "analyze_file_diff",
    "arguments": {
      "repoPath": "/path/to/repo",  // 替换为您的 Git 仓库的绝对路径
      "file": "path/to/file",      // 替换为仓库内您要分析的文件的相对路径 (相对于 repoPath)
      "versions": {
        "from": "commit-hash-1",  // 替换为起始 commit 哈希值
        "to": "commit-hash-2"    // 替换为结束 commit 哈希值
      },
      "outputPath": "output.json"   // 指定分析结果 JSON 文件输出路径
    }
  }
}

3. 调用 'analyze_file_context' 工具:

{
  "method": "tools/call",
  "params": {
    "name": "analyze_file_context",
    "arguments": {
      "repoPath": "/path/to/repo",  // 替换为您的 Git 仓库的绝对路径
      "file": "path/to/file",      // 替换为仓库内您要分析的文件的相对路径 (相对于 repoPath)
      "commit": "commit-hash",     // 替换为目标 commit 哈希值
      "outputPath": "output.json"   // 指定分析结果 JSON 文件输出路径
    }
  }
}

4. 调用 'analyze_file_semantics' 工具:

{
  "method": "tools/call",
  "params": {
    "name": "analyze_file_semantics",
    "arguments": {
      "repoPath": "/path/to/repo",  // 替换为您的 Git 仓库的绝对路径
      "file": "path/to/file",      // 替换为仓库内您要分析的文件的相对路径 (相对于 repoPath)
      "outputPath": "output.json"   // 指定分析结果 JSON 文件输出路径
    }
  }
}

使用说明:

  • 将上述 JSON-RPC 请求发送到已连接的 Git File Forensics MCP 服务器。
  • 请根据实际情况替换请求参数中的 '/path/to/repo', '/path/to/file', 'commit-hash-1', 'commit-hash-2' 和 'commit-hash' 为您要分析的 Git 仓库路径、文件路径和 commit 哈希值。
  • 服务器会将分析结果以 JSON 格式写入到 'outputPath' 参数指定的文件中。

请参考 MCP 客户端的文档,了解如何配置和使用 MCP 服务器,以及如何发送 JSON-RPC 请求。

信息

分类

开发者工具