Gerrit Code Review
Se integra con el sistema de revisión de código Gerrit para revisar cambios y detalles del código.
Documentación
Servidor MCP de Revisión de Gerrit
Este servidor MCP proporciona integración con el sistema de revisión de código Gerrit, permitiendo a los asistentes de IA revisar cambios de código y sus detalles a través de una interfaz simple.
Características
El servidor proporciona un conjunto simplificado de herramientas para la revisión de código:
Obtener Detalles del Cambio
fetch_gerrit_change(change_id: str, patchset_number: Optional[str] = None)
- Obtiene información completa del cambio, incluyendo archivos y conjuntos de parches
- Muestra información detallada de diferencias para cada archivo modificado
- Muestra cambios de archivos, inserciones y eliminaciones
- Soporta la revisión de conjuntos de parches específicos
- Devuelve detalles completos del cambio, incluyendo:
- Información del proyecto y la rama
- Detalles del autor y los revisores
- Comentarios e historial de revisiones
- Modificaciones de archivos con contenido de diferencias
- Información del conjunto de parches actual
Comparar Diferencias entre Conjuntos de Parches
fetch_patchset_diff(change_id: str, base_patchset: str, target_patchset: str, file_path: Optional[str] = None)
- Compara diferencias entre dos conjuntos de parches de un cambio
- Ve diferencias de archivos específicos o todos los archivos modificados
- Analiza modificaciones de código entre versiones de conjuntos de parches
- Rastrea la evolución de los cambios a través de iteraciones de revisión
Enviar Comentarios de Revisión
submit_gerrit_review(
change_id: str,
message: Optional[str] = None,
patchset_number: Optional[str] = None,
labels: Optional[Dict[str, int]] = None,
comments: Optional[List[Dict[str, Any]]] = None,
notify: str = "OWNER",
)
- Publica comentarios de resumen, etiquetas de votación (por ejemplo,
{"Code-Review": 1}) y comentarios en línea o a nivel de archivo - Apunta a un conjunto de parches específico o usa por defecto la revisión más reciente
- Controla el comportamiento de notificaciones de Gerrit (
notify:NONE,OWNER,OWNER_REVIEWERS,ALL) - Los cargamentos de comentarios aceptan diccionarios con
path,messagey campos opcionales de comentarios de Gerrit (line,side,range, ...)
Ejemplo de Uso
Revisar un cambio completo:
# Fetch latest patchset of change 23824
change = fetch_gerrit_change("23824")
Enviar comentarios de revisión con un voto y comentario en línea:
submit_gerrit_review(
change_id="23824",
message="Looks good overall",
labels={"Code-Review": 1},
comments=[{"path": "src/app.py", "line": 42, "message": "Nice refactor."}],
patchset_number="2", # optional: target a specific patchset
notify="OWNER_REVIEWERS", # optional: adjust notification scope
)
Comparar conjuntos de parches específicos:
# Compare differences between patchsets 1 and 2 for change 23824
diff = fetch_patchset_diff("23824", "1", "2")
Ver cambios de archivos específicos:
# Get diff for a specific file between patchsets
file_diff = fetch_patchset_diff("23824", "1", "2", "path/to/file.swift")
Requisitos Previos
- Python 3.10 o superior (se recomienda Python 3.11)
- Credenciales de acceso HTTP de Gerrit
- Contraseña HTTP generada desde la configuración de Gerrit
- Acceso al repositorio de paquetes
mcp[cli](paquete privado)
Instalación
Instalación mediante Smithery
Para instalar gerrit-code-review-mcp para Claude Desktop automáticamente a través de Smithery:
npx -y @smithery/cli install @cayirtepeomer/gerrit-code-review-mcp --client claude
Instalación Manual
- Clona este repositorio:
git clone <repository-url>
cd gerrit-review-mcp
- Crea y activa un entorno virtual:
# For macOS/Linux:
python -m venv .venv
source .venv/bin/activate
# For Windows:
python -m venv .venv
.venv\Scripts\activate
- Instala este paquete en modo editable con sus dependencias:
pip install -e .
Configuración
- Configura las variables de entorno:
export GERRIT_HOST="gerrit.example.com" # Your Gerrit server hostname (without https://)
export GERRIT_USER="your-username" # Your Gerrit account username
export GERRIT_HTTP_PASSWORD="your-http-password" # Generated HTTP password from Gerrit Settings > HTTP Credentials
export GERRIT_EXCLUDED_PATTERNS="\.pbxproj$,\.xcworkspace$,node_modules/" # Optional: regex patterns for files to exclude from reviews
# Optional TLS configuration for custom or self-signed certificates
export GERRIT_SSL_VERIFY="true" # Set to 'false' to skip TLS verification in constrained environments
export GERRIT_CA_BUNDLE="/path/to/ca.pem" # Optional custom CA bundle path used when verification stays enabled
# Note: If both are set, GERRIT_CA_BUNDLE takes precedence and verification stays enabled using that bundle.
O crea un archivo .env:
GERRIT_HOST=gerrit.example.com
GERRIT_USER=your-username
GERRIT_HTTP_PASSWORD=your-http-password
GERRIT_EXCLUDED_PATTERNS=\.pbxproj$,\.xcworkspace$,node_modules/
GERRIT_SSL_VERIFY=true
GERRIT_CA_BUNDLE=/path/to/ca.pem
# If both are set, the CA bundle wins.
- Genera la contraseña HTTP:
- Inicia sesión en tu interfaz web de Gerrit
- Ve a Configuración > Credenciales HTTP
- Genera una nueva contraseña
- Copia la contraseña a tu entorno o archivo .env
- Configura exclusiones de archivos (opcional):
- Establece
GERRIT_EXCLUDED_PATTERNSpara excluir tipos de archivos específicos de las revisiones de cambios - Usa patrones regex separados por comas (por ejemplo,
\.pbxproj$,\.xcworkspace$,node_modules/) - Déjalo vacío o sin configurar para usar exclusiones predeterminadas
- Esto ayuda a prevenir bucles infinitos con archivos grandes
Configuración de MCP
Para usar este servidor MCP con Cursor o RooCode, necesitas agregar su configuración a tu archivo ~/.cursor/mcp.json o .roo/mcp.json. Aquí está la configuración requerida:
{
"mcpServers": {
"gerrit-review-mcp": {
"command": "/path/to/your/workspace/gerrit-code-review-mcp/.venv/bin/python",
"args": [
"/path/to/your/workspace/gerrit-code-review-mcp/server.py",
"--transport",
"stdio"
],
"cwd": "/path/to/your/workspace/gerrit-code-review-mcp",
"env": {
"PYTHONPATH": "/path/to/your/workspace/gerrit-code-review-mcp",
"VIRTUAL_ENV": "/path/to/your/workspace/gerrit-code-review-mcp/.venv",
"PATH": "/path/to/your/workspace/gerrit-code-review-mcp/.venv/bin:/usr/local/bin:/usr/bin:/bin"
},
"stdio": true
}
}
}
Reemplaza /path/to/your/workspace con la ruta real de tu espacio de trabajo. Por ejemplo, si tu proyecto está en /Users/username/projects/gerrit-code-review-mcp, usa esa ruta en su lugar.
Asegúrate de que todas las rutas en la configuración apunten a:
- El intérprete de Python de tu entorno virtual
- El archivo
server.pydel proyecto - El directorio de trabajo correcto
- El directorio bin del entorno virtual en el PATH
Detalles de Implementación
El servidor usa la API REST de Gerrit para interactuar con Gerrit, proporcionando:
- Recuperación rápida y confiable de información de cambios
- Autenticación segura usando autenticación digest HTTP
- Soporte para varios endpoints REST de Gerrit
- Código limpio y mantenible
- Cifrado HTTPS para comunicación segura
Solución de Problemas
Si encuentras problemas de conexión:
- Verifica que tu contraseña HTTP esté configurada correctamente en
GERRIT_HTTP_PASSWORD - Verifica la configuración de
GERRIT_HOST(solo nombre de host, sin https://) - Asegúrate de que el acceso HTTPS esté habilitado en el servidor Gerrit
- Prueba la conexión usando curl con el prefijo
/a/para llamadas API autenticadas:curl -u "your-username:your-http-password" https://your-gerrit-server.com/a/changes/?q=status:open - Verifica los permisos de acceso de Gerrit para tu cuenta
Problemas de Autenticación con Credenciales HTTP
Si tienes problemas con la autenticación, verifica tu configuración de Gerrit para gitBasicAuthPolicy = HTTP (o HTTP_LDAP).
Trabajo con Certificados Autofirmados
GERRIT_SSL_VERIFY=falsedesactiva la verificación TLS cuando Gerrit usa un certificado emitido internamente que carece de las entradas de Nombre Alternativo de Sujeto (SAN) requeridas.- Proporciona un paquete de certificados personalizado a través de
GERRIT_CA_BUNDLE=/path/to/ca.pempara mantener la verificación habilitada mientras confías en una CA privada. - Trata la verificación deshabilitada como una solución temporal hasta que se emita un certificado con SAN coincidentes para los nombres de host de Gerrit que accedes.
Licencia
Este proyecto está licenciado bajo la Licencia MIT.
Pruebas
Este proyecto incluye pruebas integrales de integración con Docker usando testcontainers-python para pruebas multiplataforma confiables.
Ejecutar Pruebas
Para ejecutar el conjunto completo de pruebas:
# Install development dependencies
pip install -e ".[dev]"
# Run all tests
pytest
# Run only integration tests
pytest -m integration
# Run with verbose output
pytest -v
# Run with coverage
pytest --cov=. --cov-report=html
Variables de Entorno de Prueba
Las siguientes variables de entorno se pueden usar para configurar el comportamiento de las pruebas:
TEST_STARTUP_TIMEOUT: Tiempo de espera de inicio del contenedor en segundos (predeterminado: 30)TEST_LOGS_SETTLE_DELAY: Retraso antes de verificar registros en segundos (predeterminado: 0)DOCKER_HOST: Host del daemon de Docker para Docker remoto (opcional)
Ejemplo:
# Run tests with custom timeouts
TEST_STARTUP_TIMEOUT=60 TEST_LOGS_SETTLE_DELAY=1 pytest tests/test_docker_integration.py -v
Requisitos de Docker
Las pruebas de integración con Docker requieren:
- Daemon de Docker en ejecución y accesible
- Socket de Docker disponible en
/var/run/docker.sock(Linux/macOS) oDOCKER_HOSTconfigurado - Permisos suficientes para construir y ejecutar contenedores
Las pruebas se omitirán automáticamente si Docker no está disponible.
Integración CI/CD
Para entornos CI/CD, asegúrate de:
- El servicio Docker-in-Docker (DinD) esté disponible
- El socket de Docker esté montado o
DOCKER_HOSTesté configurado - Se establezcan valores de tiempo de espera suficientes para entornos más lentos
Contribuciones
¡Damos la bienvenida a las contribuciones! Por favor:
- Haz un fork del repositorio
- Crea una rama de características
- Realiza tus cambios
- Ejecuta el conjunto de pruebas para asegurarte de que todo funcione
- Envía una solicitud de extracción