← GitHub MCP Server

GitHub MCP Server 7e41c9e956d401947012e7ed83d0080fca1f9483

source_git · archish9/versioncontrolhelpermcp · current release

10
Tools
0
Resources
0
Templates
0
Prompts

Observation

Observed 2026-08-31T10:50:19.822Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.

Server capabilities
{
  "experimental": {},
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  },
  "tools": {
    "listChanged": false
  }
}

Tools 10

ToolCategoryAnnotationsRisk
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"
}
— · —

Resources 0

Resource templates 0

Prompts 0

Let’s talk about MCP security.

Share your details and our security team will contact you.