Skip to main content
Glama
mustafatekiinn

git-surgeon-mcp

git-surgeon-mcp

License Node TypeScript MCP

An MCP server that gives AI agents safe, non-interactive Git history editing — squashing, rewording, and reflog rescue — without ever hanging on a Vim buffer.

Why

Agents shell out to Git fine for everyday commands, but git rebase -i and git commit --amend (without -m) open an interactive editor and hang forever waiting for input that never comes. Agents then resort to risky fallbacks like git reset --hard. git-surgeon-mcp wraps these operations in clean, programmatic tools instead.

Related MCP server: MCP Git Manager

How it's safe

  • No shell execution — every Git call uses execFile with an argument array, so command injection is structurally impossible.

  • No -m quoting issues — messages are written to a temp file and applied via git commit -F.

  • Non-interactive rebase shim — rewording a non-HEAD commit normally needs two interactive editors; the server points GIT_SEQUENCE_EDITOR/GIT_EDITOR at generated scripts that do it programmatically.

  • Clean-tree checks — every operation requires a clean git status and auto-aborts (git rebase --abort) on failure.

Tools

Tool

Description

git_get_history

Structured git log output.

git_quick_squash

Squash the last N commits with a new message.

git_reword_commit

Reword any commit (HEAD or buried in history).

git_rescue_reflog

Find dangling/unreachable commits via reflog + fsck.

Setup

git clone https://github.com/mustafatekiinn/git-surgeon-mcp.git
cd git-surgeon-mcp
npm install && npm run build

Add to your client's MCP config (Claude Desktop's claude_desktop_config.json, Cursor's .cursor/mcp.json, etc.), using the absolute path to dist/index.js:

{
  "mcpServers": {
    "git-surgeon": {
      "command": "node",
      "args": ["/absolute/path/to/git-surgeon-mcp/dist/index.js"]
    }
  }
}

Restart the client — the four tools are now available whenever the agent works inside a Git repo.

Requirements

  • Node.js 18+, Git on PATH, a local Git repository

Safety Notes

  • Squashing/rewording rewrites history — force-push (--force-with-lease) if already pushed, and coordinate with collaborators first.

  • All operations abort cleanly, leaving no partial state, if the working tree is dirty or a step fails.

License

MIT

Available Tools

4 tools
git_get_historyGet Git HistoryA

Returns a structured list of recent commits (hash, author, date, message) from HEAD.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of recent commits to return. Defaults to 10.

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description bears the full burden of disclosing behavior. It correctly indicates the return format (structured list with specific fields) and that data comes from HEAD. However, it does not explicitly state that the operation is read-only, requires no authentication, or has no side effects. While these traits can be inferred, the description could be more transparent.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the purpose (returns a list of recent commits from HEAD). Every part is necessary and there is no wasted text.

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 simplicity of the tool (one parameter, no output schema, no nested objects), the description is nearly complete. It specifies the fields returned (hash, author, date, message) and the source (HEAD). A small gap is that it does not mention the default commit count or the maximum (500) documented in the schema. Still, for a straightforward read operation, it is largely sufficient.

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 covers the single parameter 'count' with a description, achieving 100% coverage. The tool description does not add any additional semantic meaning beyond what the schema already provides. Per guidelines, baseline is 3 when schema coverage is high and the description adds no extra value for parameters.

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 that the tool returns a structured list of recent commits from HEAD, specifying the exact fields (hash, author, date, message). This verb+resource+scope makes its purpose distinct from sibling tools like git_quick_squash, git_reword_commit, or git_rescue_reflog.

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 does not explicitly state when to use this tool vs alternatives. While the context of sibling tool names implies different operations, there is no guidance on when not to use it (e.g., for full history or filtered history). The description is adequate but lacks explicit usage boundaries.

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

git_quick_squashQuick Squash CommitsA

Merges the last N commits on HEAD into a single commit via a soft reset, applying a clean new commit message. Requires a clean working directory. Rewrites history.

ParametersJSON Schema
NameRequiredDescriptionDefault
new_messageYesThe commit message to apply to the resulting squashed commit.
commit_countYesNumber of most-recent commits to squash together. Must be >= 2.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that the operation rewrites history and requires a clean state, which are key behavioral traits. It could additionally note that the operation is destructive once pushed.

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 two sentences, front-loaded with the primary action, and every sentence provides necessary information. No filler or redundancy.

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 lack of output schema and annotations, the description covers the essential aspects: what it does, prerequisite, and a side effect. It could be more complete by noting irreversibility after force push, but the core is sufficient.

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% with clear descriptions for both parameters (commit_count and new_message). The tool description adds no further meaning beyond restating the schema, so a baseline score of 3 is appropriate.

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 action: merging the last N commits into one via a soft reset with a new message. It is specific and distinguishes from sibling tools like git_get_history (read-only) and git_reword_commit (single commit).

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 mentions a critical prerequisite (clean working directory) and a consequence (rewrites history). It does not explicitly compare to alternatives, but the context is clear enough for an agent to decide when to use this tool.

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

git_rescue_reflogRescue Lost Commits via ReflogA

Scans the git reflog and repository object database to identify recent HEAD movements and truly dangling/lost commits (e.g. from a bad rebase or hard reset) so the agent can recover them by hash.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations exist, so the description carries full burden. It describes the read-only scanning behavior and identifies lost commits, but does not explicitly state non-destructiveness, permissions, or output format. Some behavioral details are implied but not confirmed.

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

Conciseness4/5

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

The description is a single sentence that is moderately dense but front-loaded with the action. Every clause adds value, though it could be slightly restructured for readability. No wasted words.

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 zero parameters and no output schema, the description covers the tool's core function and use cases. However, it lacks explicit details on the return format (e.g., list of hashes) and does not fully compensate for the missing output schema, leaving some ambiguity for an agent.

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 coverage is 100% (none defined). The description adds context beyond the empty schema by explaining the tool's purpose and usage, meeting the baseline of 4 for zero-parameter tools.

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 scans the git reflog and object database to identify HEAD movements and dangling/lost commits, with specific examples like bad rebase or hard reset, and explains the purpose (recovery by hash). It is distinct from siblings (history, squash, reword) which handle different tasks.

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 explicitly states when to use this tool (to find lost commits from rebase or hard reset) and implies recovery by hash. It does not list exclusions or alternatives, but the context is sufficient for an agent to understand its specialized role.

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

git_reword_commitReword CommitA

Updates the message of a specific commit in history. If it is the latest commit (HEAD), uses git commit --amend. Otherwise performs a fully non-interactive rebase sequence (no editor prompts). Requires a clean working directory. Rewrites history for the target commit and everything after it.

ParametersJSON Schema
NameRequiredDescriptionDefault
commit_hashYesThe hash (full or abbreviated, min 4 hex chars) of the commit to reword.
new_messageYesThe replacement commit message.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description fully covers behavioral traits: mentions non-interactive rebase, no editor prompts, rewrites history for the target commit and everything after. Adequately discloses side effects and prerequisites.

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: two sentences, front-loaded with the main verb and resource. Every sentence adds essential information without redundancy.

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 simplicity (2 params, no output schema), the description covers prerequisites, behavior, and consequences. It is complete enough for an agent to understand and invoke the tool 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 coverage is 100%, so baseline is 3. The description does not add additional meaning beyond what the schema already provides for commit_hash and new_message.

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?

Clearly states the tool 'updates the message of a specific commit' and distinguishes between HEAD and non-HEAD cases. Specifies the method (amend vs. rebase). Differentiates from siblings by naming sibling tools 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 Guidelines3/5

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

Provides a prerequisite ('requires a clean working directory') but does not explicitly compare to siblings or state when not to use this tool. The context lists sibling tools, but the description itself offers no guidance on selection.

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. 4 tool updatesv1.0.0
    • First observedgit_get_history
    • First observedgit_quick_squash
    • First observedgit_rescue_reflog
    • First observedgit_reword_commit

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a clear, non-overlapping purpose: retrieving commit history, squashing commits, rewording messages, and recovering lost commits. No confusion between tools.

Naming Consistency5/5

All tools follow a consistent 'git_verb_noun' pattern in snake_case, e.g., git_get_history, git_quick_squash. No deviations.

Tool Count5/5

With 4 tools, the server is well-scoped for a focused 'git surgery' domain, addressing key operations without unnecessary bloat.

Completeness4/5

Covers essential history viewing, squashing, rewording, and rescue. Missing interactive rebase or commit splitting, but the core surgical workflow is largely complete.

Maintenance

ActivitySlowing
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
    A
    quality
    D
    maintenance
    An MCP server that gives coding agents instant insight into any Git repository — no guessing, no hallucination.
    1
    29
    19
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that gives AI agents git repository access: status, log, diff, branch, commit, push, pull, tag, stash, remotes — 24 tools, zero dependencies, pure Python stdlib (subprocess).
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that gives AI assistants deep understanding of your local Git repositories, providing instant repo overviews, change summaries, blame analysis, changelogs, branch health checks, and history search.
    62
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that gives AI agents a full, safe interface to Git with automatic backups, isolated worktrees, and structured JSON outputs.
    43
    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/mustafatekiinn/git-surgeon-mcp'

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