Skip to main content
Glama
DanyelKirsch

Git MCP Server

by DanyelKirsch

Git MCP Server

A Model Context Protocol (MCP) server for Git operations that provides comprehensive Git functionality to MCP clients like Claude Desktop.

Features

  • Context-aware: Automatically detects the current project based on working directory

  • Comprehensive Git operations: status, branches, diffs, logs, file contents, commits, and more

  • Multi-project support: Works seamlessly across different project directories

  • Error handling: Proper MCP error responses

  • Branch management: Create, switch, and manage branches

  • Remote operations: Push, pull, and fetch from remote repositories

Related MCP server: Gitrama MCP Server

Installation

npm install -g git-mcp-server

Option 2: Local Development Setup

  1. Clone and install:

    git clone https://github.com/yourusername/git-mcp-server.git
    cd git-mcp-server
    npm install
  2. Build the project:

    npm run build

Configuration

Claude Desktop

Add this server to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

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

Other MCP Clients

For other MCP clients, use the server binary directly:

git-mcp-server

The server will automatically use the current working directory as the Git repository context.

Usage

Once configured, you can use Git operations through your MCP client. The server automatically detects the Git repository in your current working directory.

Example Commands

Ask your MCP client (like Claude) to perform Git operations:

  • "What's the current git status?"

  • "Show me the diff with the main branch"

  • "Create a new branch called feature/new-feature"

  • "Commit these changes with message 'Fix bug in parser'"

  • "Push the current branch to origin"

Testing the Server

You can test the server manually from any Git repository:

cd /path/to/your/git/repo
git-mcp-server

Available Tools

Repository Information

  • git_status - Get current git status

  • git_current_branch - Get current branch name

  • git_staged_changes - Get staged changes

  • git_working_directory - Get current working directory info

File and History Operations

  • git_diff - Show diff between branches/commits

  • git_log - Get commit history

  • git_show_file - Show file contents at specific commit

Branch Operations

  • git_branches - List all branches

  • git_checkout - Switch to different branch or create new branch

Staging and Commit Operations

  • git_add - Add files to staging area

  • git_commit - Create commits with message and files

Remote Operations

  • git_pull - Pull changes from remote repository

  • git_fetch - Fetch changes from remote without merging

Repository Management

  • git_init - Initialize a new git repository

Prerequisites

  • Node.js 18+

  • npm or yarn

  • Git installed on your system

Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests if applicable

  5. Submit a pull request

License

MIT License - see LICENSE file for details.

Project Structure

git-mcp-server/
├── package.json          # Project dependencies and scripts
├── tsconfig.json         # TypeScript configuration
├── src/
│   └── index.ts         # Main server implementation
├── build/
│   └── index.js         # Compiled JavaScript (generated)
└── README.md            # This file

Development

  • npm run build - Build the TypeScript code

  • npm run dev - Watch mode for development

  • npm start - Run the built server

Available Tools

16 tools
git_addC

Add files to the staging area

ParametersJSON Schema
NameRequiredDescriptionDefault
filesNoFiles to add (use "." for all files, or specify individual files)
allNoAdd all tracked and untracked files (-A flag)

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 action ('Add files to the staging area') but lacks behavioral details such as what happens if files don't exist, whether it's idempotent, error conditions, or output format. This is a significant gap 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 a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, clearly stating the core purpose without unnecessary elaboration, earning full marks for 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 complexity (a mutation tool with no annotations and no output schema), the description is incomplete. It doesn't cover behavioral traits, usage context, or output details, making it inadequate for an agent to reliably invoke this tool without guesswork.

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 schema fully documents the parameters. The description adds no additional meaning beyond what's in the schema (e.g., it doesn't explain the interaction between 'files' and 'all' parameters). Baseline 3 is appropriate as the schema does the heavy lifting.

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 ('Add') and resource ('files to the staging area'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like git_commit or git_staged_changes, which also interact with the staging area, so it misses 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 doesn't mention prerequisites (e.g., git repository must be initialized), when not to use it (e.g., after committing), or how it relates to siblings like git_commit or git_status, leaving the agent with no usage context.

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

git_branchesC

List all branches

ParametersJSON Schema
NameRequiredDescriptionDefault
remoteNoInclude remote branches

TDQS

C2.9/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 'List all branches' but doesn't specify whether this includes local, remote, or both by default, nor does it describe output format, pagination, or error conditions. The single parameter 'remote' hints at some behavior, but the description itself lacks critical details for safe and effective use.

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 three words, front-loading the core action ('List all branches') with zero wasted text. Every word earns its place, making it easy for an agent to parse quickly 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 tool's simplicity (one optional parameter, no output schema, no annotations), the description is incomplete. It doesn't explain what 'branches' means in context (e.g., Git branches), how results are returned, or any limitations. For a tool with no annotations or output schema, more context is needed to ensure the agent can use it correctly.

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%, with the parameter 'remote' fully documented in the schema as 'Include remote branches' with a default of false. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline score of 3 for adequate but not additive 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 clearly states the verb ('List') and resource ('all branches'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'git_current_branch' or 'git_status', which also provide branch-related information, so it doesn't reach the highest score for sibling differentiation.

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_current_branch' (which shows only the current branch) or 'git_status' (which includes branch info in a broader context). There's no mention of prerequisites, context, or exclusions, leaving the agent to infer usage from the tool name alone.

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

git_checkoutC

Switch to a different branch or create a new branch

ParametersJSON Schema
NameRequiredDescriptionDefault
branchYesBranch name to checkout
createNoCreate new branch if it does not exist

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the two operations but doesn't explain what 'switch to a branch' entails (e.g., updating working directory, requiring clean state), whether creation requires specific conditions, or potential side effects like discarding uncommitted 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?

The description is a single, efficient sentence that front-loads the core functionality. Every word earns its place with zero waste, 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?

For a Git operation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., working directory impact), error conditions, or return values, leaving significant gaps for an AI agent to understand proper invocation.

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 schema already documents both parameters fully. The description adds no additional meaning beyond what's in the schema (e.g., no clarification on branch naming conventions or when 'create' should be used). Baseline 3 is appropriate when schema does the heavy lifting.

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 with specific verbs ('switch to' and 'create') and identifies the resource ('branch'). It distinguishes between two distinct operations but doesn't differentiate from sibling tools like 'git_create_branch' or 'git_branches'.

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_create_branch' for creating branches or 'git_branches' for listing branches. There are no prerequisites, exclusions, or context for choosing between checkout and create operations.

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

git_commitC

Create a new commit with the specified message and files

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesCommit message
filesNoFiles to add and commit (optional - if not provided, commits all staged files)

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 creates a commit but doesn't cover critical aspects like whether it requires authentication, what happens if files aren't staged, error conditions, or the response 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 that directly states the tool's purpose without any unnecessary words. It's front-loaded and easy to parse, 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 complexity of a Git commit operation, the lack of annotations, and no output schema, the description is insufficient. It doesn't explain behavioral traits, error handling, or dependencies on other tools like 'git_add', leaving the agent with incomplete information for proper usage.

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 schema description coverage is 100%, with clear descriptions for both parameters. The description adds minimal value by mentioning 'message and files' but doesn't provide additional context beyond what the schema already documents, such as file path formats or message conventions, so it meets the baseline.

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 ('Create a new commit') and specifies the key inputs ('with the specified message and files'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this tool from sibling tools like 'git_add' or 'git_staged_changes', which also involve commit-related operations, so it doesn't reach the highest 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. For example, it doesn't mention prerequisites like staging files first or clarify when to use 'git_add' before committing. Without such context, the agent might misuse it, leading to a low score.

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

git_create_branchB

Create a new branch and switch to it (git checkout -b)

ParametersJSON Schema
NameRequiredDescriptionDefault
branchNameYesName of the new branch to create
startPointNoStarting point for the new branch (branch name or commit hash)HEAD

TDQS

B3.4/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 mentions the tool creates a branch and switches to it, but doesn't disclose behavioral traits like whether it requires an existing repository, what happens if the branch already exists, error conditions, or if it modifies the working directory. For a mutation 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 a single, efficient sentence that front-loads the core functionality ('Create a new branch and switch to it') and includes a helpful git command analogy ('git checkout -b'). There is zero waste, and every part of the sentence earns its place by clarifying the tool's behavior.

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 this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't cover error handling, success conditions, or what the tool returns (e.g., confirmation message or branch details). For a tool that modifies state, more context is needed to guide the agent 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?

Schema description coverage is 100%, so the schema already documents both parameters (branchName and startPoint) with clear descriptions. The description doesn't add any meaning beyond what the schema provides, such as explaining parameter interactions or constraints. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states the specific action ('Create a new branch and switch to it') and the resource ('branch'), distinguishing it from siblings like git_branches (list branches) and git_checkout (switch without creation). It uses precise git terminology that matches the tool's name.

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 usage by referencing 'git checkout -b', which suggests this combines branch creation and checkout. However, it doesn't explicitly state when to use this vs. alternatives like git_checkout (for switching only) or prerequisites (e.g., needing a repository). The context is clear but lacks explicit guidance on exclusions or comparisons.

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

git_current_branchA

Get the current branch name

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.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's purpose but doesn't disclose behavioral traits such as whether it's read-only, what happens in edge cases (e.g., detached HEAD state), or the output format. This leaves significant gaps 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, efficient sentence that front-loads the essential information with zero waste. It's appropriately sized for a simple tool and earns its place by clearly stating the purpose.

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 (0 parameters, no output schema, no annotations), the description is minimally adequate. However, it lacks details on behavioral aspects and output format, which are important for completeness even in simple tools. It meets the minimum viable standard but has clear gaps.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100%, so no parameter information is needed. The description doesn't add parameter semantics, but with no parameters, a baseline of 4 is appropriate as it doesn't need to compensate for any gaps.

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 clearly states the specific action ('Get') and resource ('current branch name'), distinguishing it from siblings like git_branches (which lists all branches) and git_status (which provides broader status information). It precisely defines the tool's function without ambiguity.

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 implies usage context—when the current branch name is needed—but doesn't explicitly state when to use this tool versus alternatives like git_branches or git_status. It provides clear context but lacks explicit exclusions or named alternatives.

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

git_diffC

Show diff between branches or commits

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoTarget branch or commit to diff against (e.g., "main", "HEAD~1")
stagedNoShow staged changes only

TDQS

C2.9/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 what the tool does but doesn't cover key traits like whether it's read-only (implied by 'show'), output format (e.g., text diff), error handling, or prerequisites (e.g., requires a git repository). This leaves significant gaps for safe and effective use.

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—'Show diff between branches or commits' is front-loaded and directly conveys the core functionality. 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 complexity of git operations, no annotations, and no output schema, the description is incomplete. It lacks details on behavioral traits, output format, and usage context, which are crucial for an AI agent to invoke this tool correctly without risking errors or misinterpretations.

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 schema fully documents both parameters (target and staged). The description adds no additional meaning beyond implying diff comparisons, which is already covered by the tool name and purpose. Baseline 3 is appropriate as the schema does the heavy lifting.

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 'show' and the resource 'diff between branches or commits', making the purpose immediately understandable. It doesn't explicitly distinguish from siblings like git_status or git_staged_changes, which also show changes, so it misses full differentiation.

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_status (for working directory changes) or git_staged_changes. The description implies usage for comparing branches/commits but doesn't specify contexts or exclusions, leaving the agent to infer from sibling names alone.

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

git_fetchA

Fetch changes from remote repository without merging

ParametersJSON Schema
NameRequiredDescriptionDefault
remoteNoRemote name (default: origin)origin

TDQS

A3.9/5.0
Behavior3/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 clearly states this is a fetch operation that doesn't merge, which is useful behavioral context. However, it doesn't mention other important behavioral aspects like whether it requires network connectivity, what happens if the remote doesn't exist, or what the typical output/response looks like.

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 perfectly concise at just 7 words. It's front-loaded with the core functionality and every word earns its place. There's no wasted language or unnecessary elaboration.

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 Git operation with no annotations and no output schema, the description provides the essential purpose but lacks completeness. It doesn't explain what the tool returns, potential error conditions, or important behavioral details like whether this updates remote tracking branches. Given the complexity of Git operations, more context would be helpful for an AI agent.

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 schema description coverage is 100%, so the schema already fully documents the single parameter. The description doesn't add any parameter-specific information beyond what's in the schema. According to the scoring guidelines, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.

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 clearly states the specific action ('Fetch changes') and resource ('from remote repository') while distinguishing it from sibling tools by specifying 'without merging', which differentiates it from git_pull (which merges). It uses precise Git terminology that accurately conveys the tool's function.

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 about when to use this tool by stating it fetches without merging, implying it should be used when you want to see remote changes but not automatically integrate them. However, it doesn't explicitly mention when NOT to use it or name specific alternatives like git_pull for comparison.

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
bareNoCreate a bare repository
initialBranchNoSet the initial branch name

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 action ('Initialize') but doesn't describe what this entails—e.g., creating a .git directory, setting up initial configuration, or potential side effects like overwriting existing files. 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 directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, 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 tool's complexity (initializing a repository is a foundational mutation), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like what happens on success/failure, return values, or error conditions. For a tool with this role, 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.

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for both parameters (e.g., 'Create a bare repository' for 'bare'). The description adds no additional parameter semantics beyond what the schema provides, such as explaining when to use 'bare' or 'initialBranch'. Baseline 3 is appropriate since the schema does the heavy lifting.

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 ('Initialize') and resource ('a new 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, such as git_create_branch, which also involves creation but of a different resource.

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 to use it (e.g., if a repository already exists), or refer to sibling tools like git_clone for initializing from an existing remote. Usage is implied only by the tool name and description, lacking explicit context.

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

git_logC

Get commit history

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoLimit number of commits to show
onelineNoShow one line per commit

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 full burden for behavioral disclosure. 'Get commit history' implies a read-only operation, but it doesn't specify what format the history is returned in, whether it includes all branches or just current, pagination behavior, or any authentication requirements. For a tool with no annotation coverage, this leaves significant behavioral gaps about what the agent should expect.

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 maximally concise with just three words that directly convey the core functionality. There's zero wasted language, no unnecessary elaboration, and the meaning is immediately apparent. This is an excellent example of efficient communication where every word earns its place.

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 lack of annotations and output schema, the description is insufficiently complete. While the purpose is clear, there's no information about return format, error conditions, or behavioral constraints. For a tool that retrieves historical data with configurable parameters, the agent needs more context about what to expect from the operation beyond just knowing it gets commit history.

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?

With 100% schema description coverage, the input schema already fully documents both parameters (limit and oneline) with descriptions and defaults. The tool description adds no additional parameter information beyond what's in the schema. According to scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description, which applies here.

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 'Get commit history' clearly states the verb ('Get') and resource ('commit history'), making the tool's purpose immediately understandable. It distinguishes itself from siblings like git_status or git_diff by focusing specifically on historical commits rather than current state or changes. However, it doesn't explicitly differentiate from potential overlapping tools like git_show_file which might also show commit details.

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_file (which might show file-specific commit history) or git_branches (which might show branch-specific commits), there's no indication of when git_log is the appropriate choice versus other commit-related tools. The description lacks any context about prerequisites, typical use cases, or exclusions.

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

git_pullC

Pull changes from remote repository

ParametersJSON Schema
NameRequiredDescriptionDefault
remoteNoRemote name (default: origin)origin
branchNoBranch name (default: current branch)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose that git pull typically performs both fetch and merge (or rebase with flags), may create merge commits, can fail with conflicts, or requires network connectivity. For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps unaddressed.

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 with zero wasted words. It's appropriately sized for a simple command and front-loaded with the essential information, 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 this is a mutation tool (git pull modifies local state) with no annotations and no output schema, the description is incomplete. It doesn't explain what happens on success (e.g., fast-forward merge), potential failures (e.g., conflicts), or return values. For a tool that can significantly impact the working directory, more behavioral context is needed.

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%, with both parameters well-documented in the schema (remote name with default, branch name with default). The description adds no parameter-specific information beyond what the schema already provides, so it meets the baseline for high schema coverage without adding extra value.

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 ('pull') and resource ('changes from remote repository'), making the purpose immediately understandable. It distinguishes from siblings like git_fetch (which only downloads) and git_push (which uploads), but doesn't explicitly contrast with them. The description is specific but lacks explicit sibling differentiation for 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 like git_fetch (which doesn't merge) or git_pull --rebase. It doesn't mention prerequisites (e.g., needing a remote configured) or typical contexts (e.g., updating local branch). Without any usage context, the agent must infer when this tool is appropriate.

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

git_pushC

Push changes to remote repository

ParametersJSON Schema
NameRequiredDescriptionDefault
remoteNoRemote name (default: origin)origin
branchNoBranch name to push (default: current branch)
setUpstreamNoSet upstream tracking branch (-u flag)

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. While 'push changes' implies a write/mutation operation, the description doesn't mention critical behaviors: it doesn't state that this requires network access, may fail due to conflicts, could overwrite remote changes, or has authentication/permission requirements. For a mutation tool with zero annotation coverage, 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 a single, efficient sentence that gets straight to the point: 'Push changes to remote repository.' Every word earns its place, with no unnecessary elaboration or repetition. It's appropriately sized for a tool with a clear purpose and good schema documentation.

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 that this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what happens on success/failure, what the return values might be, or important behavioral constraints (like needing commits first). While the schema covers parameters well, the overall context for safe and effective use is lacking.

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%, with all three parameters (remote, branch, setUpstream) well-documented in the schema itself. The description adds no parameter-specific information beyond what's in the schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description, which applies here.

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 'Push changes to remote repository' clearly states the verb ('push') and resource ('changes to remote repository'), making the purpose immediately understandable. It distinguishes from siblings like git_commit (which commits locally) or git_pull (which fetches from remote), but doesn't explicitly contrast with them. The purpose is specific enough to understand what the tool does without being tautological.

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 committed changes first), when not to use it (e.g., if working directory is dirty), or how it relates to siblings like git_commit (which must precede pushing) or git_pull (which might be needed before pushing). The agent must infer usage from the tool name alone.

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

git_show_fileC

Show contents of a file at a specific commit

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesPath to the file
commitNoCommit hash or branch name (default: HEAD)HEAD

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 what the tool does but lacks details on permissions, error handling, output format, or limitations (e.g., file size constraints, binary file handling). 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 that efficiently conveys the core purpose without unnecessary words. It is front-loaded and appropriately sized for the tool's complexity, with zero waste.

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 and no output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., raw file content, formatted text), error conditions, or behavioral traits. For a tool that reads file contents, this leaves critical gaps in understanding how to 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?

Schema description coverage is 100%, so the schema already documents both parameters (file path and commit hash/branch). The description implies the tool uses these parameters but doesn't add meaningful context beyond what the schema provides, such as examples or edge cases. Baseline 3 is appropriate when schema does the heavy lifting.

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 ('show contents') and target ('file at a specific commit'), which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like git_diff (which shows changes) or git_log (which shows commit history), though the purpose is distinct enough to be understood in context.

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. For example, it doesn't mention when to use git_show_file instead of git_diff for viewing file content or how it relates to git_log for commit-specific information. This leaves the agent to infer usage from the purpose alone.

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

git_staged_changesB

Get the currently staged changes

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/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. While 'Get' implies a read-only operation, it doesn't specify whether this requires Git repository initialization, what format the output returns (e.g., list of files, patch details), or any error conditions. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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 ('Get the currently staged changes') that front-loads the core purpose with zero wasted words. It's appropriately sized for a simple tool with no parameters, 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.

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete for effective tool use. It doesn't explain what 'staged changes' means in Git context, what the output format looks like (e.g., structured data vs. raw text), or how this differs from similar sibling tools. For a tool in a complex domain like Git, more context is needed to guide the agent properly.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description doesn't need to compensate for any parameter gaps, and it correctly implies no inputs are required. A baseline of 4 is appropriate since no parameter information is needed beyond what the schema already provides.

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 'Get the currently staged changes' clearly states the verb ('Get') and resource ('staged changes'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'git_status' or 'git_diff', which could also provide change-related information, so it doesn't reach the highest 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 like 'git_status' (which might show both staged and unstaged changes) or 'git_diff' (which could show differences). There's no mention of prerequisites, context, or exclusions, leaving the agent to infer usage from the tool name alone.

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

git_statusB

Get the current git status of the repository

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/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 action but lacks details such as output format (e.g., structured vs. raw text), error conditions, or whether it requires a git repository to be initialized, which are important for an agent to use it correctly.

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 unnecessary words. It is front-loaded and appropriately sized for a simple tool.

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 simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate but lacks completeness. It doesn't explain what 'git status' entails (e.g., staged vs. unstaged changes) or provide context for the agent to interpret results, leaving gaps in understanding.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter details, but this is acceptable given the lack of parameters, warranting a baseline score above minimum.

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 ('Get') and resource ('current git status of the repository'), making the purpose understandable. However, it doesn't explicitly differentiate from siblings like git_staged_changes or git_working_directory, which also provide status-related information, preventing a perfect score.

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

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. For example, it doesn't specify if this shows all changes (staged and unstaged) or how it differs from git_staged_changes, leaving the agent to infer usage from context alone.

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

git_working_directoryB

Get the current working directory of the git server

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It implies a read-only operation ('Get') but doesn't disclose details like error conditions (e.g., if no git repo exists), performance characteristics, or output format. This is inadequate for a 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 a single, clear sentence with no wasted words. It's front-loaded with the core purpose ('Get the current working directory'), making it efficient and easy to parse. Every word earns its place in conveying essential information.

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 lack of annotations and output schema, the description is incomplete. It doesn't explain what the return value looks like (e.g., a string path, error messages) or behavioral nuances. For a tool that might fail in certain git states, this leaves significant gaps in understanding.

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

Parameters4/5

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

The tool has zero parameters, and schema description coverage is 100%, so there's no need for parameter explanation in the description. The baseline for zero parameters is 4, as the description correctly avoids unnecessary parameter details while focusing on the tool's purpose.

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 ('Get') and resource ('current working directory of the git server'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from siblings like 'git_current_branch' or 'git_status' that might also provide location-related information, which prevents a perfect score.

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

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., whether a git repository must be initialized), typical use cases, or comparisons to sibling tools like 'git_status' which might include directory info. This leaves the agent without contextual usage cues.

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

TDQS

B3.4/5.0
Disambiguation4/5

Most tools have distinct purposes with clear boundaries, such as git_add for staging, git_commit for committing, and git_pull for fetching and merging. However, git_checkout and git_create_branch have overlapping functionality (both can create branches), which could cause slight confusion for an agent.

Naming Consistency5/5

All tool names follow a consistent git_verb_noun pattern, using snake_case throughout. This predictability makes it easy for agents to understand and select tools based on their names, with no deviations or mixed conventions.

Tool Count4/5

With 16 tools, the server is slightly heavy but reasonable for covering core Git operations like init, add, commit, push, pull, and branch management. It includes essential utilities but might benefit from consolidation, such as merging git_checkout and git_create_branch.

Completeness5/5

The tool set provides comprehensive coverage of Git workflows, including repository setup (git_init), staging (git_add), committing (git_commit), branching (git_branches, git_create_branch), remote operations (git_fetch, git_pull, git_push), and inspection (git_status, git_log, git_diff). No obvious gaps exist for typical agent tasks.

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
    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
    C
    maintenance
    Provides 15 MCP tools for AI-powered Git intelligence, enabling commit messages, branch creation, PR descriptions, code review, diff analysis, and push operations directly from your AI assistant.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A complete Git CLI wrapper for the Model Context Protocol (MCP), enabling AI assistants to perform all git operations through MCP tools.
    MIT

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

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