git-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| git_status | Operation: Inspect repository status without mutation. Returns: repository_id, branch and HEAD, opaque index_tree, worktree_snapshot_id, and exact path entries. Defaults: inspect the complete repository status. Excludes: read-only; no index refresh or write, object creation, file contents, or remote access. |
| git_diff | Operation: Read a byte-limited worktree or staged diff. Returns: repository_id, mode, diff text, byte count, and truncation flag; no durable request identifier. Defaults: omitted paths means all paths, and omitted max_bytes is 1000000. Excludes: read-only; no external diff driver, patch application, Git-state mutation, or remote access. |
| git_switch_createA | Operation: Create and switch to one new branch from the exact expected_branch and exact expected HEAD. Returns: request_id, repository_id, the created branch, and unchanged head; no session identifier. Defaults: a string expected_branch requires that attached branch, while null requires detached HEAD. Excludes: existing branch checkout, force or reset, branch or HEAD mismatch, dirty or untracked state, and remote access. |
| git_addA | Operation: Stage only declared literal paths in a normal stage session or owned merge session. Returns: request_id, repository_id, mode, stage_id or merge_session_id, opaque index_tree, staged paths, and unresolved paths. Defaults: omitting both IDs selects normal first-add mode; stage_id and merge_session_id are mutually exclusive. Excludes: ordinary directories, globs, pathspec magic, unrequested paths, and unowned merge paths. |
| git_restore_staged | Operation: Restore declared paths owned by one stage_id from HEAD into the index. Returns: request_id, repository_id, the remaining or null stage_id, opaque index_tree, and remaining owned paths. Defaults: all inputs are required and the session remains while owned changes remain. Excludes: worktree changes, HEAD reset, unowned paths, ordinary directories, and globs. |
| git_restore_worktreeA | Operation: Restore declared tracked worktree paths from the current index after validating the supplied snapshot guard. Returns: request_id, repository_id, restored paths, and a new worktree_snapshot_id. Defaults: all inputs are required and the current index is the only content source. Excludes: index mutation, untracked paths or deletion, directories, globs, and unrequested paths. |
| git_commitA | Operation: Commit the exact index owned by one stage_id with native hooks and signing disabled. Returns: request_id, repository_id, commit and tree object IDs, hook_changed_paths, and signing policy; a rejected pre-commit or commit-msg hook returns HOOK_FAILED with only its allowlisted hook kind. Defaults: all inputs are required, native hooks run, and signing stays disabled. Excludes: raw hook output or exit status, amend, arbitrary index content, implicit staging, push, and hook bypass. |
| git_fetchA | Operation: Fetch origin heads into the fixed origin-tracking namespace under a constrained policy. Returns: request_id, repository_id, fetch_id, before and after refs, sanitized remote identity, and fetch time. Defaults: origin, standard upload-pack, and no tags, prune, or submodules. Excludes: caller remote or refspec, custom helper, merge, tag updates, nested repository mutation, and retry. |
| git_mergeA | Operation: Merge the exact remote_ref and object bound to one fetch_id. Returns: request_id, repository_id, head, nullable merge_session_id, and conflicted paths. Defaults: allow fast-forward or a native merge commit; conflicts create an owned session. Excludes: rebase, arbitrary local refs or unobserved object IDs, and external merge sessions. |
| git_merge_continueA | Operation: Continue the exact owned merge_session_id after all conflicts are resolved. Returns: request_id, repository_id, and resulting head and commit object IDs. Defaults: all inputs are required, native hooks run, and signing stays disabled. Excludes: external merge sessions, unresolved conflicts, arbitrary commits or refs, and retry. |
| git_merge_abortA | Operation: Abort the exact owned merge_session_id and restore its original merge state. Returns: request_id, repository_id, and the restored head object ID. Defaults: all inputs are required and owned cleanup follows durable completion. Excludes: external merge sessions, generic reset, unrelated paths, and retry. |
| git_pushA | Operation: Push current branch HEAD to the same branch on origin using expected-remote CAS and ancestry proof. Returns: request_id, repository_id, local_head, and remote_head object IDs. Defaults: origin and current branch are fixed, an internal exact lease is used, and null expectation means absence. Excludes: non-fast-forward updates, caller force or refspec, tags, delete, and automatic retry. |
| git_operation_getA | Operation: Read the result stored for request_id. Returns: the stored terminal result, including original status, data, request_id, and repository_id when present. Defaults: lookup only; no repository input is required. Excludes: Git execution, repository mutation, repository lock acquisition, retry, and result reconstruction. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 10 tools
Each tool targets a distinct Git operation (branch creation, staging, fetch, commit, merge, push, result retrieval) with no overlap. The merge-related tools (merge, continue, abort) are clearly differentiated by their stage in the merge lifecycle.
All tool names follow a consistent 'git_' prefix + snake_case verb_noun pattern (e.g., git_switch_create, git_restore_worktree, git_merge_continue). The naming is predictable and easy to parse.
With 10 tools, the set is well-scoped for a focused Git workflow (branch, stage, commit, fetch, merge, push). It avoids bloat while covering essential operations, and each tool serves a clear purpose.
The tool surface covers core development operations (add, commit, push, fetch, merge, branch creation) but lacks common operations like log, diff, or stash. While the set is coherent for a linear workflow, minor gaps reduce coverage.