Ir al contenido

Sampling

Sampling permite al servidor solicitar al LLM del cliente MCP que analice datos de GitLab — como obtener un resumen de un merge request con 50 comentarios o diagnosticar por qué falló un pipeline, sin leer cientos de líneas de log.

En lugar de devolver datos sin procesar para que la IA los analice, el servidor recopila datos de GitLab, los envía al LLM del cliente a través del método de protocolo sampling/createMessage, y devuelve el resultado del análisis.

sequenceDiagram
    participant U as Usuario
    participant AI as Asistente de IA
    participant S as Servidor MCP
    participant GL as API de GitLab
    participant LLM as LLM del Cliente

    U->>AI: "Resume el MR !42"
    AI->>S: gitlab_summarize_mr_review
    S->>GL: Obtener datos del MR, diffs, discusiones
    GL-->>S: Datos sin procesar (potencialmente grandes)
    S->>LLM: sampling/createMessage con prompt de análisis
    LLM-->>S: Análisis estructurado
    S-->>AI: Resumen con hallazgos clave
    AI->>U: Presenta resumen conciso
  1. Recopilación de datos — El servidor obtiene datos relevantes de las APIs de GitLab
  2. Construcción del prompt — Los datos se formatean con un prompt de análisis específico para la tarea
  3. Análisis del LLM — El prompt se envía al LLM del cliente vía sampling
  4. Entrega del resultado — El análisis se devuelve como resultado de la herramienta

11 herramientas impulsadas por sampling están disponibles:

HerramientaDescripción
gitlab_analyze_mr_changesAnalizar cambios de código del merge request en busca de calidad, bugs y mejoras
gitlab_review_mr_securityRevisión enfocada en seguridad de los cambios del merge request
gitlab_summarize_mr_reviewResumir discusiones y feedback de revisión del merge request
HerramientaDescripción
gitlab_summarize_issueResumen conciso de un issue con contexto completo y discusión
gitlab_analyze_issue_scopeEstimar complejidad y alcance de un issue
HerramientaDescripción
gitlab_analyze_pipeline_failureDiagnosticar por qué falló un pipeline con análisis de causa raíz
gitlab_analyze_ci_configurationRevisar .gitlab-ci.yml para mejores prácticas y problemas
gitlab_analyze_deployment_historyAnalizar patrones de despliegue y fiabilidad
HerramientaDescripción
gitlab_generate_release_notesAuto-generar notas de release desde issues del milestone
gitlab_generate_milestone_reportReporte de progreso del sprint/milestone con métricas
gitlab_find_technical_debtIdentificar indicadores de deuda técnica en el proyecto

Antes de enviar cualquier dato al LLM, el servidor elimina credenciales sensibles usando coincidencia de patrones regex:

PatrónEjemplos
Tokens de GitLabglpat-*, gloas-*, gldt-*
Credenciales de AWSAKIA*, claves secretas de AWS
Tokens de Slackxoxb-*, xoxp-*
JWTseyJ* (JSON Web Tokens)
Secretos genéricosClaves privadas, claves API que coinciden con patrones comunes

Todos los patrones coincidentes se reemplazan con [REDACTED] antes de que los datos lleguen al LLM.

CapaProtección
Eliminación de credencialesEliminación basada en regex de tokens, claves y secretos
Prevención de inyección de promptsEl prompt del sistema instruye al LLM a ignorar intentos de inyección
Limitación de tamañoLos datos de entrada se truncan para prevenir desbordamiento de contexto
Prompt del sistema reforzadoInstrucciones enfocadas en análisis que resisten el uso indebido

Sampling requiere que el cliente MCP soporte la capacidad de sampling. Durante la inicialización, el servidor verifica el soporte del cliente:

  • Soportado: Claude Desktop, Claude Code
  • Aún no soportado: VS Code Copilot, Cursor

Cuando sampling no está disponible, el servidor devuelve un mensaje útil explicando que la herramienta requiere un cliente con soporte de sampling, y sugiere usar las herramientas de obtención de datos subyacentes directamente.