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
GIT-Pilot
⭐️ 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
- Clonar el repositorio:
git clone https://github.com/yourusername/GIT-Pilot.git
cd GIT-Pilot
- Instalar uv (si no está ya instalado):
curl -LsSf https://astral.sh/uv/install.sh | sh
- Crear y activar un entorno virtual:
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
- Instalar el paquete usando uv:
uv pip install -e .
- Configurar las variables de entorno:
Crea un archivo
.enven la raíz del proyecto:
GITHUB_TOKEN=your_github_token_here
Uso básico
Configuración de la integración con Claude Desktop
- Iniciar el servidor GIT-Pilot:
uv run main.py
-
Descargar e instalar Claude Desktop
-
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"
]
}
}
}
- Reiniciar Claude Desktop
- 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:
- Bifurcar (fork) el repositorio
- Crear una rama de características
- Confirmar (commit) tus cambios
- Empujar (push) a la rama
- 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
