mcp-git
The MCP Git Server enables AI assistants to perform Git operations through a structured interface.
Repository Management: Initialize repositories (
init) with options for bare repos and branch naming, and retrieve detailed status information (status).File Operations: Stage files for commit (
add) and reset repository state (reset) using different modes (soft, mixed, hard).Commit Operations: Create commits (
commit) with various options like auto-staging and amending, view commit history (log) with filtering capabilities, and display commit details (show).Branch Operations: Create new branches (
create-branch) from any starting point and switch between branches or commits (checkout).Comparison Operations: Show differences (
diff) between commits, branches, or files with formatting options.
[!NOTE] The server intentionally lacks
pushoperations to avoid security risks.
Provides comprehensive Git operations for AI assistants, including repository initialization, status checking, file staging, commits, history viewing, branch management, and file comparisons. Enables interaction with Git repositories through structured interfaces.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-gitshow me the commit history for the last 3 commits in my project at /home/user/projects/myapp"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Git Server
An MCP (Model Context Protocol) server that provides comprehensive Git operations as tools for AI assistants and applications. This server enables AI systems to interact with Git repositories through a structured, validated interface.
Tools
The server provides the following Git operations:
Repository Management
init- Initialize new Git repositorystatus- Get repository status with detailed file information
File Operations
add- Stage files for commitreset- Reset repository state (soft, mixed, hard)
Commit Operations
commit- Create commits with comprehensive optionslog- View commit history with filtering and formatting optionsshow- Display commit details and changes
Branch Operations
create-branch- Create new branches from any starting pointcheckout- Switch branches/commits with advanced options
Comparison Operations
diff- Show differences between commits, branches, or files
Server intentionally lacks push operations to avoid security risks.
Related MCP server: GitLab MCP Server
Tool Details
git_status
Shows the working tree status with comprehensive formatting options.
Inputs:
repoPath(string): Absolute path to Git repositoryshort(boolean, optional): Give output in short formatbranch(boolean, optional): Show branch and tracking infoverbose(boolean/number, optional): Show textual changes staged for commituntrackedFiles(boolean/string, optional): Show untracked filesignoreSubmodules(string, optional): Ignore changes to submodulespathspec(array, optional): Limit output to given paths
Returns: Detailed repository status information
git_add
Adds file contents to the staging area.
Inputs:
repoPath(string): Absolute path to Git repositoryfiles(array): List of file paths to stage
Returns: Confirmation of staged files
git_commit
Records changes to the repository with extensive commit options.
Inputs:
repoPath(string): Absolute path to Git repositorymessage(string): Commit messageall(boolean, optional): Automatically stage modified filesauthor(string, optional): Override authoramend(boolean, optional): Amend the previous commitgpgSign(boolean/string, optional): GPG sign committrailers(array, optional): Add trailers to commit messagePlus many more advanced options...
Returns: Commit confirmation with details
git_log
Shows commit history with advanced filtering and formatting.
Inputs:
repoPath(string): Absolute path to Git repositorymaxCount(number, optional): Limit number of commitssince(string, optional): Show commits after dateauthor(string, optional): Filter by authorformat(string, optional): Pretty-print formatgraph(boolean, optional): Show text-based graphpathspec(array, optional): Limit to specific paths
Returns: Formatted commit history
git_create_branch
Creates new branches with flexible options.
Inputs:
repoPath(string): Absolute path to Git repositorybranchName(string): Name of new branchstartPoint(string, optional): Starting commit/branch/tagswitchToBranch(boolean, optional): Switch to new branch (default: true)force(boolean, optional): Force create, reset if exists
Returns: Branch creation confirmation
git_checkout
Switches branches or commits with advanced options.
Inputs:
repoPath(string): Absolute path to Git repositorytarget(string): Branch/commit/tag to checkoutforce(boolean, optional): Force checkoutcreateBranch(string, optional): Create and checkout new branchdetach(boolean, optional): Detached HEAD modepathspec(array, optional): Limit to specific paths
Returns: Checkout confirmation
git_reset
Resets repository state with different modes.
Inputs:
repoPath(string): Absolute path to Git repositorytarget(string, optional): Target commit (default: HEAD)mode(string, optional): Reset mode - soft/mixed/hard (default: mixed)pathspec(array, optional): Limit to specific paths
Returns: Reset confirmation
git_diff
Shows differences between commits, branches, or files.
Inputs:
repoPath(string): Absolute path to Git repositoryfrom(string, optional): Source commit/branch/tagto(string, optional): Target commit/branch/tagstaged(boolean, optional): Show staged changesnameOnly(boolean, optional): Show only changed file namespathspec(array, optional): Limit to specific paths
Returns: Diff output
git_show
Displays commit details and changes.
Inputs:
repoPath(string): Absolute path to Git repositorycommit(string, optional): Commit to show (default: HEAD)format(string, optional): Pretty-print formatstat(boolean, optional): Show diffstatpathspec(array, optional): Limit to specific paths
Returns: Commit details and changes
git_init
Initializes a new Git repository.
Inputs:
repoPath(string): Path where to initialize repositorybare(boolean, optional): Create bare repositoryinitialBranch(string, optional): Set initial branch nametemplate(string, optional): Template directory
Returns: Initialization confirmation
Installation
{
"mcpServers": {
"git": {
"command": "npx",
"args": ["-y", "@ver0/mcp-git"]
}
}
}Available Tools
10 toolsaddB
Add files to the git staging area.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | List of pathspecs to add | |
| repoPath | Yes | Absolute path to the git repository |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false (indicating mutation), and the description adds that this modifies 'the git staging area' - useful context about what gets changed. However, it doesn't disclose important behavioral details like whether this is idempotent, what happens with invalid pathspecs, or if there are side effects beyond staging.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that communicates the core purpose without any wasted words. It's appropriately sized for a simple tool with only two parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description adequately covers the basic operation but lacks important context about what happens after staging (e.g., need to commit), error conditions, or typical usage patterns. The annotations provide some safety context but more behavioral detail would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, both parameters are already documented in the schema. The description doesn't add any additional semantic context about parameters beyond what's in the schema descriptions, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add files') and target ('to the git staging area'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'commit' or 'reset' which also interact with the staging area, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'commit' (which moves staged changes to repository) or 'reset' (which can unstage changes). There's no mention of prerequisites, typical workflow context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checkoutB
Switch branches, commits, or restore working tree files.
| Name | Required | Description | Default |
|---|---|---|---|
| createBranch | No | Create a new branch and start it at <start-point> (-b <new-branch>) | |
| createBranchForce | No | Create or reset a branch and start it at <start-point> (-B <new-branch>) | |
| detach | No | Check out a commit for inspection rather than switching to a branch (--detach) | |
| force | No | Force checkout, throw away local modifications (-f, --force) | |
| merge | No | When switching branches, proceed even if index/working tree differs from HEAD (-m, --merge) | |
| noTrack | No | Do not set up upstream configuration (--no-track) | |
| orphan | No | Create a new orphan branch (--orphan <new-branch>) | |
| pathspec | No | Limit checkout to specific paths | |
| repoPath | Yes | Absolute path to the git repository | |
| target | Yes | Branch name, commit hash, or tag to checkout | |
| track | No | Set up upstream configuration (--track) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, implying this is a mutation tool, which aligns with the description's verbs ('switch', 'restore') that suggest state changes. The description adds minimal behavioral context beyond annotations—it hints at destructive potential ('restore' implies overwriting files) but doesn't detail risks like data loss from 'force' or 'merge' parameters, rate limits, or authentication needs. With annotations covering the mutation aspect, this earns a baseline score for adding some value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every word earns its place by concisely covering the tool's main actions, making it easy for an agent to parse and understand quickly. There's no redundancy or fluff, adhering perfectly to conciseness standards.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, mutation indicated by annotations) and lack of an output schema, the description is minimally adequate but incomplete. It states what the tool does but doesn't address behavioral nuances like error conditions, side effects (e.g., working tree changes), or return values. With annotations providing some context (readOnlyHint=false), it meets a basic threshold but leaves gaps for safe and effective use by an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter well-documented in the input schema (e.g., 'force' explains it throws away local modifications). The description adds no parameter-specific semantics beyond the schema, such as clarifying interactions between parameters like 'createBranch' and 'target'. Given the high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('switch', 'restore') and resources ('branches', 'commits', 'working tree files'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'create-branch' or 'reset', which also involve branch/commit operations, leaving some ambiguity about when this specific tool should be chosen over alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'create-branch' (for creating branches without switching), 'reset' (for restoring files without switching), or 'log' (for inspecting commits without detaching). There's no mention of prerequisites, typical workflows, or exclusions, leaving the agent to infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commitB
Commit staged changes to the git repository.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Automatically stage modified and deleted files (-a, --all) | |
| allowEmpty | No | Allow empty commits (--allow-empty) | |
| allowEmptyMessage | No | Allow empty commit messages (--allow-empty-message) | |
| amend | No | Amend the previous commit (--amend) | |
| author | No | Override author (--author) | |
| cleanup | No | Cleanup mode (--cleanup) | |
| date | No | Override author date (--date) | |
| dryRun | No | Show what would be committed (--dry-run) | |
| file | No | Read commit message from file (-F, --file) | |
| fixup | No | Create fixup commit for specified commit (--fixup) | |
| gpgSign | No | GPG sign commit (-S, --gpg-sign) | |
| include | No | Include given paths in addition to index (-i, --include) | |
| message | Yes | Commit message (-m, --message) | |
| noGpgSign | No | Do not GPG sign commit (--no-gpg-sign) | |
| noStatus | No | Do not include status in commit message template (--no-status) | |
| noVerify | No | Bypass pre-commit and commit-msg hooks (-n, --no-verify) | |
| only | No | Commit only specified paths (-o, --only) | |
| pathspec | No | Limit commit to specified paths | |
| quiet | No | Suppress commit summary message (-q, --quiet) | |
| reeditMessage | No | Like reuseMessage but invoke editor (-c, --reedit-message) | |
| repoPath | Yes | Absolute path to the git repository | |
| reuseMessage | No | Reuse message from existing commit (-C, --reuse-message) | |
| squash | No | Create squash commit for specified commit (--squash) | |
| trailers | No | Add trailers to commit message (--trailer) | |
| verbose | No | Show unified diff of changes (-v, --verbose) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (implying mutation), which aligns with the description's 'commit' action. The description adds minimal behavioral context beyond annotations—it doesn't mention that this creates a permanent record, may trigger hooks, or affects repository history. With annotations covering the mutation aspect, the description provides basic but insufficient additional behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately comprehensible without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex mutation tool with 25 parameters, no output schema, and minimal annotations, the description is inadequate. It doesn't explain what happens after committing (e.g., creates a commit object, updates HEAD), potential side effects, or error conditions. The high parameter count and mutation nature demand more contextual information than provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 25 parameters are documented in the schema itself. The description adds no parameter-specific information beyond the high-level concept of 'staged changes.' This meets the baseline for high schema coverage, but doesn't enhance understanding of parameter interactions or use cases.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('commit') and resource ('staged changes to the git repository'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'add' or 'reset', but the verb+resource combination is specific enough for basic understanding.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'add' (which stages changes) or 'reset' (which unstages changes). There's no mention of prerequisites (e.g., needing staged changes) or contextual advice about when commit is appropriate versus other git operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-branchB
Create a new git branch, optionally from a specific starting point.
| Name | Required | Description | Default |
|---|---|---|---|
| branchName | Yes | Name of the new branch to create | |
| force | No | Force create branch, resetting it if it already exists (-B flag) | |
| repoPath | Yes | Absolute path to the git repository | |
| startPoint | No | Starting point for new branch (commit, branch, or tag). Defaults to current HEAD | |
| switchToBranch | No | Switch to the new branch after creation (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, consistent with the 'create' action. The description adds minimal behavioral context beyond annotations—it mentions the optional starting point but doesn't cover error conditions, permissions needed, or what happens if the branch already exists (though 'force' parameter hints at this).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Create a new git branch') and adds only essential optional detail. There is no wasted verbiage or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the mutation nature (readOnlyHint=false) and lack of output schema, the description is minimally adequate but lacks details on return values, error handling, or integration with sibling tools. It covers the basic purpose but leaves gaps for effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 5 parameters. The description adds no additional parameter semantics beyond what's in the schema, such as format examples or constraints, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Create') and resource ('new git branch') with optional starting point specification. It distinguishes from siblings like 'checkout' or 'reset' by focusing on branch creation, though it doesn't explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'checkout' for switching branches or 'init' for repository setup. It mentions the optional starting point but offers no context about prerequisites or typical workflows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diffBRead-only
Show differences between commits, branches, files.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Source commit, branch, or tag (defaults to working directory) | |
| nameOnly | No | Show only names of changed files (--name-only) | |
| nameStatus | No | Show names and status of changed files (--name-status) | |
| pathspec | No | Limit diff to specific paths | |
| repoPath | Yes | Absolute path to the git repository | |
| staged | No | Show staged changes (--cached) | |
| stat | No | Show diffstat (--stat) | |
| to | No | Target commit, branch, or tag (defaults to HEAD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds no behavioral context beyond what annotations provide—it doesn't mention output format, pagination, rate limits, or authentication needs. With annotations covering safety, this meets baseline expectations but adds minimal extra value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—a single, clear sentence that front-loads the core purpose without any wasted words. Every part of the sentence earns its place by specifying what the tool does, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (8 parameters, no output schema) and rich schema coverage, the description is minimally adequate. It states the purpose but lacks context on output format, error handling, or integration with siblings. With annotations covering read-only safety, it meets basic needs but could be more complete for effective agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning all parameters are well-documented in the schema itself. The description adds no additional parameter semantics beyond implying the tool compares two states (from/to). Baseline score of 3 is appropriate since the schema handles parameter documentation effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with the verb 'Show' and resource 'differences between commits, branches, files', making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'log' (which shows commit history) or 'status' (which shows working directory state), missing full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'diff' over 'log' for viewing changes, 'status' for current state, or other siblings, leaving the agent without contextual usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
initB
Initialize new Git repository.
| Name | Required | Description | Default |
|---|---|---|---|
| bare | No | Create a bare repository (--bare) | |
| initialBranch | No | Set the initial branch name (--initial-branch) | |
| repoPath | Yes | Absolute path where to initialize the git repository | |
| template | No | Template directory to use (--template) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, correctly aligning with the description's 'Initialize' action that creates something new. The description adds minimal behavioral context beyond annotations—it implies creation but doesn't detail what happens (e.g., creates .git directory, sets up initial structure) or mention side effects like overwriting existing repos. With annotations covering the mutation aspect, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero wasted words. It's front-loaded with the core action and resource, making it highly efficient and easy to parse at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, 100% schema coverage, and no output schema, the description is minimally complete. It states the action but lacks context on usage scenarios, prerequisites, or behavioral details like error cases. Given the structured data handles parameters well, the description is adequate but leaves gaps in practical guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters well-documented in the schema itself (e.g., 'bare' as 'Create a bare repository'). The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline for high coverage without compensating value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Initialize') and resource ('new Git repository'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'create-branch' or explain how this foundational operation differs from other repository setup tools, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (like needing a directory path), when not to use it (e.g., on existing repositories), or how it relates to sibling tools like 'create-branch' for repository setup workflows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logBRead-only
View commit history and log information from a git repository.
| Name | Required | Description | Default |
|---|---|---|---|
| abbrevCommit | No | Show only a partial prefix instead of the full 40-byte hexadecimal commit object name (--abbrev-commit) | |
| all | No | Show commits from all branches (--all) | |
| author | No | Limit the commits output to ones with author/committer matching the pattern (--author) | |
| branches | No | Show commits from specific branches | |
| firstParent | No | Follow only the first parent commit upon seeing a merge commit (--first-parent) | |
| format | No | Pretty-print format for commits (--pretty) | |
| graph | No | Draw a text-based graphical representation (--graph) | |
| grep | No | Limit the commits output to ones with commit message matching the pattern (--grep) | |
| maxCount | No | Limit the number of commits to output (-n, --max-count) | |
| merges | No | Print only merge commits (--merges) | |
| nameOnly | No | Show only names of changed files (--name-only) | |
| nameStatus | No | Show only names and status of changed files (--name-status) | |
| noMerges | No | Do not print commits with more than one parent (--no-merges) | |
| pathspec | No | Limit commits to those that affect the given paths | |
| repoPath | Yes | Absolute path to the git repository | |
| shortStat | No | Output only the summary line of --stat (--shortstat) | |
| since | No | Show commits more recent than a specific date (--since) | |
| skip | No | Skip number commits before starting to show the commit output (--skip) | |
| stat | No | Generate a diffstat (--stat) | |
| until | No | Show commits older than a specific date (--until) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, which the description aligns with by using 'View' (a read operation). The description adds minimal behavioral context beyond this, as it doesn't detail output format, pagination, or error handling. With annotations covering the safety aspect, the description provides basic but insufficient additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It's front-loaded with the core action and resource, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 20 parameters and no output schema, the description is minimal. It adequately conveys the basic purpose but lacks details on output format, error cases, or usage scenarios, which are important for a tool with many filtering options. Annotations help with safety, but more context is needed for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 20 parameters. The description adds no parameter-specific information beyond implying a general focus on commit history. This meets the baseline for high schema coverage but doesn't enhance understanding of parameter interactions or defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('View') and resource ('commit history and log information from a git repository'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'show' or 'status', which might also display repository information, so it falls short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'show' or 'status' from the sibling list. It lacks any context about prerequisites, such as needing an initialized repository, or exclusions, leaving the agent to infer usage solely from the purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resetB
Reset repository state (soft, mixed, hard).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Reset mode: soft (keep changes staged), mixed (unstage changes), hard (discard changes) | mixed |
| pathspec | No | Limit reset to specific paths | |
| repoPath | Yes | Absolute path to the git repository | |
| target | No | Target commit, branch, or tag to reset to (defaults to HEAD) | HEAD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, which aligns with the description's implication of a mutation operation ('reset'). The description adds value by specifying the three reset modes (soft, mixed, hard), which provides behavioral context beyond annotations. However, it doesn't detail potential side effects like data loss in 'hard' mode or authentication needs, so it's not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with a single sentence that front-loads the core action ('reset repository state') and efficiently lists the modes. Every word earns its place, making it easy to parse without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and 4 parameters, the description is minimal. It covers the basic action and modes but lacks details on return values, error conditions, or integration with sibling tools. Given the complexity and annotation coverage, it's adequate but has clear gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all parameters well-documented in the schema itself. The description mentions the modes (soft, mixed, hard) which corresponds to the 'mode' parameter, but adds no additional semantic meaning beyond what the schema already provides. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('reset') and resource ('repository state'), and specifies the three modes (soft, mixed, hard) which gives specific action details. However, it doesn't explicitly distinguish this tool from sibling tools like 'checkout' or 'revert' that might also affect repository state, keeping it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'checkout' or 'revert' among the sibling tools. It mentions the modes but doesn't explain when each mode is appropriate or what prerequisites might be needed, leaving the agent without contextual usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
showBRead-only
Display commit details and changes.
| Name | Required | Description | Default |
|---|---|---|---|
| commit | No | Commit hash, branch, or tag to show (defaults to HEAD) | |
| format | No | Pretty-print format for commit | |
| nameOnly | No | Show only names of changed files (--name-only) | |
| nameStatus | No | Show names and status of changed files (--name-status) | |
| pathspec | No | Limit show to specific paths | |
| repoPath | Yes | Absolute path to the git repository | |
| stat | No | Show diffstat (--stat) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds minimal behavioral context beyond this - it mentions 'displaying' but doesn't elaborate on output format, pagination, or error conditions. With annotations covering the safety profile, this meets baseline expectations without adding significant value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise - a single sentence that immediately communicates the core functionality without any wasted words. It's front-loaded with the essential information and doesn't include unnecessary elaboration or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (7 parameters, Git operations) and the absence of an output schema, the description is minimally adequate. It identifies what the tool does but lacks information about return values, error conditions, or how it fits within the broader Git workflow. The annotations help but don't fully compensate for these gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are well-documented in the schema itself. The description doesn't add any meaningful parameter semantics beyond what's already in the schema descriptions - it doesn't explain parameter interactions, default behaviors, or usage patterns. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Display') and resource ('commit details and changes'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'diff' or 'log' which also show commit-related information, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'diff' (for comparing changes) or 'log' (for viewing commit history). There's no mention of prerequisites, typical use cases, or exclusion criteria, leaving the agent with insufficient context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statusBRead-only
Get the current git repository status.
| Name | Required | Description | Default |
|---|---|---|---|
| aheadBehind | No | Display detailed ahead/behind counts relative to upstream branch (--ahead-behind, --no-ahead-behind) | |
| branch | No | Show the branch and tracking info even in short-format (-b, --branch) | |
| column | No | Display untracked files in columns (--column[=<options>], --no-column) | |
| findRenames | No | Turn on rename detection, optionally set similarity threshold (--find-renames[=<n>]) | |
| ignoreSubmodules | No | Ignore changes to submodules (--ignore-submodules[=<when>]) | |
| ignored | No | Show ignored files as well (--ignored[=<mode>]) | |
| long | No | Give the output in the long-format (--long, default) | |
| pathspec | No | Limit the output to the given paths | |
| renames | No | Turn on/off rename detection (--renames, --no-renames) | |
| repoPath | Yes | Absolute path to the git repository | |
| short | No | Give the output in the short-format (-s, --short) | |
| showStash | No | Show the number of entries currently stashed away (--show-stash) | |
| untrackedFiles | No | Show untracked files (-u[<mode>], --untracked-files[=<mode>]) | |
| verbose | No | Show textual changes that are staged to be committed (-v, --verbose, can be specified twice) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, which the description aligns with by using 'Get' (a read operation). The description doesn't add significant behavioral context beyond what annotations provide - it doesn't mention output format, performance characteristics, or error conditions. However, it doesn't contradict the annotations either.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that immediately communicates the core function. There's zero wasted verbiage - every word earns its place. It's perfectly front-loaded with the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with excellent schema coverage (100%) and clear annotations, the description is minimally adequate. However, without an output schema, the description doesn't help the agent understand what the status output looks like or what information it contains. The description could better prepare the agent for interpreting results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema thoroughly documents all 14 parameters. The description adds no parameter information beyond the schema, which is acceptable given the comprehensive schema coverage. The baseline of 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('current git repository status'), making the purpose immediately understandable. It doesn't distinguish from siblings like 'log' or 'diff' which also provide repository information, but it's specific enough to understand the core function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when this tool is appropriate compared to siblings like 'log' (history) or 'diff' (changes), nor does it provide any context about prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
10 tool updates
v1.0.0- First observed
add - First observed
checkout - First observed
commit - First observed
create-branch - First observed
diff - First observed
init - First observed
log - First observed
reset - First observed
show - First observed
status
TDQS
Each tool has a clearly distinct purpose targeting specific Git operations, with no ambiguity or overlap. For example, 'add' handles staging files, 'commit' handles committing staged changes, and 'status' provides repository state, all serving unique functions in the Git workflow.
Tool names are mostly consistent using imperative verbs (e.g., add, checkout, commit) with clear, concise terms, though 'create-branch' uses a hyphen while others do not, and 'log' and 'show' are nouns rather than verbs, causing minor deviations from a strict pattern.
With 10 tools, the set is well-scoped for Git operations, covering essential commands like init, add, commit, and branch management. Each tool earns its place by addressing core Git functionalities without redundancy or excessive complexity.
The toolset provides complete coverage of the Git domain, including repository initialization, staging, committing, branching, diffing, history viewing, and state management. It supports full CRUD-like workflows (e.g., create, read, update, delete via commands like add, log, reset) with no obvious gaps for typical agent tasks.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Git-backed platform for skills, tools, and context for AI agents
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA server that allows AI assistants to browse and read files from specified GitHub repositories, providing access to repository contents via the Model Context Protocol.6MIT
- FlicenseNot gradedqualityDmaintenanceA custom server implementation that allows AI assistants to interact with GitLab repositories, providing capabilities for searching, fetching files, creating/updating content, and managing issues and merge requests.2-
- AlicenseNot gradedqualityFmaintenanceA server implementation that provides a unified interface for OpenAI services, Git repository analysis, and local filesystem operations through REST API endpoints.GPL 3.0
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI assistants to perform GitHub operations including repository management, file operations, issue tracking, and pull request creation.2-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ver0-project/mcps'
If you have feedback or need assistance with the MCP directory API, please join our Discord server