GIT-Pilot

Uma poderosa ferramenta de automação e gerenciamento do GitHub que fornece um wrapper de API abrangente para operações do GitHub

Documentação

MseeP.ai Security Assessment Badge

GIT-Pilot

GIT-Pilot Logo

Python Version License GitHub

⭐️ Se você acha este projeto útil, dê uma estrela! ⭐️

O GIT-Pilot é uma ferramenta poderosa de automação e gerenciamento do GitHub que fornece um wrapper abrangente de API para operações no GitHub. Ele simplifica as interações com o GitHub por meio de um servidor baseado em FastMCP, facilitando o gerenciamento de repositórios, pull requests, issues e muito mais.

🌟 Recursos

🔐 Autenticação e Segurança

  • Gerenciamento seguro de tokens com criptografia usando Fernet
  • Expiração de token e limpeza automática
  • Tratamento de limite de requisições e novas tentativas automáticas
  • Timeouts de autenticação configuráveis

📦 Gerenciamento de Repositórios

  • Criar e gerenciar repositórios
  • Lidar com branches e commits
  • Operações de arquivos (criar, atualizar, excluir)
  • Pesquisa e filtragem de repositórios
  • Comparação de commits e histórico

🔄 Operações de Pull Requests

  • Criar e gerenciar pull requests
  • Estratégias de merge (merge, squash, rebase)
  • Validação de status de verificação
  • Detecção e tratamento de conflitos
  • Suporte a PRs em rascunho (draft)

📝 Gerenciamento de Issues

  • Criar e atualizar issues
  • Gerenciamento de labels
  • Tratamento de responsáveis (assignees)
  • Gerenciamento de comentários
  • Pesquisa e filtragem de issues

🛠 Recursos Técnicos

  • Operações seguras para threads
  • Gerenciamento de recursos
  • Tratamento abrangente de erros
  • Logging detalhado
  • Segurança de tipos
  • Gerenciamento de configuração
  • Integração com servidor FastMCP

🚀 Começando

Pré-requisitos

  • Python 3.12 ou superior
  • Conta no GitHub
  • Token de Acesso Pessoal do GitHub
  • CLI do FastMCP (opcional)

Instalação

  1. Clone o repositório:
git clone https://github.com/yourusername/GIT-Pilot.git
cd GIT-Pilot
  1. Instale o uv (se ainda não estiver instalado):
curl -LsSf https://astral.sh/uv/install.sh | sh
  1. Crie e ative um ambiente virtual:
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
  1. Instale o pacote usando uv:
uv pip install -e .
  1. Configure as variáveis de ambiente: Crie um arquivo .env na raiz do projeto:
GITHUB_TOKEN=your_github_token_here

Uso Básico

Configurando a Integração com Claude Desktop

  1. Inicie o servidor GIT-Pilot:
uv run main.py
  1. Baixe e instale o Claude Desktop

  2. Configure o Claude Desktop:

    • Abra o Claude Desktop
    • Vá para File > Settings > Developer > Edit Config
    • Adicione a seguinte configuração:
{
    "mcpServers": {
        "GIT-Pilot": {
            "command": "uv",
            "args": [
                "--directory",
                "path\\to\\repo",
                "run",
                "main.py"
            ]
        }
    }
}
  1. Reinicie o Claude Desktop
  2. Procure pelo ícone de martelo na janela de chat - isso indica que o servidor MCP está pronto para uso

Exemplos de API

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

🔧 Configuração

O serviço pode ser configurado através da classe Config:

@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()

🛡 Segurança

  • Tokens são criptografados em repouso usando Fernet
  • Expiração e limpeza automática de tokens
  • Proteção contra limites de requisições com novas tentativas
  • Validação de entrada
  • Tratamento abrangente de erros
  • Limpeza segura de tokens

🔄 Limite de Requisições

O serviço inclui tratamento integrado de limite de requisições:

  • Nova tentativa automática ao atingir o limite
  • Tentativas configuráveis
  • Atraso entre tentativas
  • Logging do status do limite
  • Backoff exponencial

🧪 Tratamento de Erros

Tratamento abrangente de erros para:

  • Falhas de autenticação
  • Erros de API
  • Limites de requisições
  • Entradas inválidas
  • Conflitos de recursos
  • Problemas de rede
  • Validação de tokens
  • Operações de arquivos

📈 Logging

Logging detalhado com:

  • Carimbo de data/hora
  • Nível de log
  • Nome da função
  • Número da linha
  • Detalhes do erro
  • Rastreamentos de pilha (stack traces)
  • Informações sobre limites de requisições
  • Operações com tokens

🤝 Contribuindo

Adoramos contribuições! Siga estes passos:

  1. Faça um fork do repositório
  2. Crie uma branch de feature
  3. Faça commit das suas alterações
  4. Envie para a branch
  5. Crie um Pull Request

📝 Licença

Este projeto é licenciado sob a GNU General Public License v3.0 - consulte o arquivo LICENSE para mais detalhes.

🙏 Agradecimentos

  • PyGithub pelo wrapper da API do GitHub
  • FastMCP pelo framework do servidor
  • Fernet pela criptografia segura de tokens

Feito com ❤️ pela equipe GIT-Pilot