8000 GitHub - geropl/git-mcp-go at v1.1.1
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

geropl/git-mcp-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Git MCP Server (Go)

A Model Context Protocol (MCP) server for Git repository interaction and automation, written in Go. This server provides tools to read, search, and manipulate Git repositories via Large Language Models.

Features

This MCP server provides the following Git operations as tools:

  • git_status: Shows the working tree status
  • git_diff_unstaged: Shows changes in the working directory that are not yet staged
  • git_diff_staged: Shows changes that are staged for commit
  • git_diff: Shows differences between branches or commits
  • git_commit: Records changes to the repository
  • git_add: Adds file contents to the staging area
  • git_reset: Unstages all staged changes
  • git_log: Shows the commit logs
  • git_create_branch: Creates a new branch from an optional base branch
  • git_checkout: Switches branches
  • git_show: Shows the contents of a commit
  • git_init: Initialize a new Git repository
  • git_push: Pushes local commits to a remote repository (requires --write-access flag)

Installation

Prerequisites

  • Go 1.18 or higher
  • Git installed on your system

Download Prebuilt Binaries

You can download prebuilt binaries for your platform from the GitHub Releases page.

Building from Source

# Clone the repository
git clone https://github.com/geropl/git-mcp-go.git
cd git-mcp-go

# Build the server
go build -o git-mcp-go .

Usage

Command Line Options

Usage of git-mcp-go:
  -r string
        Git repository path (shorthand)
  --repository string
        Git repository path
  --mode string
        Git operation mode: 'shell' or 'go-git' (default "shell")
  -v    Enable verbose logging
  --write-access
        Enable write access for remote operations (push) (default false)

Note: All non-shorthand flags require a leading double dash (--).

The --mode flag allows you to choose between two different implementations:

  • shell: Uses the Git CLI commands via shell execution (default)
  • go-git: Uses the go-git library for Git operations where possible

The --write-access flag enables operations that modify remote state (currently only the push operation). By default, this is disabled for safety.

Running the Server

# Run with a specific repository
./git-mcp-go -r /path/to/git/repository

# Run with verbose logging
./git-mcp-go -v -r /path/to/git/repository

# Run with go-git implementation
./git-mcp-go --mode go-git -r /path/to/git/repository

# Enable write access for remote operations
./git-mcp-go -r /path/to/git/repository --write-access

Integration with Claude Desktop

Automatic Installation and Registration

The easiest way to install and register the Git MCP server with Cline is to use the provided registration script:

# Download and run the registration script with a repository path (required)
curl -s https://raw.githubusercontent.com/geropl/git-mcp-go/main/scripts/register-cline.sh | bash -s -- ~/my-repo

# With write access enabled
curl -s https://raw.githubusercontent.com/geropl/git-mcp-go/main/scripts/register-cline.sh | bash -s -- ~/my-repo true

The script will:

  1. Check if git-mcp-go is already installed, and download it if needed
  2. Register it with Cline by updating the MCP settings file
  3. Configure it with the specified repository path and optional parameters

Manual Configuration

Alternatively, you can manually add this to your claude_desktop_config.json:

"mcpServers": {
  "git": {
    "command": "/path/to/git-mcp-go",
    "args": ["-r", "/path/to/git/repository", "--mode", "shell"]
  }
}

Or if you prefer the go-git implementation with write access enabled:

"mcpServers": {
  "git": {
    "command": "/path/to/git-mcp-go",
    "args": ["-r", "/path/to/git/repository", "--write-access", "--mode", "go-git"]
  }
}

Implementation Details

This server is implemented using:

  • mcp-go: Go SDK for the Model Context Protocol
  • go-git: Pure Go implementation of Git (used for the go-git mode)

For operations not supported by go-git, the server falls back to using the Git CLI.

Testing

The server includes comprehensive tests for all Git operations. The tests are designed to run against both implementation modes:

# Run all tests
go test ./pkg -v

# Run specific tests
go test ./pkg -v -run TestGitOperations/push

The test suite creates temporary repositories for each test case and verifies that the operations work correctly in both modes.

Continuous Integration

This project uses GitHub Actions for continuous integration and deployment:

  • Automated tests run on every pull request to the main branch
  • Releases are created when a tag with the format v* is pushed
  • Each release includes binaries for multiple platforms:
    • Linux (amd64, arm64)
    • macOS (amd64, arm64)
    • Windows (amd64)

To create a new release:

# Tag the current commit
git tag v1.0.0

# Push the tag to GitHub
git push origin v1.0.0

Development

VSCode Configuration

This repository includes VSCode configuration files in the .vscode directory:

  • settings.json: Editor settings for Go development
  • launch.json: Debug configurations for running the server
  • tasks.json: Common tasks like build, test, and run
  • extensions.json: Recommended extensions for this project

These configurations are shared with the repository, ensuring a consistent development experience for all contributors.

License

This project is licensed under the MIT License.

About

Git MCP based on mcp-go

Resources

Stars

Watchers

Forks

Packages

No packages published
0