Skip to main content
Glama
yinghuohuichao

mcp-server-git

mcp-server-git: A git MCP server

Overview

A Model Context Protocol server for Git repository interaction and automation. This server provides tools to read, search, and manipulate Git repositories via Large Language Models.

Requires MCP Python SDK 1.x (mcp>=1.29.0,<2). SDK 2.0 renamed APIs this server uses. The port to v2 is in progress.

Please note that mcp-server-git is currently in early development. The functionality and available tools are subject to change and expansion as we continue to develop and improve the server.

Tools

  1. git_status

    • Shows the working tree status

    • Input:

      • repo_path (string): Path to Git repository

    • Returns: Current status of working directory as text output

  2. git_diff_unstaged

    • Shows changes in working directory not yet staged

    • Inputs:

      • repo_path (string): Path to Git repository

      • context_lines (number, optional): Number of context lines to show (default: 3)

    • Returns: Diff output of unstaged changes

  3. git_diff_staged

    • Shows changes that are staged for commit

    • Inputs:

      • repo_path (string): Path to Git repository

      • context_lines (number, optional): Number of context lines to show (default: 3)

    • Returns: Diff output of staged changes

  4. git_diff

    • Shows differences between branches or commits

    • Inputs:

      • repo_path (string): Path to Git repository

      • target (string): Target branch or commit to compare with

      • context_lines (number, optional): Number of context lines to show (default: 3)

    • Returns: Diff output comparing current state with target

  5. git_commit

    • Records changes to the repository

    • Inputs:

      • repo_path (string): Path to Git repository

      • message (string): Commit message

    • Returns: Confirmation with new commit hash

  6. git_add

    • Adds file contents to the staging area

    • Inputs:

      • repo_path (string): Path to Git repository

      • files (string[]): Array of file paths to stage

    • Returns: Confirmation of staged files

  7. git_reset

    • Unstages all staged changes

    • Input:

      • repo_path (string): Path to Git repository

    • Returns: Confirmation of reset operation

  8. git_log

    • Shows the commit logs with optional date filtering

    • Inputs:

      • repo_path (string): Path to Git repository

      • max_count (number, optional): Maximum number of commits to show (default: 10)

      • start_timestamp (string, optional): Start timestamp for filtering commits. Accepts ISO 8601 format (e.g., '2024-01-15T14:30:25'), relative dates (e.g., '2 weeks ago', 'yesterday'), or absolute dates (e.g., '2024-01-15', 'Jan 15 2024')

      • end_timestamp (string, optional): End timestamp for filtering commits. Accepts ISO 8601 format (e.g., '2024-01-15T14:30:25'), relative dates (e.g., '2 weeks ago', 'yesterday'), or absolute dates (e.g., '2024-01-15', 'Jan 15 2024')

    • Returns: Array of commit entries with hash, author, date, and message

  9. git_create_branch

    • Creates a new branch

    • Inputs:

      • repo_path (string): Path to Git repository

      • branch_name (string): Name of the new branch

      • base_branch (string, optional): Base branch to create from (defaults to current branch)

    • Returns: Confirmation of branch creation

  10. git_checkout

    • Switches branches

    • Inputs:

      • repo_path (string): Path to Git repository

      • branch_name (string): Name of branch to checkout

    • Returns: Confirmation of branch switch

  11. git_show

    • Shows the contents of a commit

    • Inputs:

      • repo_path (string): Path to Git repository

      • revision (string): The revision (commit hash, branch name, tag) to show

    • Returns: Contents of the specified commit

  12. git_branch

    • List Git branches

    • Inputs:

      • repo_path (string): Path to the Git repository.

      • branch_type (string): Whether to list local branches ('local'), remote branches ('remote') or all branches('all').

      • contains (string, optional): The commit sha that branch should contain. Do not pass anything to this param if no commit sha is specified

      • not_contains (string, optional): The commit sha that branch should NOT contain. Do not pass anything to this param if no commit sha is specified

    • Returns: List of branches

Related MCP server: GitPilot MCP

Installation

Install uv, then prepare the project environment from the lock file:

uv --directory /path/to/mcp-server-git sync --locked

Using pip

Alternatively, install the package with pip:

pip install mcp-server-git

Deployment

This server communicates over stdio. A host service must launch the process and connect its standard input and output to the MCP client. The project does not expose an HTTP endpoint by itself.

Using uv from the source tree

uv --directory /path/to/mcp-server-git run --no-sync mcp-server-git --repository /path/to/git/repo

--repository limits the server to the specified repository and its subdirectories. Omit --no-sync if the environment has not been prepared with uv sync.

Using an installed package

mcp-server-git --repository /path/to/git/repo

The equivalent module invocation is:

python -m mcp_server_git --repository /path/to/git/repo

Docker

Build the image from the project root:

docker build -t mcp/git .

Run it with a repository mounted into the container:

docker run --rm -i \
  --mount type=bind,src=/path/to/git/repo,dst=/workspace \
  mcp/git --repository /workspace

The container also communicates over stdio, so it must be started by an MCP-capable host service.

Verification

Use the MCP Inspector to verify the stdio server locally:

npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-server-git run --no-sync mcp-server-git --repository /path/to/git/repo

For automated unit tests:

uv --directory /path/to/mcp-server-git run pytest

Available Tools

12 tools
git_addB
Idempotent

Adds file contents to the staging area

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYes
repo_pathYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the safety and mutation profile is known. The description does not add behavioral context beyond restating the core operation; it does not mention reversible staging semantics, overwriting previously staged content, or any interesting side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence that front-loads the core verb and object. There is no filler, redundant wording, or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter, idempotent git tool, the description is minimally viable. However, it lacks usage guidance, does not clarify repo_path semantics, and offers no information about edge cases such as empty file lists or non-existent files. With no output schema, the agent has to infer the expected call behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for both parameters. It faintly suggests that 'files' refers to content being staged, but it says nothing about repo_path or how file paths should be specified (absolute, relative, globs, etc.). This leaves significant parameter ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Adds') and resource ('file contents to the staging area'), making the tool's purpose unmistakable. It is clearly distinct from siblings like git_status, git_diff, git_commit, and git_reset.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (when you want to stage file contents), but it provides no explicit guidance about when not to use it or which sibling tool might be a better alternative. There is no mention of prerequisites such as an initialized repository or that files must already exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_branchA
Read-onlyIdempotent

List Git branches

ParametersJSON Schema
NameRequiredDescriptionDefault
containsNoThe commit sha that branch should contain. Do not pass anything to this param if no commit sha is specified
repo_pathYesThe path to the Git repository.
branch_typeYesWhether to list local branches ('local'), remote branches ('remote') or all branches('all').
not_containsNoThe commit sha that branch should NOT contain. Do not pass anything to this param if no commit sha is specified

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is established. The description adds no behavioral context beyond stating the listing operation, and it does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four words, front-loads the action, and contains no filler. Every word contributes to meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity read-only listing tool, the terse description combined with complete schema documentation and safety annotations is largely sufficient. It does not describe return values, but the absence of an output schema is mitigated by the obvious nature of a branch listing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents repo_path, branch_type, contains, and not_contains. The description does not add parameter-level detail, which is acceptable given the schema's completeness.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: 'List Git branches'. It is clearly distinct from sibling operations like git_create_branch, git_checkout, and git_status, so an agent can select it as the listing operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for enumeration of branches but offers no explicit when-to-use guidance or exclusions, such as using git_create_branch instead when creation is intended. For a simple listing tool this is acceptable, but the guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_checkoutC

Switches branches

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathYes
branch_nameYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag readOnlyHint=false, so the operation is known to be non-read-only, but the description adds no new behavioral context. It does not disclose that switching branches can fail with uncommitted changes, can alter the working directory, or may be rejected by Git in certain states. The description carries the burden and fails to provide this information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, with no wasted words, and the core action is front-loaded. While it sacrifices richer context, the two-word phrase is efficient and directly states the primary purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a state-changing Git operation with no output schema and annotations that only provide false hints. The description is under-specified: it lacks prerequisites, failure conditions, parameter semantics, and any indication of side effects. An agent would not know that checkout may be interrupted by local modifications or that the working tree is affected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description was expected to compensate for undocumented parameters. It does not mention repo_path or branch_name at all, and the schema itself only provides type and title, no descriptive text. The parameter names are self-explanatory, but the description adds no meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('switches') and resource (branches), making it clear this tool changes the current branch. It is distinguishable from siblings like git_create_branch or git_branch, though it does not explicitly name alternatives or address checkout's broader file-level behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as git_create_branch or git_reset. There is no mention of prerequisites, scenarios, or caveats like needing a clean working tree, leaving the agent without decision support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_commitC

Records changes to the repository

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes
repo_pathYes

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are all false and provide no strong behavioral signal. The description adds only 'records changes', which implies mutation but does not disclose side effects such as creating a permanent commit, requiring user identity, or being a one-way local operation. No additional behavioral context is provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no fluff, but it is under-specified rather than concise. It simply paraphrases the tool name and omits essential context, adding little value beyond the name itself.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a git commit operation, understanding that only staged changes are committed is crucial, but the description ignores this entirely. It also does not mention that repo_path must be a valid local repository or that a message is required, leaving important operational context missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema description coverage is 0%, and the description gives no meaning for repo_path or message. While the parameter names are somewhat self-explanatory, the description fails to clarify that message is the commit message and repo_path is the target repository, so it does not compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Records changes to the repository' provides a verb and resource, broadly distinguishing it from siblings like git_status (shows state) or git_diff (shows differences). However, it is vague and does not explicitly mention committing, staged changes, or creating a snapshot, so it relies on the tool name for clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives. It does not mention that changes must first be staged with git_add, nor does it contrast with git_reset or git_status, leaving the agent without selection context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_create_branchC

Creates a new branch from an optional base branch

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathYes
base_branchNo
branch_nameYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate the operation is not read-only, not idempotent, and not destructive, which is consistent with creation. However, the description adds little beyond that: it does not clarify whether the new branch is checked out, what the default base is when base_branch is null, or what happens if the branch already exists. These are meaningful behavioral traits an agent would need to know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It states the core action and the key variant (optional base branch) efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple creation tool with no output schema and minimal annotations, the description is incomplete. It fails to specify the default base behavior or whether the branch becomes the current branch, both of which are relevant to correct invocation and subsequent git operations. The presence of git_checkout as a sibling makes this omission more noticeable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but it only mentions the optional base branch. It provides no additional meaning for repo_path or branch_name beyond their titles. The phrase 'optional base branch' adds little because the schema already marks base_branch as optional with a default of null.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is clear and specific: it creates a new branch and mentions the optional base branch. It distinguishes this tool from most siblings (status, diff, add, commit, reset, checkout, show, log) because it uniquely creates a branch, but it does not explicitly differentiate from git_branch, which could also have a create mode.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus git_branch or git_checkout. There is no mention of prerequisites, such as being in a Git repository, or exclusions like 'this does not switch branches'. The description implies use for creating branches but offers no contextual direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_diffC
Read-onlyIdempotent

Shows differences between branches or commits

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
repo_pathYes
context_linesNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, fully covering the safety profile — the description need not restate this. The description adds the semantic scope (differences between branches or commits) but doesn't disclose what the output format looks like (e.g., unified diff, patch text) or mention the default of 3 context lines shown by the parameter default. That gap is modest, so a 3 is fair.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence with no filler or repetition. It isn't front-loaded with a redundant restatement of the tool name. It earns a 4 for being appropriately sized, though a second sentence clarifying the target parameter would push it higher.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a read-only tool with a trivial annotation profile, so no output schema is needed, but the description still leaves gaps. It doesn't specify valid 'target' formats (branch name vs. commit hash vs. range like 'main..dev'), doesn't say what the output looks like, and doesn't mention the context_lines behavior. For a three-parameter tool with zero schema documentation of those parameters, that is an incomplete definition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden for parameter semantics — and it fails to do so. The description mentions 'differences between branches or commits', which loosely maps to 'target', but says nothing about what 'target' should contain (a branch name, a commit hash, or a range), what 'repo_path' is, or what the optional 'context_lines' controls (number of surrounding lines shown in the diff). With all three parameters undocumented in the schema, the description would need to explain at least 'target' to earn a 3; it only gestures at it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Shows differences between branches or commits' provides a clear verb ('shows'), a specific resource ('differences between branches or commits'), and is unambiguous about what the tool does. It doesn't explicitly differentiate from sibling tools, but the resource is specific enough to distinguish it from common alternatives like git_log or git_show.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives. It doesn't state whether to use it for uncommitted working-directory changes, staged changes, or particular diff formats, nor does it mention branches/commits as alternative scopes. An agent is left to infer the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_diff_stagedA
Read-onlyIdempotent

Shows changes that are staged for commit

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathYes
context_linesNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the staging scope, which is useful, but does not disclose any other behavior such as output format or behavior when there are no staged changes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence with no filler. The core meaning is front-loaded and every word contributes. The description earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and annotations cover its read-only, non-destructive nature. However, with no output schema, the description does not clarify output format, empty-diff behavior, or the optional context_lines parameter. It is minimally viable but leaves some invocation-relevant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description needed to compensate, but it does not mention repo_path or context_lines at all. The parameter names and titles are reasonably self-explanatory, but the description itself adds no meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Shows changes that are staged for commit.' The term 'staged' clearly distinguishes this from siblings like git_diff_unstaged and git_status, so an agent can identify the right tool without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: use this when you want staged changes. It does not explicitly name alternatives or state when not to use it, but 'staged for commit' gives an unambiguous selection signal against the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_diff_unstagedA
Read-onlyIdempotent

Shows changes in the working directory that are not yet staged

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathYes
context_linesNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds the unstaged-scope detail, but does not disclose output format, error behavior, or how it handles an empty diff. This is consistent with annotations and provides modest value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or redundant detail. It states the core behavior clearly and economically, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only git operation, the description is minimally viable: it communicates scope and is consistent with annotations. However, it leaves parameter semantics and output format entirely to inference, and it could usefully mention that the output is a diff between the working tree and the index.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not mention either repo_path or context_lines, and schema description coverage is 0%. The parameter names and types are somewhat self-explanatory, especially repo_path, but context_lines' meaning (number of context lines around each diff hunk) is left implicit and the description adds no parameter-level guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Shows') and a precise resource ('changes in the working directory that are not yet staged'), which clearly differentiates this tool from its sibling git_diff_staged. An agent can immediately understand both what the tool does and what scope it covers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'not yet staged' provides clear context for when this tool is appropriate: when an agent needs to inspect working-tree changes that have not been added to the index. However, it does not explicitly name alternatives or state when not to use it, though the sibling list makes the comparison available.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_logC
Read-onlyIdempotent

Shows the commit logs

ParametersJSON Schema
NameRequiredDescriptionDefault
max_countNo
repo_pathYes
end_timestampNoEnd timestamp for filtering commits. Accepts: ISO 8601 format (e.g., '2024-01-15T14:30:25'), relative dates (e.g., '2 weeks ago', 'yesterday'), or absolute dates (e.g., '2024-01-15', 'Jan 15 2024')
start_timestampNoStart timestamp for filtering commits. Accepts: ISO 8601 format (e.g., '2024-01-15T14:30:25'), relative dates (e.g., '2 weeks ago', 'yesterday'), or absolute dates (e.g., '2024-01-15', 'Jan 15 2024')

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description is consistent with readOnlyHint, idempotentHint, and destructiveHint=false, but it adds no behavioral context beyond what the annotations already state. It does not mention default truncation, output characteristics, or repository-scope behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, but it is under-specified rather than appropriately concise. A single five-word phrase is not enough structure for a tool with four parameters and several closely related sibling tools.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no sibling differentiation, the description leaves the agent to infer what the logs contain and when this tool is appropriate. The annotations cover safety, but the description alone does not make the tool's usage context complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%; end_timestamp and start_timestamp are documented, but repo_path and max_count are not. The tool description itself provides no parameter meaning, so it does not compensate for the undocumented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Shows the commit logs'), so an agent can understand the basic operation. It does not differentiate from siblings like git_show or provide scope, but the action and resource are clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use git_log instead of sibling tools such as git_show, git_diff, or git_status. There are no conditions, exclusions, or alternative pointers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_resetA
DestructiveIdempotent

Unstages all staged changes

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate destructive and idempotent behavior. The description adds the scope of the operation ('all staged changes') but does not clarify side effects such as whether working-tree changes or commit history are affected. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words. It front-loads the core behavior immediately and is easy for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter git operation, the description covers the action and scope. The annotations cover destructive and idempotent behavior, so the remaining gaps, such as output format and non-effect on working tree, are minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero description coverage and the description does not explain repo_path. Although repo_path is a single self-explanatory parameter, the description adds no meaning about its format, required location, or default behavior, so it does not compensate for the low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses a specific verb and resource: 'Unstages all staged changes'. It clearly tells the agent exactly what the tool does and distinguishes it from siblings like git_add, git_status, and git_diff_staged.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives. There is no mention of when not to use it, what prerequisites apply, or how it compares to git_checkout, git_commit, or git_add.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_showC
Read-onlyIdempotent

Shows the contents of a commit

ParametersJSON Schema
NameRequiredDescriptionDefault
revisionYes
repo_pathYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond the operation itself, such as output format, error behavior, or requirements like a valid repository.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence with no superfluous words. The core action is front-loaded and nothing needs to be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should indicate what 'contents' means or what the return value looks like, but it does not. It also omits practical details such as revision format or that repo_path must be a valid Git repository.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain repo_path or acceptable revision formats. It only weakly implies that revision identifies a commit; the parameter names themselves carry most of the meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb and resource ('Shows the contents of a commit'), which broadly distinguishes it from status/diff/branch tools. However, 'contents' is ambiguous (patch vs snapshot) and there is no explicit differentiation from siblings like git_log or git_diff.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as git_log or git_diff. The description provides no context for tool selection and no exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_statusB
Read-onlyIdempotent

Shows the working tree status

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe, non-mutating operation. The description adds minimal context by specifying the resource ('working tree status') but does not reveal any additional behavioral traits such as whether it includes staged, unstaged, or untracked files, or any limitations. The description is consistent with annotations, so no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-formed sentence that delivers the core purpose without any wasted words. It is front-loaded and immediately understandable, making it an excellent example of conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one parameter, no output schema) and the presence of annotations that cover the safety profile, the description is minimally adequate. However, it is missing useful context such as what exactly the status includes (e.g., branch, staged, unstaged, untracked files) and how repo_path should be specified. An agent could call the tool correctly but might lack expectations about the returned output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention or explain the 'repo_path' parameter. Although the parameter name and title 'Repo Path' are somewhat self-explanatory, the description fails to compensate for the lack of schema documentation, leaving the agent without guidance on how the path should be formatted or validated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Shows') and resource ('working tree status'), clearly indicating what the tool does. While it does not explicitly differentiate itself from sibling tools, 'working tree status' is a distinct concept that separates it from git_diff and git_log, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 does not mention git_diff for viewing changes, git_log for history, or any conditions that would make git_status the preferred choice. The usage context is only implied by the tool name and basic description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.2/5.0
Disambiguation4/5

Most tools map to distinct Git operations, but git_diff, git_diff_staged, and git_diff_unstaged overlap enough that an agent could select the wrong one without careful attention. The descriptions help separate them, but the boundary between general diff and specific diff variants creates slight ambiguity.

Naming Consistency5/5

All tools follow a consistent git_ prefix with familiar Git command names, making the set predictable and easy to navigate. Verb and noun forms align with standard Git vocabulary, so there is no stylistic mixing or confusing variation.

Tool Count5/5

Twelve tools is well-scoped for a Git server, covering common local repository workflows without unnecessary bloat. Each tool addresses a concrete Git operation, and the count feels appropriate rather than sparse or excessive.

Completeness4/5

The toolset covers the core local Git workflow: status, diff, add, commit, branch, checkout, log, and show. Minor gaps like branch deletion or merge are missing, but agents can perform essential repository inspection and commit tasks without dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides comprehensive Git functionality to MCP clients, enabling users to manage repositories through operations like commits, diffs, and branch management via natural language. It automatically detects the current working directory and supports multi-project workflows across different local environments.
    16
    607
    2
    MIT
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    A lightweight MCP server that enables AI assistants to manage local Git repositories by executing commands like status, add, and commit. It streamlines development workflows by providing repository context and diffs directly to the assistant.
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides tools for interacting with Git repositories, enabling AI assistants to manage repositories, branches, commits, and files through a standardized interface.
    7,122
    1
    Apache 2.0

Latest Blog Posts

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/yinghuohuichao/mcp-server-git'

If you have feedback or need assistance with the MCP directory API, please join our Discord server