Ir al contenido

Ejemplos de revisión de código

Ejemplos paso a paso para flujos de revisión de merge requests. Cada ejemplo muestra el prompt en lenguaje natural y las acciones de meta-tools que el servidor ejecuta.

sequenceDiagram
    participant U as Usuario
    participant AI as Asistente IA
    participant MCP as MCP Server
    participant GL as API de GitLab

    U->>AI: "Revisa el MR !42"
    AI->>MCP: gitlab_merge_request (action: list)
    MCP->>GL: GET /projects/:id/merge_requests
    GL-->>MCP: Lista de MRs
    MCP-->>AI: MRs abiertos
    AI->>MCP: gitlab_merge_request (action: changes)
    MCP->>GL: GET /projects/:id/merge_requests/:iid/changes
    GL-->>MCP: Datos del diff
    MCP-->>AI: Cambios en archivos
    AI->>MCP: gitlab_analyze_mr_changes (sampling)
    MCP-->>AI: Hallazgos de revisión
    AI->>MCP: gitlab_merge_request (action: note_create)
    MCP->>GL: POST /projects/:id/merge_requests/:iid/notes
    AI->>MCP: gitlab_merge_request (action: approve)
    MCP->>GL: POST /projects/:id/merge_requests/:iid/approve
    AI->>U: "Revisión completada, MR aprobado"

Prompt: “Muéstrame todos los merge requests asignados a mí para revisión en el proyecto backend”

gitlab_merge_request → action: list, project_id: "my-group/backend",
reviewer_username: "johndoe", state: "opened"

Devuelve: títulos de MRs, autores, ramas, etiquetas y estado de revisión.

Prompt: “Muéstrame los cambios de archivos en el MR !42”

gitlab_merge_request → action: changes, project_id: "my-group/backend", merge_request_iid: 42

Devuelve: lista de archivos modificados con adiciones, eliminaciones y diffs completos.

Prompt: “¿Quién ha aprobado el MR !42 y quién falta por aprobar?”

gitlab_merge_request → action: approval_state, project_id: "my-group/backend",
merge_request_iid: 42

Devuelve: reglas de aprobación, aprobaciones requeridas, aprobaciones actuales y aprobadores elegibles.

Prompt: “Aprueba el merge request !42 en el proyecto backend”

gitlab_merge_request → action: approve, project_id: "my-group/backend",
merge_request_iid: 42

Prompt: “Revisa los cambios de código en el MR !42 buscando bugs, problemas de seguridad y mejores prácticas”

gitlab_analyze_mr_changes (sampling) → obtiene diff, envía al LLM para revisión completa

Devuelve: hallazgos estructurados organizados por severidad (crítico, advertencia, sugerencia) con ubicaciones de archivos y correcciones recomendadas.

Prompt: “Haz una revisión de seguridad del MR !78 en el proyecto backend”

gitlab_review_mr_security (sampling) → examina diff buscando vulnerabilidades de seguridad

Verifica: inyección SQL, XSS, secretos hardcodeados, bypasses de autenticación, deserialización insegura y problemas OWASP Top 10.

Prompt: “Resume todos los comentarios de revisión del MR !42”

gitlab_summarize_mr_review (sampling) → consolida hilos de revisión en resumen

Devuelve: puntos clave de discusión, hilos sin resolver, elementos de acción y sentimiento general de la revisión.


Prompt: “Añade un comentario al MR !42 diciendo ‘El manejo de errores en auth.go necesita un mecanismo de reintento‘“

gitlab_merge_request → action: note_create, project_id: "my-group/backend",
merge_request_iid: 42, body: "El manejo de errores en auth.go necesita un mecanismo de reintento"

Prompt: “Inicia una discusión en el MR !42 sobre la estrategia de migración de base de datos”

gitlab_merge_request → action: discussion_create, project_id: "my-group/backend",
merge_request_iid: 42, body: "Discutamos la estrategia de migración de base de datos..."

Prompt: “Muéstrame todos los hilos de discusión sin resolver en el MR !42”

gitlab_merge_request → action: discussion_list, project_id: "my-group/backend",
merge_request_iid: 42

Filtra los resultados por hilos donde resolved: false para encontrar elementos pendientes de revisión.

Prompt: “Crea una nota de revisión en borrador en el MR !42 — publicaré todos mis comentarios juntos”

gitlab_merge_request → action: draft_note_create, project_id: "my-group/backend",
merge_request_iid: 42, note: "Considera usar un context timeout aquí..."

Las notas borrador solo son visibles para ti hasta que las publiques todas a la vez con action: draft_note_publish_all.


Prompt: “Crea un merge request de la rama feature/auth-refactor a main en el proyecto backend”

gitlab_merge_request → action: create, project_id: "my-group/backend",
source_branch: "feature/auth-refactor", target_branch: "main",
title: "Refactorizar módulo de autenticación"

Prompt: “Fusiona el MR !42 usando squash commit”

gitlab_merge_request → action: merge, project_id: "my-group/backend",
merge_request_iid: 42, squash: true

Prompt: “Haz rebase del MR !42 contra la última rama main”

gitlab_merge_request → action: rebase, project_id: "my-group/backend",
merge_request_iid: 42

Prompt: “Cierra el MR !99 — el enfoque fue reemplazado por el MR !105”

gitlab_merge_request → action: update, project_id: "my-group/backend",
merge_request_iid: 99, state_event: "close"

Prompt: “Compara la rama develop con main en el proyecto backend”

gitlab_repository → action: compare, project_id: "my-group/backend",
from: "main", to: "develop"

Devuelve: lista de commits, archivos modificados y estadísticas del diff entre las dos ramas.