Ir al contenido

Ejemplos de uso

Esta es una referencia rápida de prompts en lenguaje natural que puedes usar con cualquier asistente de IA conectado a GitLab MCP Server, agrupados por dominio. Escribe el prompt en lenguaje natural y el servidor lo traduce automáticamente a la operación correcta de la API de GitLab. Las pestañas siguientes muestran a qué acción del catálogo se asigna cada prompt: el action que pasarías a gitlab_execute_action en la superficie dinámica predeterminada, que es también la acción de la meta-herramienta de dominio correspondiente cuando GITLAB_MCP_TOOL_SURFACE=meta. Cubren gestión de proyectos, revisión de código, CI/CD, releases y búsqueda.

Los ejemplos dan por hecho que el servidor ya está conectado a tu cliente, como describe Primeros pasos: en stdio el cliente lo arranca con GITLAB_TOKEN en su entorno, más GITLAB_URL para una instancia autoalojada. Para compartir un servidor entre varios clientes, arráncalo en modo HTTP:

Ventana de terminal
./gitlab-mcp-server --http \
--gitlab-url=https://gitlab.com \
--http-addr=:8080 \
--max-http-clients=100

Sustituye https://gitlab.com por la URL de tu instancia autoalojada cuando haga falta. Los clientes se conectan a http://<host>:8080/mcp y envían su propio token de GitLab en cada petición, como Authorization: Bearer <token> o PRIVATE-TOKEN: <token>. --max-http-clients limita cuántos pares distintos de token y URL de GitLab conserva el servidor a la vez (100 por defecto). Antes de que otras máquinas lleguen a él, sírvelo con TLS o detrás de un proxy, como describe Modo servidor HTTP.

Prompt: “Muéstrame mis proyectos de GitLab”

El asistente ejecuta project.list (gitlab_project con action: list cuando GITLAB_MCP_TOOL_SURFACE=meta), devolviendo nombres de proyectos, descripciones y URLs.

Prompt: “Crea un reporte de bug en my-group/my-project titulado ‘Login page returns 404 after password reset’ con etiquetas bug y priority::high”

El asistente ejecuta issue.create (gitlab_issue con action: create en la superficie meta), estableciendo el título, descripción, etiquetas y proyecto en una única operación. Si la petición no indica el proyecto o las etiquetas, el asistente puede preguntártelos antes de crear el issue.

Prompt: “Lista todas las etiquetas en el proyecto frontend y crea una nueva etiqueta llamada ‘accessibility’ con color #0052CC”

El asistente ejecuta primero project.label_list para mostrar las etiquetas existentes y luego project.label_create para añadir la nueva (gitlab_project con action: label_list y action: label_create en la superficie meta).

Prompt: “Muéstrame el progreso del milestone Sprint 14 en my-project”

El asistente ejecuta project.milestone_get (gitlab_project con action: milestone_get en la superficie meta), devolviendo el estado, las fechas y la URL web del milestone, y project.milestone_issues para los issues que siguen abiertos en él.

Prompt: “Lista todos los miembros del proyecto frontend y sus niveles de acceso”

El asistente ejecuta project.members (gitlab_project con action: members en la superficie meta), devolviendo los miembros del equipo con sus roles y permisos.

El modo dinámico es el predeterminado, así que los prompts anteriores nunca nombran una herramienta directamente. El asistente descubre primero la acción y su esquema con gitlab_find_action y luego la ejecuta con gitlab_execute_action usando un ID canónico domain.action:

gitlab_find_action → query: "listar merge requests abiertas"
gitlab_execute_action → action: "merge_request.list", params: { project_id: "42", state: "opened" }

Cuando falla un pipeline, el mismo flujo encadena dos acciones — localizar los jobs fallidos y leer el log de uno de ellos:

gitlab_find_action → query: "listar jobs fallidos de un pipeline"
gitlab_execute_action → action: "job.list", params: { project_id: "42", pipeline_id: 8847, scope: ["failed"] }
gitlab_execute_action → action: "job.trace", params: { project_id: "42", job_id: 501 }

Para ver qué cubre un dominio en la superficie dinámica predeterminada, busca en el catálogo o lee el recurso del manifiesto de herramientas:

Usuario: "¿Qué puedo hacer con los merge requests?"
→ gitlab_find_action → query: "merge request" acciones ordenadas con sus esquemas de entrada
→ leer gitlab://tools y quedarse con las entradas merge_request.*
→ leer gitlab://tools/merge_request.list forma de llamada y esquema de entrada de una acción

Para listar tus propios proyectos, el asistente ejecuta project.list con owned: true (gitlab_project_list con GITLAB_MCP_TOOL_SURFACE=individual). Dentro de un repositorio clonado puede ahorrarse la pregunta de a qué proyecto te refieres: discover_project.resolve traduce el remoto git a su proyecto de GitLab y devuelve su ID, su ruta, su URL web y su rama por defecto:

gitlab_execute_action → action: "discover_project.resolve", params: { remote_url: "git@gitlab.example.com:my-group/backend.git" }

Pasa el remoto tal como lo imprime git remote -v, con el esquema o el prefijo git@; una ruta grupo/proyecto sin más ya es un project_id válido y no necesita resolverse. Con GITLAB_MCP_TOOL_SURFACE=meta o individual la misma acción es la herramienta independiente gitlab_discover_project.

Con GITLAB_MCP_TOOL_SURFACE=meta, 34 herramientas sirven a una instancia Free o CE. El catálogo crece con el tier: 40 en Premium autoalojado y 51 en Ultimate autoalojado, una más en cada caso en GitLab.com, donde gitlab_orbit se sirve a partir de Premium (41 en GitLab.com Premium, 52 en GitLab.com Ultimate). Cada herramienta de dominio solo acepta las claves de primer nivel action y params:

Recurso: gitlab://tools/gitlab_project
→ la entrada de la herramienta gitlab_project: su descripción, que lleva la guía de cada acción, y su esquema de entrada
Recurso: gitlab://tools/gitlab_merge_request.list
→ forma de llamada y esquema de entrada de una acción
Llamada: gitlab_merge_request → { action: "list", params: { project_id: "42" } }
→ se despacha a la ruta merge_request.list

Las herramientas de dominio presentes en todos los tiers son access, achievement, admin, branch, ci_catalog, ci_variable, custom_emoji, environment, feature_flags, group, issue, job, merge_request, model_registry, mr_review, package, pipeline, project, release, repository, runner, search, server, snippet, storage_move, tag, template, user y wiki, cada una servida como gitlab_<domain>, junto a la herramienta independiente gitlab_discover_project y los cuatro flujos de creación gitlab_interactive_*. Las etiquetas, los hitos y los miembros son acciones de gitlab_project (label_list, milestone_get, members) y de gitlab_group (group_label_list, group_milestone_get, members); los diffs y las discusiones de merge requests son acciones de gitlab_mr_review (changes_get, discussion_list); el lint de CI es gitlab_template con action: lint. Meta-herramientas describe la superficie al completo.

Los prompts MCP reúnen los datos de GitLab para una pregunta recurrente y se los entregan al modelo listos para resumir. Los clientes suelen ofrecerlos como comandos con barra o en un selector de prompts; se registran en la superficie de capacidades full predeterminada, y Recursos y prompts lista los 37.

Un panel personal:

my_open_mrs() → tus MRs abiertos en todos los proyectos, como autor o asignado
my_pending_reviews() → MRs abiertos que esperan tu revisión
my_issues() → issues asignados a ti, con detección de vencidos
daily_standup(project_id="42") → tus últimas 24 horas en un proyecto: hecho, previsto, bloqueos

Un panel de responsable de equipo:

team_overview(group_id="7") → miembros del grupo con sus MRs abiertos y fusiones recientes
reviewer_workload(group_id="7") → cuántos MRs abiertos revisa cada miembro
group_mr_dashboard(group_id="7") → los MRs del grupo por proyecto, con filtros de estado y rama destino
user_activity_report(username="johndoe") → eventos, MRs fusionados y revisiones de un usuario

La salud de un proyecto:

project_health_check(project_id="42")
→ estado del último pipeline, merge requests abiertos, higiene de ramas y recomendaciones
stale_items_report(project_id="42", stale_days="30")
→ MRs e issues sin actualizar en 30 días (14 si se omite stale_days)
milestone_progress(project_id="42")
→ avance de issues y MRs y riesgo de fecha límite de cada hito activo

Cuando project.get y las acciones get de los demás dominios habituales no encuentran nada, responden con un resultado marcado isError: true en lugar de un error de protocolo, e indican qué probar a continuación. Si se le pide el proyecto 999, project.get devuelve este texto en todas las superficies:

## ❓ Project Not Found
The project **999** does not exist or is not accessible with your current permissions.
---
💡 **Next steps:**
- Use project.list to search for projects by name or path
- Verify the project ID or URL-encoded path is correct (e.g. 'group%2Fproject')
- The project may have been deleted or you may lack access

Manejo de errores cubre el resto de tipos de fallo.


Preguntas frecuentes

¿Qué puedo pedirle a un asistente de IA con GitLab MCP Server?

Cualquier cosa que expongan las API REST v4 y GraphQL de GitLab: 868 operaciones en Community Edition y hasta 1,094 en GitLab.com. En la práctica eso incluye listar y crear proyectos e issues, revisar merge requests, consultar y reintentar pipelines, publicar releases, gestionar etiquetas e hitos, buscar código en todo un grupo y administrar miembros. Formulas la petición en lenguaje natural y el servidor la resuelve a una acción canónica de GitLab.

¿Necesito conocer los nombres de las herramientas para usar GitLab MCP Server?

No. En la superficie dinámica predeterminada describes lo que quieres y el asistente llama a gitlab_find_action para localizar la acción y su esquema exacto, y después a gitlab_execute_action para ejecutarla. Los nombres como gitlab_issue solo se hacen visibles si cambias a GITLAB_MCP_TOOL_SURFACE=meta o GITLAB_MCP_TOOL_SURFACE=individual, que intercambian contexto de arranque por una lista navegable de herramientas.

¿Cómo le indico al asistente qué proyecto de GitLab usar?

Pasa la ruta del proyecto en project_id, con la forma grupo/proyecto — por ejemplo mi-grupo/backend. Los IDs numéricos también funcionan. Si trabajas dentro de un repositorio clonado, la acción de descubrimiento de proyecto traduce la URL del remoto git al proyecto correcto de GitLab, así que no necesitas indicarlo: discover_project.resolve mediante gitlab_execute_action en la superficie predeterminada, o la herramienta independiente gitlab_discover_project con GITLAB_MCP_TOOL_SURFACE=meta o individual.

¿Un asistente de IA puede modificar mis datos de GitLab sin preguntar?

No sin desactivar antes alguna salvaguarda. Las acciones destructivas exigen confirmación explícita antes de ejecutarse, GITLAB_MCP_READ_ONLY=true elimina del catálogo todas las acciones de escritura, y GITLAB_MCP_SAFE_MODE=true intercepta las mutaciones y devuelve una tarjeta de vista previa que nombra la acción, con los argumentos que habría enviado en un bloque JSON, en vez de aplicarla. Las operaciones de lectura, como listar y buscar, son siempre seguras.