Skip to main content
Glama
lava

git-training-wheels

by lava

MCP Git Training Wheels

LLMs try to please, but as the context window gets larger and larger, errors start to happen. In particular, current models have a tendency to just git add -a the whole source tree, accidentally adding lots of random stuff to their commits.

These issues become especially noticable when multiple agents are working on a codebase in parallel, or if you're doing quick fixes while an agent is working. And no current model has the ability to un-fuck a git history.

This MCP server gives the agent some training wheels for using git safely,. It ensures that only a specific named set of files can be committed, and also provides a convenient way to fixup earlier commits. For best results, use permissions to automatically deny the use of Bash(git commit:*) or equivalent.

It's still using the regular git commit command under the hood, so global and global git settings like username, email, and commit signing all apply as usual.

Installation

Using uv

uvx mcp-git-training-wheels

From source

git clone https://github.com/lava/mcp-git-training-wheels
cd mcp-git-training-wheels
uv pip install -e .

Related MCP server: git-mcp-server

Usage

Add the following

Depending on your agent of choice, run something like the following

claude mcp add git-commit -- uvx mcp-git-training-wheels

or drop the following JSON into .mcp.json or any other location of your choice.

{
  "mcpServers": {
    "gtw": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "mcp-git-training-wheels"
      ],
      "env": {}
    }
  }
}

The specific command may change depending on your installation method.

Available Tools

git_commit

Commits specified files with a message and saves the commit information for later use.

Parameters:

  • files: List of file paths to commit

  • message: Commit message

Example:

{
  "tool": "git_commit",
  "parameters": {
    "files": ["src/main.py", "tests/test_main.py"],
    "message": "Add main functionality and tests"
  }
}

fixup_commit

Adds files to a previously created commit. If the commit is still HEAD, it uses git commit --amend. Otherwise, it uses the gitrevise module to edit the commit in history.

Parameters:

  • files: List of file paths to add to the commit

Example:

{
  "tool": "fixup_commit",
  "parameters": {
    "files": ["src/utils.py"]
  }
}

Available Tools

2 tools
git_commitB

Commit specified files to git with the given commit message.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYesList of file paths to commit
messageYesCommit message

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It only says 'commit' which implies a write/mutation, but gives no details about side effects, requirements (e.g., git repo), or behavior 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?

Single sentence, front-loaded action, no redundancy. Every word earns its place.

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?

Tool is simple and functional, but lacks usage context and behavioral caveats. With an output schema present (though not described) and sibling tool, a complete description would mention when to use vs amend or any prerequisites.

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 coverage is 100% as both files and message are described in the input schema. The description adds nothing beyond what the schema already provides, so the baseline 3 is appropriate.

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

Purpose4/5

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

The description uses a specific verb ('commit') and resource ('specified files to git') and includes the key message parameter. It is clear, though it doesn't explicitly distinguish itself from the sibling git_commit_amend.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus git_commit_amend. It only states what it does, not context or alternatives, leaving the agent without selection guidance.

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

git_commit_amendA

Amend files to the last commit created by git_commit. If the commit is still HEAD, uses git commit --amend. Otherwise, uses git commit --fixup to create a fixup commit.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYesList of file paths to add to the commit

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of disclosing behavior. It transparently explains the two execution paths: using 'git commit --amend' if HEAD, otherwise 'git commit --fixup'. This adds meaningful behavioral insight beyond the tool name. It does not mention side effects like rewriting commit history or needing to rebase fixup commits later, but the core conditional behavior is well disclosed.

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 exceptionally concise: two sentences that front-load the purpose and immediately explain the conditional behavior. Every word earns its place, with no redundant filler or repetition of the tool name. It is efficiently structured for quick parsing.

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

Completeness4/5

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

Given the tool's moderate complexity and the presence of an output schema (which covers return values), the description provides sufficient context. It explains the two scenarios and the target commit. It could optionally mention the risks of amending pushed commits, but for a tool intended to amend the last git_commit, this is a minor omission. Overall, it is complete enough for correct 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 input schema fully documents the only parameter 'files' with a description ('List of file paths to add to the commit'), so schema coverage is 100%. The description adds no additional meaning about the parameter itself, leaving the schema to carry the semantic weight. This aligns with the baseline score of 3 for high schema coverage.

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

Purpose5/5

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

The description clearly states the tool's function: 'Amend files to the last commit created by git_commit.' It names the specific verb (amend) and resource (files to a commit), and the conditional behavior (HEAD vs fixup) further clarifies the scope. It naturally distinguishes from the sibling git_commit by focusing on modifying an existing commit rather than creating a new one.

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 on how the tool behaves in different situations (HEAD vs not HEAD), which guides when it is appropriate. However, it does not explicitly state 'use this instead of git_commit when you want to amend the last commit' or list exclusions. The sibling tool name gives a strong hint, but explicit guidance would be stronger.

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. 2 tool updatesv0.1.2
    • First observedgit_commit
    • First observedgit_commit_amend

TDQS

A3.6/5.0
Disambiguation5/5

git_commit creates a new commit, while git_commit_amend modifies an existing commit (via amend or fixup). The purposes are clearly distinct and the descriptions explicitly define the boundary. No ambiguity exists between the two tools.

Naming Consistency5/5

Both tools follow the same `git_` prefix plus a verb (`commit`, `commit_amend`), creating a clear and predictable pattern. The naming is consistent and immediately conveys the action.

Tool Count3/5

With only two tools, the surface feels thin, even for a focused 'training wheels' server. While the tools are well-chosen for basic commit workflows, a couple more (e.g., log, status) would round out the set. It is borderline but not critically under-scoped.

Completeness3/5

The domain appears to be basic git commit operations, and the two tools cover creating and amending/fixing up commits. However, there are notable gaps such as inspecting commit history, checking repository status, or reverting changes, which an agent would likely need for a complete workflow.

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
    D
    maintenance
    A Git-enforced filesystem MCP server that integrates git with filesystem operations, enforcing commits on writes, providing reads with history, and supporting staged branching.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A secure, git-aware MCP server for working with local repositories, enabling file management, shell commands, and full git operations within allowed directories.
    607
    1
    GPL 3.0
  • A
    license
    A
    quality
    B
    maintenance
    A local MCP server that provides a safe, explicit set of Git operations for version control tasks like status, diff, branching, staging, committing, fetching, merging, and pushing.
    13
    26
    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/lava/mcp-git-training-wheels'

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