git-surgeon-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@git-surgeon-mcpsquash the last 3 commits into one with message 'Fix login bug'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
git-surgeon-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
execFilewith an argument array, so command injection is structurally impossible.No
-mquoting issues — messages are written to a temp file and applied viagit commit -F.Non-interactive rebase shim — rewording a non-HEAD commit normally needs two interactive editors; the server points
GIT_SEQUENCE_EDITOR/GIT_EDITORat generated scripts that do it programmatically.Clean-tree checks — every operation requires a clean
git statusand auto-aborts (git rebase --abort) on failure.
Tools
Tool | Description |
| Structured |
| Squash the last N commits with a new message. |
| Reword any commit (HEAD or buried in history). |
| 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 buildAdd 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 toolsgit_get_historyGet Git HistoryA
Returns a structured list of recent commits (hash, author, date, message) from HEAD.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of recent commits to return. Defaults to 10. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| new_message | Yes | The commit message to apply to the resulting squashed commit. | |
| commit_count | Yes | Number of most-recent commits to squash together. Must be >= 2. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| commit_hash | Yes | The hash (full or abbreviated, min 4 hex chars) of the commit to reword. | |
| new_message | Yes | The replacement commit message. |
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
v1.0.0- First observed
git_get_history - First observed
git_quick_squash - First observed
git_rescue_reflog - First observed
git_reword_commit
TDQS
Each tool has a clear, non-overlapping purpose: retrieving commit history, squashing commits, rewording messages, and recovering lost commits. No confusion between tools.
All tools follow a consistent 'git_verb_noun' pattern in snake_case, e.g., git_get_history, git_quick_squash. No deviations.
With 4 tools, the server is well-scoped for a focused 'git surgery' domain, addressing key operations without unnecessary bloat.
Covers essential history viewing, squashing, rewording, and rescue. Missing interactive rebase or commit splitting, but the core surgical workflow is largely complete.
Maintenance
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
A MCP server built for developers enabling Git based project management with project and personal…
An MCP server that gives your AI access to the source code and docs of all public github repos
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that gives coding agents instant insight into any Git repository — no guessing, no hallucination.12919MIT
- AlicenseNot gradedqualityCmaintenanceAn 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
- AlicenseNot gradedqualityDmaintenanceAn 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.62MIT
- AlicenseNot gradedqualityAmaintenanceAn MCP server that gives AI agents a full, safe interface to Git with automatic backups, isolated worktrees, and structured JSON outputs.43MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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