项目简介
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): 分析文件历史中的语义变更和模式,例如识别代码重构、功能添加等语义层面的变化,并分析代码变更的规律和趋势。
安装步骤
-
克隆仓库:
git clone https://github.com/davidorex/git-file-forensics cd git-file-forensics -
安装依赖并构建:
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 请求。
信息
分类
开发者工具