git_statusLABSCO SUMMARY
Everything local works out of the box; the one command that touches a remote is opt-in.
Reads, commits and branch operations are available immediately, while push stays behind an explicit write-access setting, so an agent cannot publish anything by accident. Two backends are offered — the Git CLI, or a pure-Go implementation that falls back to the CLI where it has to.
What it is
A Go binary that exposes Git operations as tools. It can watch more than one repository at once and falls back to the first one when a command does not name a repo.
What you get
- Working tree status, staged and unstaged diffs, and diffs between two branches or commits (git_status, git_diff_unstaged, git_diff_staged, git_diff)
- Commit history and the full contents of any single commit (git_log, git_show)
- Staging, committing, unstaging and branch work (git_add, git_commit, git_reset, git_create_branch, git_checkout)
- A new repository initialised in place (git_init)
- Every repository the server is watching, with its path and name (git_list_repositories)
- Pushing to a remote (git_push), which stays disabled until write access is explicitly enabled
- A setup command that installs the binary and registers it with your client, with your choice of which tools are auto-approved
Requirements
Go and a working Git installation, or one of the prebuilt binaries for Linux, macOS and Windows. Repository paths are given when the server starts, either as a flag or as plain arguments, and several can be listed at once.
Setup effort
One command — go install github.com/geropl/git-mcp-go@latest
USE CASES
Reviewing what you changed before committing
Read the staged and unstaged diffs separately, so you can see what is already queued and what is not.
Committing a change you have already agreed on
Stage the files and write the message in one exchange, without switching to a terminal.
Tracing when a line changed
Walk the log, then open the one commit that looks responsible and read it in full.
Working across several checkouts
List the repositories the server is watching, then run the same status or log query against the one you meant.
Starting a branch for the work you are about to do
Create it from the base branch you name and switch onto it.
14 tools
Listed in project docs. Your client may show a different list.
git_diff_unstagedgit_diff_stagedgit_diffgit_commitgit_addgit_resetgit_loggit_create_branchgit_checkoutgit_showgit_initgit_pushgit_list_repositoriesBEFORE YOU INSTALL
What to know first
Tools you get
14 tools named in the project's documentation.
Requires
- go on PATH
- Go 1.18 or later
INSTALLATION
Connect your client
Server setup
go install github.com/geropl/git-mcp-go@latestMCP Clients
Claude Desktop
{
"mcpServers": {
"git": {
"command": "<YOUR_PATH_TO_GIT_MCP_GO>",
"args": [
"serve",
"-r=<YOUR_PATH_TO_REPO1>,<YOUR_PATH_TO_REPO2>",
"--mode",
"shell"
]
}
}
}Cline
The project's own Cline route: download the release binary into the current folder, then its setup command copies it to ~/mcp-servers/git-mcp-go and registers it in Cline:
# Download linux binary for the latest release
RELEASE="$(curl -s https://api.github.com/repos/geropl/git-mcp-go/releases/latest)"
DOWNLOAD_URL="$(echo $RELEASE | jq -r '.assets[] | select(.name | contains("linux-amd64")) | .browser_download_url')"
curl -L -o ./git-mcp-go $DOWNLOAD_URL
chmod +x ./git-mcp-go
# Setup the mcp server with a single repository
./git-mcp-go setup -r <YOUR_PATH_TO_GIT_REPOSITORY> --tool=cline --auto-approve=allow-local-only
rm -f ./git-mcp-goThe download lines fetch the linux-amd64 build; on macOS or Windows save your platform's binary from https://github.com/geropl/git-mcp-go/releases as ./git-mcp-go instead. If you installed with go install, the binary is in $(go env GOPATH)/bin — run setup from there rather than ./git-mcp-go. <YOUR_PATH_TO_GIT_REPOSITORY> is the path of the repository the server should work on.