# Git MCP Server
A Model Context Protocol (MCP) server for Git operations that provides comprehensive Git functionality to MCP clients like Claude Desktop.
## Features
- **Context-aware**: Automatically detects the current project based on working directory
- **Comprehensive Git operations**: status, branches, diffs, logs, file contents, commits, and more
- **Multi-project support**: Works seamlessly across different project directories
- **Error handling**: Proper MCP error responses
- **Branch management**: Create, switch, and manage branches
- **Remote operations**: Push, pull, and fetch from remote repositories
## Installation
### Option 1: Global Installation (Recommended)
```bash
npm install -g git-mcp-server
```
### Option 2: Local Development Setup
1. **Clone and install:**
```bash
git clone https://github.com/yourusername/git-mcp-server.git
cd git-mcp-server
npm install
```
2. **Build the project:**
```bash
npm run build
```
## Configuration
### Claude Desktop
Add this server to your Claude Desktop configuration file:
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"git": {
"command": "git-mcp-server",
"args": []
}
}
}
```
### Other MCP Clients
For other MCP clients, use the server binary directly:
```bash
git-mcp-server
```
The server will automatically use the current working directory as the Git repository context.
## Usage
Once configured, you can use Git operations through your MCP client. The server automatically detects the Git repository in your current working directory.
### Example Commands
Ask your MCP client (like Claude) to perform Git operations:
- "What's the current git status?"
- "Show me the diff with the main branch"
- "Create a new branch called feature/new-feature"
- "Commit these changes with message 'Fix bug in parser'"
- "Push the current branch to origin"
### Testing the Server
You can test the server manually from any Git repository:
```bash
cd /path/to/your/git/repo
git-mcp-server
```
### Available Tools
#### Repository Information
- `git_status` - Get current git status
- `git_current_branch` - Get current branch name
- `git_staged_changes` - Get staged changes
- `git_working_directory` - Get current working directory info
#### File and History Operations
- `git_diff` - Show diff between branches/commits
- `git_log` - Get commit history
- `git_show_file` - Show file contents at specific commit
#### Branch Operations
- `git_branches` - List all branches
- `git_checkout` - Switch to different branch or create new branch
#### Staging and Commit Operations
- `git_add` - Add files to staging area
- `git_commit` - Create commits with message and files
#### Remote Operations
- `git_pull` - Pull changes from remote repository
- `git_fetch` - Fetch changes from remote without merging
#### Repository Management
- `git_init` - Initialize a new git repository
## Prerequisites
- Node.js 18+
- npm or yarn
- Git installed on your system
## Contributing
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request
## License
MIT License - see [LICENSE](LICENSE) file for details.
## Project Structure
```
git-mcp-server/
├── package.json # Project dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── src/
│ └── index.ts # Main server implementation
├── build/
│ └── index.js # Compiled JavaScript (generated)
└── README.md # This file
```
## Development
- `npm run build` - Build the TypeScript code
- `npm run dev` - Watch mode for development
- `npm start` - Run the built server