Skip to main content
Glama
martinsky999

MCP Git Server

by martinsky999

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.

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

    • Input:

      • repo_path (string): Path to Git repository

    • Returns: Diff output of unstaged changes

  3. git_diff_staged

    • Shows changes that are staged for commit

    • Input:

      • repo_path (string): Path to Git repository

    • 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

    • 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

    • Inputs:

      • repo_path (string): Path to Git repository

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

    • 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

      • start_point (string, optional): Starting point for the new 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

  1. 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

  1. git_init

  • Initializes a Git repository

  • Inputs:

    • repo_path (string): Path to directory to initialize git repo

  • Returns: Confirmation of repository initialization

Related MCP server: git-mcp-server

Installation

When using uv no specific installation is needed. We will use uvx to directly run mcp-server-git.

Using PIP

Alternatively you can install mcp-server-git via pip:

pip install mcp-server-git

After installation, you can run it as a script using:

python -m mcp_server_git

Configuration

Usage with Claude Desktop

Add this to your claude_desktop_config.json:

"mcpServers": {
  "git": {
    "command": "uvx",
    "args": ["mcp-server-git", "--repository", "path/to/git/repo"]
  }
}
  • Note: replace '/Users/username' with the a path that you want to be accessible by this tool

"mcpServers": {
  "git": {
    "command": "docker",
    "args": ["run", "--rm", "-i", "--mount", "type=bind,src=/Users/username,dst=/Users/username", "mcp/git"]
  }
}
"mcpServers": {
  "git": {
    "command": "python",
    "args": ["-m", "mcp_server_git", "--repository", "path/to/git/repo"]
  }
}

Usage with VS Code

For quick installation, use one of the one-click install buttons below...

Install with UV in VS Code Install with UV in VS Code Insiders

Install with Docker in VS Code Install with Docker in VS Code Insiders

For manual installation, add the following JSON block to your User Settings (JSON) file in VS Code. You can do this by pressing Ctrl + Shift + P and typing Preferences: Open Settings (JSON).

Optionally, you can add it to a file called .vscode/mcp.json in your workspace. This will allow you to share the configuration with others.

Note that the mcp key is not needed in the .vscode/mcp.json file.

{
  "mcp": {
    "servers": {
      "git": {
        "command": "uvx",
        "args": ["mcp-server-git"]
      }
    }
  }
}

For Docker installation:

{
  "mcp": {
    "servers": {
      "git": {
        "command": "docker",
        "args": [
          "run",
          "--rm",
          "-i",
          "--mount", "type=bind,src=${workspaceFolder},dst=/workspace",
          "mcp/git"
        ]
      }
    }
  }
}

Usage with Zed

Add to your Zed settings.json:

"context_servers": [
  "mcp-server-git": {
    "command": {
      "path": "uvx",
      "args": ["mcp-server-git"]
    }
  }
],
"context_servers": {
  "mcp-server-git": {
    "command": {
      "path": "python",
      "args": ["-m", "mcp_server_git"]
    }
  }
},

Debugging

You can use the MCP inspector to debug the server. For uvx installations:

npx @modelcontextprotocol/inspector uvx mcp-server-git

Or if you've installed the package in a specific directory or are developing on it:

cd path/to/servers/src/git
npx @modelcontextprotocol/inspector uv run mcp-server-git

Running tail -n 20 -f ~/Library/Logs/Claude/mcp*.log will show the logs from the server and may help you debug any issues.

Development

If you are doing local development, there are two ways to test your changes:

  1. Run the MCP inspector to test your changes. See Debugging for run instructions.

  2. Test using the Claude desktop app. Add the following to your claude_desktop_config.json:

Docker

{
  "mcpServers": {
    "git": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "--mount", "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
        "--mount", "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
        "--mount", "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt",
        "mcp/git"
      ]
    }
  }
}

UVX

{
"mcpServers": {
  "git": {
    "command": "uv",
    "args": [ 
      "--directory",
      "/<path to mcp-servers>/mcp-servers/src/git",
      "run",
      "mcp-server-git"
    ]
  }
}

Build

Docker build:

cd src/git
docker build -t mcp/git .

License

This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

Available Tools

12 tools
git_addC

Adds file contents to the staging area

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathYes
filesYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions adding to the staging area, implying a mutation, but doesn't cover permissions, reversibility, error handling, or what happens if files don't exist. This is a significant gap for a tool that modifies state.

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, efficient sentence with zero waste. It's appropriately sized and front-loaded, making it easy to scan and understand the core purpose quickly.

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?

Given no annotations, 0% schema coverage, no output schema, and 2 parameters, the description is incomplete. It lacks details on behavior, parameters, and usage context, making it inadequate for a mutation tool in a complex domain like git.

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. It mentions 'file contents' and 'staging area', which loosely relates to the 'files' parameter, but doesn't explain 'repo_path' or provide details on file paths, wildcards, or format. The description adds minimal value 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 clearly states the action ('adds file contents') and target ('to the staging area'), which is specific and distinguishes it from siblings like git_commit or git_reset. However, it doesn't explicitly differentiate from all siblings (e.g., git_diff_staged might be related), so it's not a perfect 5.

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 like git_commit or git_reset, nor does it mention prerequisites (e.g., needing a git repository). It only states what it does, not when or why to use it.

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.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. 'Switches branches' implies a mutation operation that changes the active branch, but it doesn't disclose key behaviors: whether it requires the branch to exist, if it updates the working directory, potential for data loss if uncommitted changes exist, or error conditions. This is inadequate for a mutation tool with zero annotation coverage.

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 extremely concise with just two words, front-loaded and zero waste. It directly states the action without unnecessary elaboration, making it efficient for quick understanding, though this brevity contributes to gaps in other dimensions.

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?

Given the tool's complexity (mutation operation with 2 parameters), no annotations, no output schema, and 0% schema coverage, the description is incomplete. It lacks details on behavior, parameters, error handling, and output, making it insufficient for safe and effective use by an AI agent in a Git workflow context.

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 undocumented parameters. It adds no meaning beyond the schema: parameters 'repo_path' and 'branch_name' are not explained, their formats or purposes (e.g., path to Git repository, name of target branch) are unspecified, and the description doesn't clarify how they relate to the action. This fails to compensate for the coverage 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 'Switches branches' states a clear verb ('Switches') and resource ('branches'), but it's vague about what this means in Git context. It doesn't specify that this changes the working directory to a different branch or mention the repository context, and it doesn't distinguish from sibling tools like git_create_branch or git_reset which also involve branch operations.

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 doesn't mention prerequisites (e.g., needing an existing branch), exclusions (e.g., not for creating new branches), or refer to sibling tools like git_create_branch for branch creation or git_reset for undoing changes, leaving usage context unclear.

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
repo_pathYes
messageYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the action ('Records changes') but doesn't disclose behavioral traits like whether it requires staged changes, what happens on success/failure, if it's destructive (overwrites history), authentication needs, or output format. This leaves significant gaps for a mutation tool.

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, efficient sentence with zero waste. It's appropriately sized and front-loaded, though its brevity contributes to gaps in other dimensions. Every word earns its place in conveying the core action.

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?

Given the complexity (a Git commit operation with 2 parameters), no annotations, no output schema, and 0% schema coverage, the description is incomplete. It doesn't cover parameter meanings, behavioral context, or usage guidelines, making it inadequate for effective tool selection and invocation.

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. It mentions 'changes to the repository' but doesn't explain the two parameters (repo_path and message) or their semantics (e.g., repo_path as directory path, message as commit description). No parameter details are provided beyond what's in the schema titles.

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' states a general purpose (verb+resource) but is vague about what specific changes are recorded and how. It doesn't clearly distinguish this from sibling tools like git_add (which stages changes) or git_log (which shows commit history). The description is functional but lacks specificity.

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. It doesn't mention prerequisites (e.g., staged changes via git_add), when not to use it, or how it relates to siblings like git_commit (for committing) versus git_diff (for viewing changes). The description offers no contextual usage information.

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
branch_nameYes
base_branchNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the creation action but lacks details on permissions needed, error conditions (e.g., if branch exists), or side effects. This is inadequate for a mutation tool without annotation support.

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, efficient sentence with zero waste. It is appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary elaboration.

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?

Given the complexity of a mutation tool with no annotations, 0% schema coverage, and no output schema, the description is incomplete. It lacks crucial details like return values, error handling, and full parameter explanations, making it insufficient for effective use.

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 undocumented parameters. It only mentions 'optional base branch', covering one of three parameters, and adds no meaning for 'repo_path' or 'branch_name'. This fails to address the coverage gap.

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 clearly states the action ('Creates a new branch') and resource ('from an optional base branch'), making the purpose immediately understandable. However, it does not explicitly differentiate this tool from siblings like 'git_checkout' (which might also involve branch operations), 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.

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 mentions 'optional base branch' but does not specify scenarios (e.g., creating from HEAD vs. another branch) or prerequisites, leaving usage context vague.

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

git_diffC

Shows differences between branches or commits

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathYes
targetYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'shows differences', implying a read-only operation, but doesn't disclose critical behaviors like output format, error handling, or whether it requires a clean working directory. This leaves significant gaps for a tool with no annotation support.

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, efficient sentence with zero wasted words. It's appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary elaboration, making it easy to parse quickly.

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?

Given the complexity of a Git diff operation, no annotations, no output schema, and low schema coverage, the description is incomplete. It lacks details on return values, error conditions, and how it differs from sibling tools, making it inadequate for full contextual understanding.

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 0% description coverage, and the description adds no meaning beyond the parameter names. It doesn't explain what 'repo_path' or 'target' represent (e.g., target could be a branch name, commit hash, or comparison like 'HEAD~1'), failing to compensate for the lack of schema documentation.

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 clearly states the verb 'shows differences' and the resource 'between branches or commits', making the purpose understandable. However, it doesn't explicitly distinguish this tool from its siblings like 'git_diff_staged' or 'git_diff_unstaged', which would require more specific differentiation to achieve 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.

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. With siblings like 'git_diff_staged' and 'git_diff_unstaged' available, it fails to specify scenarios where this tool is preferred, such as for comparing arbitrary commits or branches, leaving usage context unclear.

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

git_diff_stagedC

Shows changes that are staged for commit

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'shows' changes, implying a read-only operation, but doesn't specify output format, error handling, or any side effects. For a tool with zero annotation coverage, this is insufficient to inform the agent about behavioral traits beyond the basic action.

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, clear sentence with no wasted words: 'Shows changes that are staged for commit.' It is front-loaded and efficiently conveys the core purpose without unnecessary elaboration, making it easy for an AI agent to parse quickly.

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?

Given the complexity of Git operations, no annotations, no output schema, and low schema coverage (0%), the description is incomplete. It doesn't explain what 'shows' entails (e.g., output format), how it interacts with sibling tools, or any behavioral nuances. For a tool in this context, more detail is needed to ensure the agent can use it effectively.

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?

The description adds no information about parameters beyond what the input schema provides. With 0% schema description coverage and 1 parameter ('repo_path'), the schema lacks details like format or examples. The description doesn't compensate by explaining the parameter's role or usage, but since there's only one parameter, the baseline is adjusted to 3 for minimal viability.

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 clearly states the tool's purpose: 'Shows changes that are staged for commit.' It specifies the verb 'shows' and the resource 'changes that are staged for commit,' making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'git_diff' or 'git_diff_unstaged,' which prevents a score of 5.

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 doesn't mention sibling tools like 'git_diff' (for all changes) or 'git_diff_unstaged' (for unstaged changes), nor does it specify prerequisites or contexts for usage. This lack of comparative or contextual advice limits its helpfulness for an AI agent.

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

git_diff_unstagedC

Shows changes in the working directory that are not yet staged

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states the tool 'shows changes', implying a read-only operation, but doesn't disclose behavioral traits such as output format, error handling, or whether it requires specific Git states. This is a significant gap for a tool with no annotation coverage.

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, clear sentence with zero waste, front-loaded and appropriately sized for the tool's purpose. Every word earns its place without redundancy.

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?

Given the tool's complexity (Git operation with no annotations, no output schema, and low schema coverage), the description is incomplete. It lacks details on output format, error conditions, and how it differs from siblings, making it inadequate for full contextual understanding.

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?

The description adds no information about the single parameter 'repo_path' beyond what the input schema provides (schema description coverage is 0%). Since there is only one parameter, the baseline is 4, but the description fails to compensate for the lack of schema details, such as explaining what 'repo_path' represents or its format, so it's scored lower.

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 clearly states the verb 'shows changes' and specifies the resource as 'working directory that are not yet staged', which is specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'git_diff' or 'git_diff_staged', which would require a 5.

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 like 'git_diff' or 'git_diff_staged', nor does it mention prerequisites or exclusions. It merely states what the tool does without context for selection.

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

git_initC

Initialize a new Git repository

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Initialize a new Git repository' implies a write operation that creates files (like .git directory), but it doesn't disclose critical traits such as permissions required, whether it overwrites existing repos, error handling, or output format. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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, efficient sentence that directly states the tool's purpose without any fluff. It's appropriately sized for a simple tool and front-loaded with the core action, making it easy to parse. Every word earns its place, achieving optimal conciseness.

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?

Given the tool's complexity (a mutation operation with no annotations), 0% schema coverage, and no output schema, the description is incomplete. It lacks details on behavioral traits, parameter meaning, error cases, and return values. For a tool that initializes repositories—a potentially destructive action if misused—this minimal description fails to provide enough context for safe and effective use.

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?

The description adds no parameter semantics beyond what the input schema provides. With 0% schema description coverage and 1 parameter (repo_path), the schema only gives a title and type. The description doesn't explain what repo_path represents (e.g., local directory path), its format, or constraints. However, since there's only one parameter and the tool's purpose is straightforward, the baseline is 3, as the schema minimally defines the input without description compensation.

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 'Initialize a new Git repository' clearly states the action (initialize) and resource (Git repository), making the purpose immediately understandable. It distinguishes from siblings like git_add or git_commit by focusing on repository creation rather than file operations or commits. However, it doesn't explicitly contrast with all siblings (e.g., git_create_branch might also involve initialization aspects), keeping it from a perfect 5.

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 doesn't mention prerequisites (e.g., needing an empty directory), when-not scenarios (e.g., if a repo already exists), or direct alternatives among siblings. This leaves the agent to infer usage from context alone, which is minimal guidance.

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

git_logC

Shows the commit logs

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathYes
max_countNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Shows the commit logs' implies a read-only operation, but it doesn't specify output format, pagination behavior, error conditions, or any constraints like authentication needs or rate limits. This leaves significant gaps in understanding how the tool behaves.

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 extremely concise with just three words, front-loading the core purpose without any wasted text. While this brevity may lead to underspecification, it's structurally efficient and earns its place by stating the essential action.

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?

Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is incomplete. It lacks details on parameter usage, output format, behavioral traits, and differentiation from siblings, making it inadequate for an AI agent to reliably invoke the tool without additional context or assumptions.

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?

With 0% schema description coverage for the two parameters (repo_path and max_count), the description adds no meaning beyond what the schema provides. It doesn't explain what repo_path expects (e.g., local path, URL), what max_count defaults to or its range, or how they affect the output, failing to compensate for the schema's lack of descriptions.

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 'Shows the commit logs' clearly states the verb ('shows') and resource ('commit logs'), making the basic purpose understandable. However, it doesn't differentiate from sibling tools like git_show or git_status, which might also display commit-related information, leaving some ambiguity about its specific scope.

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. With siblings like git_show (which might show specific commits) and git_status (which shows working tree status), there's no indication of when git_log is preferred, leaving usage context entirely implicit.

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

git_resetC

Unstages all staged changes

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('unstages all staged changes') but doesn't describe whether this is destructive (it is, as it removes staging), what happens to the changes (they become unstaged but remain in the working directory), or any side effects. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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, efficient sentence with zero waste. It is front-loaded and appropriately sized for the tool's function, avoiding unnecessary elaboration. Every word earns its place, making it highly concise and well-structured.

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?

Given the tool's complexity (a mutation operation), lack of annotations, no output schema, and low schema coverage, the description is incomplete. It doesn't cover behavioral aspects like destructiveness, parameter semantics, or output expectations. For a Git reset tool, which can have significant effects, this description is inadequate and leaves critical gaps for an AI agent.

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 undocumented parameters. The description mentions no parameters, while the input schema has one required parameter ('repo_path'). This adds no meaning beyond what the schema provides, failing to explain what 'repo_path' represents (e.g., path to the Git repository). The description does not compensate for the low coverage.

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 'Unstages all staged changes' clearly states the tool's function with a specific verb ('unstages') and resource ('staged changes'). It distinguishes from siblings like git_add (which stages changes) and git_commit (which commits staged changes), though it doesn't explicitly name alternatives. The purpose is unambiguous but could be slightly more specific about scope.

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 doesn't mention prerequisites (e.g., needing staged changes), exclusions, or compare it to siblings like git_checkout (which can also undo changes) or git_diff_staged (which shows staged changes). Usage is implied from the purpose but not explicitly stated.

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

git_showC

Shows the contents of a commit

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathYes
revisionYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. 'Shows' implies a read-only operation, but the description doesn't specify what exactly gets shown (full commit metadata, diff output, raw file contents), whether there are formatting options, or if there are any limitations (like large commits causing performance issues). It provides minimal behavioral context beyond the basic action.

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 extremely concise at just 5 words, with zero wasted language. It's front-loaded with the core functionality and contains no unnecessary elaboration. For a simple tool, this level of brevity is appropriate and efficient.

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?

Given 2 parameters with 0% schema coverage, no annotations, no output schema, and multiple similar sibling tools, the description is insufficiently complete. It doesn't explain what the tool returns (commit message, author, timestamp, diff, or raw content), how to interpret results, or how it differs from other git viewing tools. The minimal description leaves too many gaps for effective tool selection and use.

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?

With 0% schema description coverage and 2 required parameters, the description adds no parameter information beyond what the schema provides. It doesn't explain what 'repo_path' should contain (absolute path, relative path, repository name) or what format 'revision' accepts (commit hash, branch name, tag). The description fails to compensate for the complete lack of schema documentation.

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 the contents of a commit' clearly states the tool's function with a specific verb ('shows') and resource ('contents of a commit'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like git_log (which shows commit history) or git_diff (which shows differences), leaving some ambiguity about when to use this specific tool versus alternatives.

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. With siblings like git_log, git_diff, and git_status that also display git information, there's no indication whether this tool is for viewing raw commit data, file changes, or metadata. No context about prerequisites or typical use cases is mentioned.

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

git_statusC

Shows the working tree status

ParametersJSON Schema
NameRequiredDescriptionDefault
repo_pathYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Shows the working tree status' implies a read-only operation, but it doesn't specify what information is included (e.g., staged vs unstaged changes, untracked files), output format, or any constraints like requiring git to be installed. For a tool with zero annotation coverage, this is a significant gap.

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 extremely concise at 4 words, with zero wasted text. It's front-loaded with the core purpose. Every word earns its place, making it easy to scan and understand quickly.

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?

Given the complexity (a git operation with 1 parameter), lack of annotations, no output schema, and low schema coverage, the description is incomplete. It doesn't cover parameter meaning, behavioral details, or output expectations. For a tool in a rich sibling set like git commands, more context is needed to guide effective use.

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 1 parameter (repo_path) with 0% description coverage in the schema. The tool description adds no information about parameters—it doesn't explain what repo_path is (e.g., path to git repository), acceptable values, or defaults. With low schema coverage, the description fails to compensate, leaving the parameter undocumented.

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 the working tree status' clearly states the tool's purpose with a specific verb ('Shows') and resource ('working tree status'). It distinguishes itself from siblings like git_diff or git_log by focusing on status rather than changes or history. However, it doesn't explicitly differentiate from all siblings (e.g., git_diff_unstaged might overlap in some contexts).

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 doesn't mention when to prefer git_status over git_diff_staged for unstaged changes, or when to use it in conjunction with git_add. There's no context about prerequisites (e.g., needing an initialized repo) or typical workflows.

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.

  1. 12 tool updates
    • First observedgit_add
    • First observedgit_checkout
    • First observedgit_commit
    • First observedgit_create_branch
    • First observedgit_diff
    • First observedgit_diff_staged
    • First observedgit_diff_unstaged
    • First observedgit_init
    • First observedgit_log
    • First observedgit_reset
    • First observedgit_show
    • First observedgit_status

TDQS

B3.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no ambiguity. The tools map directly to specific Git commands (add, checkout, commit, diff, etc.) with clear boundaries between operations like git_diff, git_diff_staged, and git_diff_unstaged that target different states of changes.

Naming Consistency5/5

All tools follow a perfect and consistent verb_noun pattern with the 'git_' prefix (e.g., git_add, git_checkout, git_commit). There are no deviations in naming conventions, making the set highly predictable and readable.

Tool Count5/5

With 12 tools, this is well-scoped for a Git server covering core version control operations. Each tool earns its place by addressing essential Git workflows (e.g., staging, committing, branching, diffing, logging), without being overly sparse or bloated.

Completeness5/5

The tool surface provides complete coverage of the Git domain for basic to intermediate operations. It includes initialization (git_init), staging (git_add), committing (git_commit), branching (git_create_branch, git_checkout), diffing (git_diff variants), history (git_log, git_show), and status management (git_status, git_reset), with no obvious gaps for core workflows.

Maintenance

ActivityInactive
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
    A
    maintenance
    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.
    12
    90,042
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A Model Context Protocol server that enables Large Language Models to interact with Git repositories through a robust API, supporting operations like repository initialization, cloning, file staging, committing, and branch management.
    28
    7,389
    239
    Apache 2.0
  • A
    license
    C
    quality
    B
    maintenance
    A Model Context Protocol server that enables LLMs to interact with Git repositories, providing tools to read, search, and manipulate Git repositories through commands like status, diff, commit, and branch operations.
    22
    4
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol server that provides Git version control operations as structured tools for AI coding agents. It enables LLMs to programmatically manage repositories through actions like committing changes, rolling back code, and comparing diffs.
    10
    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/martinsky999/mcp-git-py'

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