Skip to main content
Glama
git-mcp

git-mcp

by pratik73

git-mcp

An stdio-based MCP 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

Related MCP server: GitHub PR Review Server

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 v18+

  • Git CLI installed and accessible in PATH

Install

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):

{
  "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

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

Available Tools

4 tools
get_repo_infoA

Get information about the current git repository: current branch, default branch, remote URL, and detected platform (github/gitlab).

Inputs: cwd (required).

list_templatesA

List all available Pull Request / Merge Request templates found in the repository.

Inputs: cwd (required).

prepare_merge_requestA

Gather all the data needed to create a Pull Request or Merge Request:

  • Git diff between the current branch and the default branch

  • Commit log

  • List of changed files

  • PR/MR template (if one exists in the repo)

  • Repository metadata (platform, owner, repo)

The returned data is intended for the LLM to use when composing the PR/MR title and body. If a template is found, the LLM should fill it in. Otherwise, the LLM should generate appropriate content based on the diff and commit log.

Inputs: cwd (required), base.

publish_merge_requestB

Publish a Pull Request (GitHub) or Merge Request (GitLab) with the given title and body. The platform is auto-detected from the git remote URL. Auth tokens are read from environment variables: GITHUB_TOKEN or GITLAB_TOKEN.

Inputs: cwd (required), body (required), title (required), base, +1 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    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.

    Related MCP Connectors

    Related MCP Servers