Skip to main content
Glama
SiddheshDongare

FastMCP GitHub Automation Server

README.md
[![MseeP.ai Security Assessment Badge](https://mseep.net/pr/siddheshdongare-git-pilot-badge.png)](https://mseep.ai/app/siddheshdongare-git-pilot)

# GIT-Pilot

<div align="center">
  <img src="images/logo.jpg" alt="GIT-Pilot Logo" width="200"/>
</div>

[![Python Version](https://img.shields.io/badge/python-3.12%2B-blue)](https://www.python.org/downloads/)
[![License](https://img.shields.io/badge/license-MIT-green)](LICENSE)
[![GitHub](https://img.shields.io/badge/GitHub-GIT--Pilot-blue)](https://github.com/yourusername/GIT-Pilot)

<div align="center">
  <h3>โญ๏ธ If you find this project helpful, please give it a star! โญ๏ธ</h3>
</div>

GIT-Pilot is a powerful GitHub automation and management tool that provides a comprehensive API wrapper for GitHub operations. It simplifies GitHub interactions through a FastMCP-based server, making it easy to manage repositories, pull requests, issues, and more.

## ๐ŸŒŸ Features

### ๐Ÿ” Authentication & Security
- Secure token management with encryption using Fernet
- Token expiration and automatic cleanup
- Rate limit handling and automatic retries
- Configurable authentication timeouts

### ๐Ÿ“ฆ Repository Management
- Create and manage repositories
- Handle branches and commits
- File operations (create, update, delete)
- Repository search and filtering
- Commit comparison and history

### ๐Ÿ”„ Pull Request Operations
- Create and manage pull requests
- Merge strategies (merge, squash, rebase)
- Status check validation
- Conflict detection and handling
- Draft PR support

### ๐Ÿ“ Issue Management
- Create and update issues
- Label management
- Assignee handling
- Comment management
- Issue search and filtering

### ๐Ÿ›  Technical Features
- Thread-safe operations
- Resource management
- Comprehensive error handling
- Detailed logging
- Type safety
- Configuration management
- FastMCP server integration

## ๐Ÿš€ Getting Started

### Prerequisites
- Python 3.12 or higher
- GitHub account
- GitHub Personal Access Token
- FastMCP CLI (optional)

### Installation

1. Clone the repository:
```bash
git clone https://github.com/yourusername/GIT-Pilot.git
cd GIT-Pilot
```

2. Install uv (if not already installed):
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```

3. Create and activate a virtual environment:
```bash
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
```

4. Install the package using uv:
```bash
uv pip install -e .
```

5. Set up environment variables:
Create a `.env` file in the project root:
```env
GITHUB_TOKEN=your_github_token_here
```

### Basic Usage

#### Setting Up Claude Desktop Integration

1. Start the GIT-Pilot server:
```bash
uv run main.py
```

2. Download and install [Claude Desktop](https://claude.ai/download)

3. Configure Claude Desktop:
   - Open Claude Desktop
   - Go to `File > Settings > Developer > Edit Config`
   - Add the following configuration:
```json
{
    "mcpServers": {
        "GIT-Pilot": {
            "command": "uv",
            "args": [
                "--directory",
                "path\\to\\repo",
                "run",
                "main.py"
            ]
        }
    }
}
```
4. Restart Claude Desktop
5. Look for the hammer icon in the chat window - this indicates the MCP server is ready to use

### API Examples

```python
# Create a repository
await call_tool("create_repository",
    name="my-repo",
    description="My awesome repository",
    private=True,
    has_issues=True,
    has_wiki=True,
    has_projects=True,
    auto_init=True
)

# Create a pull request
await call_tool("create_pull_request",
    repo_path="owner/repo",
    title="New feature",
    head="feature-branch",
    base="main",
    body="Description of changes",
    draft=False
)

# List commits with filtering
await call_tool("list_commits",
    repo_path="owner/repo",
    branch="main",
    author="username",
    since="2024-01-01",
    until="2024-04-21",
    max_results=30
)
```

## ๐Ÿ”ง Configuration

The service can be configured through the `Config` class:

```python
@dataclass
class Config:
    TOKEN_TTL_HOURS: int = 24
    MAX_STORED_TOKENS: int = 1000
    CLEANUP_INTERVAL_SECONDS: int = 3600
    MAX_RETRIES: int = 3
    RETRY_DELAY_SECONDS: int = 5
    MAX_RESULTS_PER_PAGE: int = 100
    ENCRYPTION_KEY: bytes = Fernet.generate_key()
```

## ๐Ÿ›ก Security

- Tokens are encrypted at rest using Fernet
- Automatic token expiration and cleanup
- Rate limit protection with retries
- Input validation
- Comprehensive error handling
- Secure token cleanup

## ๐Ÿ”„ Rate Limiting

The service includes built-in rate limit handling:
- Automatic retry on rate limit
- Configurable retry attempts
- Delay between retries
- Rate limit status logging
- Exponential backoff

## ๐Ÿงช Error Handling

Comprehensive error handling for:
- Authentication failures
- API errors
- Rate limits
- Invalid inputs
- Resource conflicts
- Network issues
- Token validation
- File operations

## ๐Ÿ“ˆ Logging

Detailed logging with:
- Timestamp
- Log level
- Function name
- Line number
- Error details
- Stack traces
- Rate limit information
- Token operations

## ๐Ÿค Contributing

We welcome contributions! Please follow these steps:

1. Fork the repository
2. Create a feature branch
3. Commit your changes
4. Push to the branch
5. Create a Pull Request

## ๐Ÿ“ License

This project is licensed under the GNU General Public License v3.0 - see the [LICENSE](LICENSE) file for details.

## ๐Ÿ™ Acknowledgments

- [PyGithub](https://github.com/PyGithub/PyGithub) for the GitHub API wrapper
- [FastMCP](https://gofastmcp.com) for the server framework
- [Fernet](https://cryptography.io/en/latest/fernet/) for secure token encryption
---

Made with โค๏ธ by the GIT-Pilot team