https://github.com/peterj/git-pr-mcp
A Model Context Protocol (MCP) server for Git and Pull Request operations, providing tools for repository management and PR workflows.
https://github.com/peterj/git-pr-mcp
Last synced: about 1 month ago
JSON representation
A Model Context Protocol (MCP) server for Git and Pull Request operations, providing tools for repository management and PR workflows.
- Host: GitHub
- URL: https://github.com/peterj/git-pr-mcp
- Owner: peterj
- Created: 2025-06-04T17:45:15.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2025-06-07T22:15:47.000Z (4 months ago)
- Last Synced: 2025-06-29T11:11:36.614Z (3 months ago)
- Language: Python
- Size: 57.6 KB
- Stars: 1
- Watchers: 0
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Git PR MCP Server
A Model Context Protocol (MCP) server for Git and Pull Request operations, providing tools for repository management and PR workflows.
Built with FastMCP and runs in SSE mode by default on `0.0.0.0:8000`.
## Features
This MCP server provides the following tools and capabilities:
**Core Git Operations (on specified repository path):**
- **get_git_status**: Get the current git status of a repository.
- **list_branches**: List all branches in the repository (with optional remote branches).
- **create_pr_summary**: Create a summary for a pull request based on git diff.
- **get_commit_history**: Get commit history for a branch.
- **get_git_diff**: Get git diff between commits, branches, or working directory.**Automated PR Workflow (operates on an internally managed "active" repository):**
- **clone_repository**: Clones a GitHub repository into a managed temporary directory, making it the "active" repository for subsequent operations. Automatically cleans up any previously active repository's temporary directory.
- **create_git_branch**: Creates a new branch in the active repository.
- **write_file_in_repo**: Creates or overwrites files within the active repository.
- **git_commit_changes**: Stages all changes (`git add .`) and commits them in the active repository.
- **git_push_branch**: Pushes a specified branch from the active repository to its remote origin.
- **create_github_pr**: Creates a pull request on GitHub for the active repository using the PyGithub library. Requires `GITHUB_TOKEN`.**State Management:**
- The server maintains the state of the currently "active" cloned repository (path, URL, owner, name) in an `active_repo_state.json` file. This allows some persistence across server restarts, though the temporary clone directory itself might be OS-managed.## Installation
1. Clone this repository:
```bash
git clone
cd git-pr-mcp
```2. Install using uv:
```bash
uv sync
```## Usage
The server runs in SSE mode by default on `0.0.0.0:9999` and is configured via environment variables. Here's a sample .env file:
```
FASTMCP_HOST=0.0.0.0
FASTMCP_PORT=9999
GITHUB_TOKEN=your_github_token
```### Quick Start
```bash
# Run with defaults (0.0.0.0:8000)
uv run python main.py# Or run the server module directly
uv run python -m src.git_pr_mcp.server
```You can then access the MCP server at `http://localhost:9999/sse`.