git file forensics

Local 2025-08-31 23:21:08 0

Provides deep git file-level forensics tools to analyze detailed file histories, changes, and patterns within git repositories, focusing on individual file analysis rather than repository-wide operations.


An MCP tool for deep git file-level forensics that helps get detailed insights into file histories, changes, and patterns, focusing on individual file analysis rather than repository-wide operations.

Installation

  1. Clone and build the server:

    git clone [repository-url]
    cd git-file-forensics
    npm install
    npm run build

  2. Add to your MCP settings (~/Library/Application Support/Code/User/globalStorage/david-dafu-dev.dafu/settings/cline_mcp_settings.json):

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

Available Tools

1. track_file_versions

Tracks complete version history of a specific file, including renames and moves.

{
  "method": "tools/call",
  "params": {
    "name": "track_file_versions",
    "arguments": {
      "repoPath": "/path/to/repo",
      "file": "path/to/file",
      "outputPath": "output.json"
    }
  }
}

2. analyze_file_diff

Analyzes specific changes between any two versions of a file.

{
  "method": "tools/call",
  "params": {
    "name": "analyze_file_diff",
    "arguments": {
      "repoPath": "/path/to/repo",
      "file": "path/to/file",
      "versions": {
        "from": "commit-hash-1",
        "to": "commit-hash-2"
      },
      "outputPath": "output.json"
    }
  }
}

3. analyze_file_context

Analyzes broader context of file changes in a specific commit.

{
  "method": "tools/call",
  "params": {
    "name": "analyze_file_context",
    "arguments": {
      "repoPath": "/path/to/repo",
      "file": "path/to/file",
      "commit": "commit-hash",
      "outputPath": "output.json"
    }
  }
}

4. analyze_file_semantics

Analyzes semantic changes and patterns in file history.

{
  "method": "tools/call",
  "params": {
    "name": "analyze_file_semantics",
    "arguments": {
      "repoPath": "/path/to/repo",
      "file": "path/to/file",
      "outputPath": "output.json"
    }
  }
}

Output Format

All tools output JSON files containing: - Detailed analysis results - Summary statistics - Change patterns and relationships - Risk assessments (where applicable)

Requirements

  • Node.js
  • Git (must be installed and accessible)
  • MCP SDK

License

This project is licensed under the Apache License, Version 2.0 - see the LICENSE.txt file for details.

Copyright davidorex.ai. Licensed under the Apache License, Version 2.0; you may not use this project except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

[
  {
    "description": "Track complete version history of a specific file, including renames and moves",
    "inputSchema": {
      "properties": {
        "file": {
          "description": "File to analyze",
          "type": "string"
        },
        "outputPath": {
          "description": "Path to write analysis output",
          "type": "string"
        },
        "repoPath": {
          "description": "Path to git repository",
          "type": "string"
        }
      },
      "required": [
        "repoPath",
        "file",
        "outputPath"
      ],
      "type": "object"
    },
    "name": "track_file_versions"
  },
  {
    "description": "Analyze specific changes between any two versions of a file",
    "inputSchema": {
      "properties": {
        "file": {
          "description": "File to analyze",
          "type": "string"
        },
        "outputPath": {
          "description": "Path to write analysis output",
          "type": "string"
        },
        "repoPath": {
          "description": "Path to git repository",
          "type": "string"
        },
        "versions": {
          "properties": {
            "from": {
              "type": "string"
            },
            "to": {
              "type": "string"
            }
          },
          "required": [
            "from",
            "to"
          ],
          "type": "object"
        }
      },
      "required": [
        "repoPath",
        "file",
        "versions",
        "outputPath"
      ],
      "type": "object"
    },
    "name": "analyze_file_diff"
  },
  {
    "description": "Analyze broader context of file changes in a specific commit",
    "inputSchema": {
      "properties": {
        "commit": {
          "description": "Commit hash to analyze",
          "type": "string"
        },
        "file": {
          "description": "File to analyze",
          "type": "string"
        },
        "outputPath": {
          "description": "Path to write analysis output",
          "type": "string"
        },
        "repoPath": {
          "description": "Path to git repository",
          "type": "string"
        }
      },
      "required": [
        "repoPath",
        "file",
        "commit",
        "outputPath"
      ],
      "type": "object"
    },
    "name": "analyze_file_context"
  },
  {
    "description": "Analyze semantic changes and patterns in file history",
    "inputSchema": {
      "properties": {
        "file": {
          "description": "File to analyze",
          "type": "string"
        },
        "outputPath": {
          "description": "Path to write analysis output",
          "type": "string"
        },
        "repoPath": {
          "description": "Path to git repository",
          "type": "string"
        }
      },
      "required": [
        "repoPath",
        "file",
        "outputPath"
      ],
      "type": "object"
    },
    "name": "analyze_file_semantics"
  }
]