GIT-Pilot

Una potente herramienta de automatización y gestión de GitHub que proporciona un envoltorio completo de API para operaciones de GitHub.

Documentación

MseeP.ai Security Assessment Badge

GIT-Pilot

GIT-Pilot Logo

Python Version License GitHub

⭐️ Si encuentras útil este proyecto, ¡dale una estrella! ⭐️

GIT-Pilot es una potente herramienta de automatización y gestión de GitHub que proporciona un envoltorio completo de API para operaciones de GitHub. Simplifica las interacciones con GitHub mediante un servidor basado en FastMCP, facilitando la gestión de repositorios, pull requests, issues y más.

🌟 Características

🔐 Autenticación y seguridad

  • Gestión segura de tokens con cifrado mediante Fernet
  • Expiración de tokens y limpieza automática
  • Manejo de límites de tasa y reintentos automáticos
  • Tiempos de espera de autenticación configurables

📦 Gestión de repositorios

  • Crear y gestionar repositorios
  • Manejar ramas y commits
  • Operaciones de archivos (crear, actualizar, eliminar)
  • Búsqueda y filtrado de repositorios
  • Comparación e historial de commits

🔄 Operaciones de pull requests

  • Crear y gestionar pull requests
  • Estrategias de fusión (merge, squash, rebase)
  • Validación de verificaciones de estado
  • Detección y manejo de conflictos
  • Soporte para PR en borrador

📝 Gestión de issues

  • Crear y actualizar issues
  • Gestión de etiquetas
  • Manejo de asignados
  • Gestión de comentarios
  • Búsqueda y filtrado de issues

🛠 Características técnicas

  • Operaciones seguras para subprocesos
  • Gestión de recursos
  • Manejo integral de errores
  • Registro detallado (logging)
  • Seguridad de tipos
  • Gestión de configuración
  • Integración con servidor FastMCP

🚀 Comenzando

Requisitos previos

  • Python 3.12 o superior
  • Cuenta de GitHub
  • Token de acceso personal de GitHub
  • CLI de FastMCP (opcional)

Instalación

  1. Clonar el repositorio:
git clone https://github.com/yourusername/GIT-Pilot.git
cd GIT-Pilot
  1. Instalar uv (si no está ya instalado):
curl -LsSf https://astral.sh/uv/install.sh | sh
  1. Crear y activar un entorno virtual:
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
  1. Instalar el paquete usando uv:
uv pip install -e .
  1. Configurar las variables de entorno: Crea un archivo .env en la raíz del proyecto:
GITHUB_TOKEN=your_github_token_here

Uso básico

Configuración de la integración con Claude Desktop

  1. Iniciar el servidor GIT-Pilot:
uv run main.py
  1. Descargar e instalar Claude Desktop

  2. Configurar Claude Desktop:

    • Abrir Claude Desktop
    • Ir a File > Settings > Developer > Edit Config
    • Agregar la siguiente configuración:
{
    "mcpServers": {
        "GIT-Pilot": {
            "command": "uv",
            "args": [
                "--directory",
                "path\\to\\repo",
                "run",
                "main.py"
            ]
        }
    }
}
  1. Reiniciar Claude Desktop
  2. Buscar el ícono de martillo en la ventana de chat: esto indica que el servidor MCP está listo para usar

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

🔧 Configuración

El servicio se puede configurar mediante la clase 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()

🛡 Seguridad

  • Los tokens se cifran en reposo usando Fernet
  • Expiración automática de tokens y limpieza
  • Protección contra límites de tasa con reintentos
  • Validación de entradas
  • Manejo integral de errores
  • Limpieza segura de tokens

🔄 Límite de tasa

El servicio incluye manejo integrado de límites de tasa:

  • Reintento automático ante límite de tasa
  • Intentos de reintento configurables
  • Retraso entre reintentos
  • Registro del estado del límite de tasa
  • Retroceso exponencial

🧪 Manejo de errores

Manejo integral de errores para:

  • Fallos de autenticación
  • Errores de API
  • Límites de tasa
  • Entradas inválidas
  • Conflictos de recursos
  • Problemas de red
  • Validación de tokens
  • Operaciones de archivos

📈 Registro (logging)

Registro detallado con:

  • Marca de tiempo
  • Nivel de registro
  • Nombre de la función
  • Número de línea
  • Detalles del error
  • Trazas de pila
  • Información del límite de tasa
  • Operaciones de tokens

🤝 Contribuciones

¡Damos la bienvenida a las contribuciones! Sigue estos pasos:

  1. Bifurcar (fork) el repositorio
  2. Crear una rama de características
  3. Confirmar (commit) tus cambios
  4. Empujar (push) a la rama
  5. Crear una pull request

📝 Licencia

Este proyecto está licenciado bajo la Licencia Pública General de GNU v3.0; consulta el archivo LICENSE para más detalles.

🙏 Agradecimientos

  • PyGithub por el envoltorio de la API de GitHub
  • FastMCP por el framework del servidor
  • Fernet por el cifrado seguro de tokens

Hecho con ❤️ por el equipo de GIT-Pilot