7e41c9e956d401947012e7ed83d0080fca1f9483source_git · archish9/versioncontrolhelpermcp · current release
Observed 2026-08-31T10:50:19.822Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.
{
"experimental": {},
"prompts": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
},
"tools": {
"listChanged": false
}
}| Tool | Category | Annotations | Risk |
|---|---|---|---|
commit_all_changesStage ALL changes (including untracked files) and create a commit.
This tool acts as a "save point" for the project. It performs the equivalent of:
1. `git add -A` (Stages all modified, deleted, and new files)
2. `git commit -m "message"`
It will automatically initialize the repository if it hasn't been initialized yet.
Args:
repo_path: The absolute path to the repository.
message: A descriptive commit message.
Common prefixes: 'feat:', 'fix:', 'docs:', 'refactor:', 'test:'.
Returns:
The SHA (full hash) of the new commit, or a message indicating "No changes to commit"
if the working directory was clean.
Input schema{
"properties": {
"repo_path": {
"title": "Repo Path",
"type": "string"
},
"message": {
"title": "Message",
"type": "string"
}
},
"required": [
"repo_path",
"message"
],
"title": "commit_all_changesArguments",
"type": "object"
}Output schema{
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "commit_all_changesOutput",
"type": "object"
} | — | — · — | — |
compare_commitsCompare two commits and return the diff.
This tool generates a detailed comparison between two points in the history (`from_commit` -> `to_commit`).
It's useful for:
- Reviewing changes between versions.
- Debugging when a bug was introduced.
- Generating a changelog.
The output includes a summary of file changes (added, modified, deleted, renamed)
and the actual diff content for each file.
Args:
repo_path: The absolute path to the repository.
from_commit: The source (older) commit SHA.
to_commit: The target (newer) commit SHA.
Returns:
A JSON-formatted string containing the list of changed files,
additions/deletions counts, and diff patches.
Input schema{
"properties": {
"repo_path": {
"title": "Repo Path",
"type": "string"
},
"from_commit": {
"title": "From Commit",
"type": "string"
},
"to_commit": {
"title": "To Commit",
"type": "string"
}
},
"required": [
"repo_path",
"from_commit",
"to_commit"
],
"title": "compare_commitsArguments",
"type": "object"
}Output schema{
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "compare_commitsOutput",
"type": "object"
} | — | — · — | — |
create_branchCreate a new git branch.
This tool creates a new branch pointer but DOES NOT switch to it.
To start working on the new branch, you must call `switch_branch` afterwards.
Args:
repo_path: The absolute path to the repository.
branch_name: The name of the new branch (e.g., "feature/new-login").
from_ref: The commit SHA or branch name to start the new branch from.
If not provided, defaults to the current HEAD.
Returns:
A confirmation message containing the new branch name.
Input schema{
"properties": {
"repo_path": {
"title": "Repo Path",
"type": "string"
},
"branch_name": {
"title": "Branch Name",
"type": "string"
},
"from_ref": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "From Ref"
}
},
"required": [
"repo_path",
"branch_name"
],
"title": "create_branchArguments",
"type": "object"
}Output schema{
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "create_branchOutput",
"type": "object"
} | — | — · — | — |
generate_commit_messageGenerate a suggested commit message based on staged changes.
This tool analyzes the staged and modified files to suggest a commit message.
Note: This uses a simple heuristic (template-based), not a full LLM analysis of the diff content.
It is useful as a starting point or for quick commits.
Styles:
- "conventional": Uses Conventional Commits format (feat: ..., fix: ..., chore: ...) based on file types.
- "simple": Returns a plain predictive sentence like "Update 3 files".
Args:
repo_path: The absolute path to the repository.
style: The message style format to use. Defaults to "conventional".
Returns:
A string containing the suggested commit message and a brief summary of detected changes.
Input schema{
"properties": {
"repo_path": {
"title": "Repo Path",
"type": "string"
},
"style": {
"default": "conventional",
"title": "Style",
"type": "string"
}
},
"required": [
"repo_path"
],
"title": "generate_commit_messageArguments",
"type": "object"
}Output schema{
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "generate_commit_messageOutput",
"type": "object"
} | — | — · — | — |
get_repo_statusGet the current status of the git repository.
This tool provides a snapshot of the repository's state, including:
- Initialization status (is it a git repo?)
- Current branch name
- Whether there are uncommitted changes
- Lists of staged, modified, and untracked files
Use this tool before committing to verify what changes will be included,
or to simply check the current context (branch, pending changes).
Args:
repo_path: The absolute path to the repository.
Returns:
A JSON-formatted string containing the repository status details.
Example JSON structure:
{
"is_initialized": true,
"current_branch": "main",
"has_changes": true,
"staged_files": ["file1.py"],
"modified_files": ["file2.py"],
"untracked_files": ["new_file.py"]
}
Input schema{
"properties": {
"repo_path": {
"title": "Repo Path",
"type": "string"
}
},
"required": [
"repo_path"
],
"title": "get_repo_statusArguments",
"type": "object"
}Output schema{
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_repo_statusOutput",
"type": "object"
} | — | — · — | — |
initialize_repoInitialize a new git repository at the specified path.
This tool creates a `.git` directory at `repo_path` if it doesn't already exist.
It is safe to call on an existing repository (it will return a success message without modifying the repo).
Args:
repo_path: The absolute path to the directory where the git repository should be initialized.
If the directory does not exist, it will be created.
initial_commit: If True, and the repository is empty or fresh, an initial commit will be created.
This includes creating a README.md if one doesn't exist.
Default is True.
Returns:
A status message indicating whether the repository was initialized,
already existed, or if an initial commit was created.
Input schema{
"properties": {
"repo_path": {
"title": "Repo Path",
"type": "string"
},
"initial_commit": {
"default": true,
"title": "Initial Commit",
"type": "boolean"
}
},
"required": [
"repo_path"
],
"title": "initialize_repoArguments",
"type": "object"
}Output schema{
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "initialize_repoOutput",
"type": "object"
} | — | — · — | — |
list_branchesList all branches in the repository.
Shows all local branches with current branch marked.
Args:
repo_path: Path to the repository directory
Returns:
JSON list of branches with current branch indicator
Input schema{
"properties": {
"repo_path": {
"title": "Repo Path",
"type": "string"
}
},
"required": [
"repo_path"
],
"title": "list_branchesArguments",
"type": "object"
}Output schema{
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "list_branchesOutput",
"type": "object"
} | — | — · — | — |
list_commitsList the commit history for a specific branch or reference.
Retrieves a list of commits starting from the specified `branch` (or HEAD),
going back in history up to `limit`. Each commit includes:
- SHA (full and short)
- Message
- Author details
- Timestamp
Args:
repo_path: The absolute path to the repository.
branch: The branch name, tag, or commit SHA to start listing from.
Defaults to "HEAD" (current checkout).
limit: The maximum number of commits to return. Defaults to 50.
Returns:
A JSON-formatted string containing a list of commit objects.
Input schema{
"properties": {
"repo_path": {
"title": "Repo Path",
"type": "string"
},
"branch": {
"default": "HEAD",
"title": "Branch",
"type": "string"
},
"limit": {
"default": 50,
"title": "Limit",
"type": "integer"
}
},
"required": [
"repo_path"
],
"title": "list_commitsArguments",
"type": "object"
}Output schema{
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "list_commitsOutput",
"type": "object"
} | — | — · — | — |
rollback_to_commitRoll back the repository state to a previous commit.
This tool resets the current branch head to `commit_sha`. The `mode` determines
what happens to the working directory and index:
- "soft" (Default): Undoes the commit(s) but leaves changes staged in the index.
Useful if you want to squash commits or fix the last commit message.
- "mixed": Undoes the commit(s) and unstages changes, but keeps the files in the working directory.
Useful if you want to keep the work but start fresh with staging.
- "hard": WARNING - Destructive! Resets everything to the state of `commit_sha`.
Any uncommitted changes (staged or unstaged) will be PERMANENTLY LOST.
Use this only if you want to discard all work since `commit_sha`.
Args:
repo_path: The absolute path to the repository.
commit_sha: The full or short SHA of the commit to revert to.
mode: The reset mode: "soft", "mixed", or "hard".
Returns:
A message confirming the rollback and the new HEAD SHA.
Input schema{
"properties": {
"repo_path": {
"title": "Repo Path",
"type": "string"
},
"commit_sha": {
"title": "Commit Sha",
"type": "string"
},
"mode": {
"default": "soft",
"title": "Mode",
"type": "string"
}
},
"required": [
"repo_path",
"commit_sha"
],
"title": "rollback_to_commitArguments",
"type": "object"
}Output schema{
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "rollback_to_commitOutput",
"type": "object"
} | — | — · — | — |
switch_branchSwitch the repository to a different branch.
This command updates the working directory to match the state of the specified branch.
It performs a `git checkout`.
Args:
repo_path: The absolute path to the repository.
branch_name: The name of the branch to switch to.
The branch must already exist.
Returns:
A confirmation message indicating the successful switch and current branch name.
Input schema{
"properties": {
"repo_path": {
"title": "Repo Path",
"type": "string"
},
"branch_name": {
"title": "Branch Name",
"type": "string"
}
},
"required": [
"repo_path",
"branch_name"
],
"title": "switch_branchArguments",
"type": "object"
}Output schema{
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "switch_branchOutput",
"type": "object"
} | — | — · — | — |