Skip to main content
Glama
pratik73

git-mcp

by pratik73
README.md
# git-mcp

An stdio-based [MCP](https://modelcontextprotocol.io/) server that automates creating **Pull Requests** (GitHub) and **Merge Requests** (GitLab) using git CLI, repository templates, and LLM-assisted content generation.

## Features

- πŸ” **Auto-detects platform** (GitHub / GitLab) from your git remote URL
- πŸ“ **Template-aware** β€” uses your repo's PR/MR templates if available
- πŸ€– **LLM-powered** β€” when no template exists, the MCP client generates context-aware PR/MR content from your diff and commit log
- πŸš€ **One-step publish** β€” creates PRs/MRs directly via GitHub & GitLab APIs

## Tools

| Tool | Description |
|------|-------------|
| `get_repo_info` | Returns current branch, default branch, remote URL, and detected platform |
| `list_templates` | Lists all PR/MR templates found in the repository |
| `prepare_merge_request` | Gathers diff, commit log, changed files, and template data for the LLM to compose PR/MR content |
| `publish_merge_request` | Creates a PR (GitHub) or MR (GitLab) with the given title and body |

## Setup

### Prerequisites

- [Node.js](https://nodejs.org/) v18+
- Git CLI installed and accessible in `PATH`

### Install

```bash
git clone https://github.com/your-username/git-mcp.git
cd git-mcp
npm install
npm run build
```

### Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `GITHUB_TOKEN` | For GitHub repos | GitHub Personal Access Token with `repo` scope |
| `GITLAB_TOKEN` | For GitLab repos | GitLab Personal Access Token with `api` scope |

### Configure MCP Client

Add to your MCP client configuration (e.g. Claude Desktop `claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "git-mcp": {
      "command": "node",
      "args": ["C:/path/to/git-mcp/dist/index.js"],
      "env": {
        "GITHUB_TOKEN": "ghp_your_token_here",
        "GITLAB_TOKEN": "glpat-your_token_here"
      }
    }
  }
}
```

## Usage

Once configured, ask your MCP client (e.g. Claude) something like:

> "Create a pull request for my current branch"

The workflow:
1. **`get_repo_info`** β€” The LLM checks your repo context
2. **`prepare_merge_request`** β€” Gathers diff, log, and templates
3. The LLM composes a PR/MR title and body (using your template if available)
4. **`publish_merge_request`** β€” Publishes to GitHub or GitLab

## Development

```bash
npm run dev    # Watch mode β€” recompiles on changes
npm run build  # One-time build
npm start      # Run the server
```

## Template Discovery

The server searches for templates in these locations:

**GitHub:**
- `.github/pull_request_template.md`
- `.github/PULL_REQUEST_TEMPLATE.md`
- `.github/PULL_REQUEST_TEMPLATE/default.md`
- `docs/pull_request_template.md`
- `PULL_REQUEST_TEMPLATE.md`

**GitLab:**
- `.gitlab/merge_request_templates/Default.md`
- `.gitlab/merge_request_templates/default.md`

## License

MIT

TDQS

A3.6/5.0

Scored across 4 tools

Disambiguation4/5

Each tool has a clearly distinct purpose: repo info, templates, preparing data for an MR, and publishing. The prepare_merge_request and publish_merge_request pair is well-separated (gather vs. send), and list_templates is distinct from prepare's inclusion of template data. Only minor ambiguity exists between list_templates and prepare_merge_request, as both deal with templates, but their roles differ.

Naming Consistency4/5

Names follow a consistent verb_noun pattern (get_repo_info, list_templates, prepare_merge_request, publish_merge_request). The pattern is slightly inconsistent in that get and list are different verbs used for the same semantic family (repo vs. templates), but overall verbs are descriptive and the style is uniform.

Tool Count4/5

Four tools is a reasonable, focused scope for a git MR/PR workflow helper. It's slightly thin in the sense that there's no tool for fetching the default branch or updating an existing MR, but the count is appropriate for the stated purpose of composing and publishing merge requests.

Completeness3/5

The surface covers the core workflow of creating and publishing an MR/PR, which is good. However, there are notable gaps: no tool to update/edit an existing MR, no tool to list existing MRs, and no way to inspect or merge a published MR. The workflow is complete for creation but lacks management lifecycle operations.

Maintenance

ActivityInactive
ResponsivenessNo issues