gitlab-api
Gitlab Api
CLI o API | MCP | Agente
Versión: 27.1.0
Documentación — La instalación, el despliegue, el uso a través de las interfaces API, CLI y MCP, el servidor de agente A2A integrado y las guías para aprovisionar la instancia de GitLab subyacente se mantienen en la documentación oficial.
Related MCP server: Kepler MCP GitLab Server
Resumen
Gitlab Api es un servidor de agente y Model Context Protocol (MCP) de nivel de producción diseñado para interactuar directamente con GitLab API + MCP Server + A2A Server.
Características principales
Herramientas MCP consolidadas enrutadas por acción: Minimiza la sobrecarga de tokens y elimina la inflación de herramientas en los contextos de LLM al agrupar métodos en módulos de herramientas optimizados y activables.
Seguridad de nivel empresarial: Soporte integral para políticas de Eunomia, delegación de tokens OIDC y seguimiento granular del contexto de ejecución.
Agente de grafo integrado: Agente Pydantic AI integrado que soporta el Agent Control Protocol (ACP) y las interfaces web estándar (AG-UI).
Telemetría y trazado nativos: Exportaciones OpenTelemetry listas para usar y trazado nativo de Langfuse.
CLI o API
Este agente envuelve la API de GitLab API + MCP Server + A2A Server. Puedes interactuar con él programáticamente o a través de sus puntos de entrada de ejecución integrados.
Las instrucciones detalladas sobre cómo usar los wrappers de API subyacentes, los enlaces de esquema extendidos y las referencias del SDK para desarrolladores se mantienen en docs/index.md.
MCP
Este servidor utiliza herramientas dinámicas enrutadas por acción para optimizar la sobrecarga de tokens y maximizar la compatibilidad con IDE.
Superficie de herramientas — MCP_TOOL_MODE
Establece MCP_TOOL_MODE (en el ~/.config/agent-utilities/config.json compartido o en el entorno): condensed (predeterminado — las herramientas enrutadas por acción a continuación), verbose (una herramienta nombrada 1:1 por método de API, p. ej. gitlab_get_branches(...), etiquetada verbose), o both. Filtra el conjunto verbose con --tools tag:verbose / MCP_ENABLED_TAGS=verbose. Consulta la guía de MCP Tool Modes de agent-utilities.
Herramientas MCP disponibles
Generado automáticamente desde el servidor MCP en vivo — no editar a mano.
Herramientas condensadas enrutadas por acción (predeterminado — MCP_TOOL_MODE=condensed)
MCP Tool | Toggle Env Var | Description |
|
| Ejecuta solicitudes arbitrarias de la API REST de GitLab directamente. |
|
| Gestiona las operaciones de ramas de GitLab. |
|
| Gestiona las operaciones de commits de GitLab. |
|
| Gestiona las operaciones de tokens de despliegue de GitLab. |
|
| Descubre el esquema GraphQL dinámico de GitLab, incluidos tipos, campos y atributos personalizados en tiempo real. |
|
| Gestiona las operaciones de entornos de GitLab. |
|
| Gestiona los epics de GitLab. |
|
| Ejecuta consultas y mutaciones GraphQL sin procesar de forma nativa en GitLab. |
|
| Ejecuta una operación GraphQL tipada de GitLab por nombre. |
|
| Gestiona las operaciones de grupos de GitLab. |
|
| Ingiere de forma nativa ejecuciones de pipelines de CI de GitLab (+ trabajos) en epistemic-graph. |
|
| Ingiere de forma nativa proyectos de GitLab en epistemic-graph como nodos :Project tipados. |
|
| Lista los tenants de GitLab configurados (CONCEPT:AU-KG.backend.declared-columns-so-schema). |
|
| Gestiona los issues de GitLab. |
|
| Gestiona las operaciones de trabajos de GitLab. |
|
| Gestiona las etiquetas de GitLab. |
|
| Gestiona las operaciones de miembros de GitLab. |
|
| Gestiona las operaciones de merge requests de GitLab. |
|
| Gestiona las operaciones de reglas de merge de GitLab. |
|
| Gestiona los hitos de GitLab. |
|
| Gestiona las operaciones de namespaces de GitLab. |
|
| Gestiona notas/comentarios de GitLab en issues, merge requests, commits y epics. |
|
| Gestiona las operaciones de paquetes de GitLab. |
|
| Gestiona las operaciones de programaciones de pipelines de GitLab. |
|
| Gestiona las operaciones de pipelines de GitLab. |
|
| Gestiona las operaciones de proyectos de GitLab. |
|
| Gestiona las operaciones de ramas protegidas de GitLab. |
|
| Gestiona las operaciones de releases de GitLab. |
|
| Gestiona las operaciones de runners de GitLab. |
|
| Gestiona los snippets de GitLab. |
|
| Gestiona las operaciones de etiquetas de GitLab. |
|
| Gestiona las operaciones de usuarios de GitLab. |
|
| Revisa la lista de dependencias y vulnerabilidades de seguridad de un proyecto (el equivalente de GitLab a GitHub Dependabot). |
|
| Gestiona las operaciones de wiki de GitLab. |
Herramientas detalladas mapeadas 1:1 a la API (MCP_TOOL_MODE=verbose o both)
Herramienta MCP | Variable de entorno de conmutación | Descripción |
|
| Aceptar (fusionar) una solicitud de fusión. |
|
| Realizar una solicitud de API personalizada al servidor de GitLab. |
|
| Aprobar una solicitud de fusión específica. |
|
| Archivar un proyecto específico. |
|
| Cancelar la "fusión cuando el pipeline tenga éxito" (fusión automática) en cola de una solicitud de fusión. |
|
| Cancelar un trabajo específico dentro de un proyecto. |
|
| Hacer cherry-pick de un commit a una nueva rama. |
|
| Crear una nueva rama en un proyecto. |
|
| Crear un nuevo commit. |
|
| Crear un comentario en un commit. |
|
| Crear un nuevo entorno para un proyecto. |
|
| Crear un nuevo epic de grupo. |
|
| Crear un token de despliegue para un grupo. |
|
| Crear un nuevo issue. |
|
| Crear una nueva etiqueta. |
|
| Crear una nueva solicitud de fusión. |
|
| Crear un hito de proyecto. |
|
| Crear una nueva nota/comentario en un issue. |
|
| Crear un horario de pipeline para un proyecto específico. |
|
| Crear una variable para un horario de pipeline. |
|
| Crear un nuevo proyecto. |
|
| Crear un token de despliegue para un proyecto. |
|
| Crear una nueva regla de aprobación de solicitudes de fusión a nivel de proyecto. |
|
| Crear una nueva release en un proyecto. |
|
| Crear evidencia para una release en un proyecto. |
|
| Crear un snippet de proyecto o un snippet personal. |
|
| Crear una etiqueta en un proyecto. |
|
| Crear un nuevo usuario. |
|
| Crear una nueva página wiki para un proyecto. |
|
| Eliminar una rama en un proyecto. |
|
| Eliminar un entorno para un proyecto. |
|
| Eliminar un epic de grupo. |
|
| Eliminar un token de despliegue para un grupo. |
|
| Eliminar un issue. |
|
| Eliminar una etiqueta. |
|
| Eliminar todas las ramas fusionadas en un proyecto. |
|
| Eliminar un hito de proyecto. |
|
| Eliminar una nota. |
|
| Eliminar un horario de pipeline para un proyecto específico. |
|
| Eliminar una variable de un horario de pipeline. |
|
| Eliminar un proyecto específico. |
|
| Eliminar un token de despliegue para un proyecto. |
|
| Eliminar una regla de aprobación de solicitudes de fusión a nivel de proyecto. |
|
| Eliminar un runner de un proyecto. |
|
| Eliminar una release en un proyecto. |
|
| Eliminar un runner. |
|
| Dejar de compartir un proyecto específico con un grupo. |
|
| Eliminar un snippet. |
|
| Eliminar entornos detenidos (aplicaciones de revisión) para un proyecto. |
|
| Eliminar una etiqueta en un proyecto. |
|
| Eliminar un usuario. |
|
| Eliminar una página wiki para un proyecto. |
|
| Descargar un activo de release de la release de un grupo. |
|
| Descargar un paquete de repositorio para un proyecto específico. |
|
| Editar un grupo específico. |
|
| Editar una configuración de aprobación de solicitudes de fusión a nivel de grupo. |
|
| Editar un horario de pipeline para un proyecto específico. |
|
| Editar un proyecto específico. |
|
| Editar una configuración de aprobación de solicitudes de fusión a nivel de proyecto. |
|
| Habilitar un runner en un proyecto. |
|
| Borrar un trabajo específico dentro de un proyecto. |
|
| Obtener el estado de aprobación de las solicitudes de fusión para un proyecto específico. |
|
| Recuperar información sobre una rama específica en un proyecto. |
|
| Recuperar información sobre las ramas en un proyecto. |
|
| Obtener un commit específico. |
|
| Obtener comentarios en un commit. |
|
| Obtener el diff de un commit. |
|
| Obtener discusiones en un commit. |
|
| Obtener la firma GPG de un commit. |
|
| Obtener solicitudes de fusión asociadas con un commit. |
|
| Obtener referencias de un commit. |
|
| Obtener estados de un commit. |
|
| Obtener commits. |
|
| Obtener todos los tokens de despliegue. |
|
| Obtener detalles de un entorno específico. |
|
| Obtener una lista de entornos para un proyecto. |
|
| Obtener un epic de grupo específico. |
|
| Obtener todos los epics de un grupo. |
|
| Obtener detalles de un grupo específico. |
|
| Obtener un token de despliegue específico para un grupo. |
|
| Obtener tokens de despliegue para un grupo específico. |
|
| Obtener grupos descendientes de un grupo específico. |
|
| Obtener la lista de issues para un grupo (y, por defecto, sus subgrupos). |
|
| Obtener detalles de una configuración de aprobación de solicitudes de fusión a nivel de grupo. |
|
| Obtener miembros de un grupo específico. |
|
| Obtener solicitudes de fusión asociadas con un grupo específico. |
|
| Obtener proyectos asociados con un grupo específico. |
|
| Obtener información sobre releases en un grupo. |
|
| Obtener información sobre runners en un grupo. |
|
| Obtener subgrupos de un grupo específico. |
|
| Obtener hallazgos de vulnerabilidades de seguridad de un grupo (Ultimate). |
|
| Obtener una lista de grupos. |
|
| Obtener un solo issue. |
|
| Obtener lista de issues. Puede filtrar por project_id. |
|
| Obtener una etiqueta específica por nombre. |
|
| Obtener todas las etiquetas de un proyecto. |
|
| Obtener información sobre la última release en un proyecto. |
|
| Obtener el activo de la última release en un proyecto. |
|
| Obtener evidencia de la última release en un proyecto. |
|
| Obtener reglas de aprobación a nivel de solicitud de fusión para un proyecto y una solicitud de fusión específicos. |
|
| Obtener una lista de solicitudes de fusión. |
|
| Obtener un hito de proyecto específico. |
|
| Obtener todos los hitos de un proyecto. |
|
| Obtener información sobre un namespace específico. |
|
| Obtener información sobre namespaces. |
|
| Obtener información sobre proyectos anidados dentro de un grupo. |
|
| Obtener una nota específica. |
|
| Obtener todas las notas de un issue específico. |
|
| Obtener información sobre un pipeline específico en un proyecto. |
|
| Obtener trabajos asociados con un pipeline específico dentro de un proyecto. |
|
| Obtener información sobre un horario de pipeline específico en un proyecto. |
|
| Obtener horarios de pipeline para un proyecto específico. |
|
| Obtener información sobre pipelines para un proyecto específico. |
|
| Obtener pipelines activados desde un horario de pipeline específico. |
|
| Obtener información sobre un proyecto específico. |
|
| Obtener información sobre los contribuidores de un proyecto. |
|
| Obtener la Lista de Dependencias de un proyecto (todas las dependencias detectadas). |
|
| Obtener un token de despliegue específico para un proyecto. |
|
| Obtener tokens de despliegue para un proyecto específico. |
|
| Obtener grupos asociados con un proyecto específico. |
|
| Obtener detalles de un trabajo específico dentro de un proyecto. |
|
| Obtener el registro de un trabajo específico dentro de un proyecto. |
|
| Obtener trabajos asociados con un proyecto específico. |
|
| Obtener detalles de una regla de aprobación de solicitudes de fusión a nivel de proyecto específica. |
|
| Obtener reglas de aprobación de solicitudes de fusión a nivel de proyecto. |
|
| Obtener detalles de una configuración de aprobación de solicitudes de fusión a nivel de proyecto. |
|
| Obtener miembros de un proyecto específico. |
|
| Obtener detalles de una solicitud de fusión específica en un proyecto. |
|
| Obtener solicitudes de fusión para un proyecto específico. |
|
| Obtener información sobre runners en un proyecto. |
|
| Obtener estadísticas para un proyecto específico. |
|
| Obtener vulnerabilidades de seguridad de un proyecto (Ultimate). |
|
| Obtener información sobre proyectos. |
|
| Obtener información sobre una rama protegida específica en un proyecto. |
|
| Obtener información sobre ramas protegidas en un proyecto. |
|
| Obtener detalles de un entorno protegido específico. |
|
| Obtener una lista de entornos protegidos para un proyecto. |
|
| Obtener información sobre una etiqueta protegida específica en un proyecto. |
|
| Obtener información sobre etiquetas protegidas en un proyecto. |
|
| Obtener información sobre una release por su etiqueta en un proyecto. |
|
| Obtener información sobre releases en un proyecto. |
|
| Obtener información sobre paquetes de repositorio para un proyecto específico. |
|
| Obtener información sobre un runner específico. |
|
| Obtener trabajos para un runner específico. |
|
| Obtener información sobre runners. |
|
| Obtener un snippet específico. |
|
| Obtener lista de snippets. Puede filtrar por project_id. |
|
| Obtener información sobre una etiqueta específica en un proyecto. |
|
| Obtener información sobre etiquetas en un proyecto. |
|
| Obtener información sobre un usuario específico. |
|
| Obtener información sobre usuarios. |
|
| Obtener una sola vulnerabilidad por su ID global (Ultimate). |
|
| Obtener una lista de páginas wiki para un proyecto. |
|
| Obtener información sobre una página wiki específica. |
|
| Obtener aprobaciones para una solicitud de fusión específica. |
|
| Pausar o reanudar un runner específico. |
|
| Publicar el estado de compilación en un commit. |
|
| Proteger una rama específica en un proyecto. |
|
| Proteger un entorno para un proyecto. |
|
| Proteger una etiqueta en un proyecto. |
|
| Publicar un paquete de repositorio para un proyecto específico. |
|
| Registrar un nuevo runner. |
|
| Requerir aprobaciones de propietarios de código para una rama específica en un proyecto. |
|
| Restablecer el token de registro del runner de GitLab. |
|
| Restablecer el token de registro para el runner de un grupo. |
|
| Restablecer el token de registro para el runner de un proyecto. |
|
| Restablecer el token de autenticación para un runner. |
|
| Reintentar un trabajo específico dentro de un proyecto. |
|
| Revertir un commit. |
|
| Ejecutar un pipeline para un proyecto específico. |
|
| Ejecutar un horario de pipeline para un proyecto específico. |
|
| Ejecutar un trabajo específico dentro de un proyecto. |
|
| Compartir un proyecto específico con un grupo. |
|
| Detener un entorno para un proyecto. |
|
| Detener entornos obsoletos para un proyecto. |
|
| Tomar posesión de un horario de pipeline para un proyecto específico. |
|
| Desaprobar una solicitud de fusión específica. |
|
| Desarchivar un proyecto específico. |
|
| Desproteger una rama específica en un proyecto. |
|
| Desproteger un entorno para un proyecto. |
|
| Desproteger una etiqueta en un proyecto. |
|
| Actualizar un entorno existente para un proyecto. |
|
| Actualizar un epic de grupo. |
|
| Actualizar un issue. |
|
| Actualizar una etiqueta existente. |
|
| Actualizar un hito de proyecto. |
|
| Actualizar una nota. |
|
| Actualizar una regla de aprobación de solicitudes de fusión a nivel de proyecto existente. |
|
| Actualizar un entorno protegido para un proyecto. |
|
| Actualizar información sobre una release en un proyecto. |
|
| Actualizar detalles para un runner específico. |
|
| Actualizar un snippet. |
|
| Actualizar un usuario existente. |
|
| Actualizar una página wiki existente para un proyecto. |
|
| Subir un adjunto a una página wiki para un proyecto. |
|
| Verificar la autenticación del runner. |
34 herramienta(s) enrutada(s) por acción (predeterminado) · 196 herramienta(s) verbose 1:1. Cada una está habilitada salvo que su conmutador <DOMAIN>TOOL esté en false; MCP_TOOL_MODE selecciona la superficie (condensed predeterminado · verbose 1:1 · both). Generado automáticamente: no editar.
Los esquemas detallados de las herramientas, las formas de los parámetros y las restricciones de validación se conservan en docs/usage.md.
Selección y visibilidad dinámicas de herramientas
Este servidor MCP admite la selección dinámica del conjunto de herramientas y el filtrado de visibilidad en tiempo de ejecución. Esto le permite restringir el conjunto de herramientas expuestas para evitar saturar la ventana de contexto del LLM.
Puede configurar el filtrado de herramientas a través de varios canales de entrada:
Argumentos de CLI: pase
--toolso--toolsets(o sus contrapartes deshabilitadas--disabled-toolsy--disabled-toolsets) durante el inicio.Variables de entorno: defina las variables de entorno estándar:
MCP_ENABLED_TOOLS/MCP_DISABLED_TOOLSMCP_ENABLED_TAGS/MCP_DISABLED_TAGS
Cabeceras de solicitud HTTP SSE: pase cabeceras personalizadas durante la inicialización del transporte:
x-mcp-enabled-tools/x-mcp-disabled-toolsx-mcp-enabled-tags/x-mcp-disabled-tags
Parámetros de consulta de solicitud HTTP SSE: añada parámetros de consulta directamente a la URL de conexión del transporte:
?tools=tool1,tool2?tags=tag1
Cuando se suministran cadenas de consulta o parámetros, una capa de resolución de Knowledge Graph (sin LLM, que usa DynamicToolOrchestrator) relaciona las intenciones de consulta con etiquetas, nombres o descripciones de herramientas conocidas, con un fallback seguro y una actualización automática de caché en segundo plano cada 24 horas.
Ejemplos de configuración de MCP
Instale el extra
[mcp]orientado a conectores. Los ejemplos usangitlab-api[mcp]para añadir FastMCP / FastAPI a través deagent-utilities[mcp]; el núcleo requerido de Agent Utilities sigue incluyendoepistemic-graph[full]. El extra[agent-runtime]además habilita la orquestación de modelos.
Transporte stdio (IDE locales — Cursor, Claude Desktop, VS Code)
{
"mcpServers": {
"gitlab-mcp": {
"command": "uvx",
"args": [
"--from",
"gitlab-api[mcp]",
"gitlab-mcp"
],
"env": {
"MCP_TOOL_MODE": "intent",
"BRANCHESTOOL": "True",
"COMMITSTOOL": "True",
"CUSTOM_APITOOL": "True",
"DEPLOY_TOKENSTOOL": "True",
"ENVIRONMENTSTOOL": "True",
"EPICSTOOL": "True",
"GITLAB_TOKEN": "your_gitlab_token_here",
"GITLAB_URL": "https://gitlab.example.com",
"GRAPHQLTOOL": "True",
"GRAPHQL_OPSTOOL": "True",
"GROUPSTOOL": "True",
"ISSUESTOOL": "True",
"JOBSTOOL": "True",
"LABELSTOOL": "True",
"MEMBERSTOOL": "True",
"MERGE_REQUESTSTOOL": "True",
"MERGE_RULESTOOL": "True",
"MILESTONESTOOL": "True",
"MISCTOOL": "True",
"NAMESPACESTOOL": "True",
"NOTESTOOL": "True",
"PACKAGESTOOL": "True",
"PIPELINESTOOL": "True",
"PIPELINE_SCHEDULESTOOL": "True",
"PROJECTSTOOL": "True",
"PROTECTED_BRANCHESTOOL": "True",
"RELEASESTOOL": "True",
"RUNNERSTOOL": "True",
"SNIPPETSTOOL": "True",
"TAGSTOOL": "True",
"USERSTOOL": "True",
"VULNERABILITIESTOOL": "True",
"WIKITOOL": "True"
}
}
}
}Las referencias de tiempo de ejecución requieren un lanzador compatible con alias como GraphOS. Otros lanzadores deben omitir esas referencias e inyectar los valores resueltos a través de su propio límite de secretos de tiempo de ejecución.
Transporte Streamable-HTTP (en red / producción)
{
"mcpServers": {
"gitlab-mcp": {
"command": "uvx",
"args": [
"--from",
"gitlab-api[mcp]",
"gitlab-mcp",
"--transport",
"streamable-http",
"--port",
"8000"
],
"env": {
"TRANSPORT": "streamable-http",
"HOST": "127.0.0.1",
"PORT": "8000",
"MCP_TOOL_MODE": "intent",
"BRANCHESTOOL": "True",
"COMMITSTOOL": "True",
"CUSTOM_APITOOL": "True",
"DEPLOY_TOKENSTOOL": "True",
"ENVIRONMENTSTOOL": "True",
"EPICSTOOL": "True",
"GITLAB_TOKEN": "your_gitlab_token_here",
"GITLAB_URL": "https://gitlab.example.com",
"GRAPHQLTOOL": "True",
"GRAPHQL_OPSTOOL": "True",
"GROUPSTOOL": "True",
"ISSUESTOOL": "True",
"JOBSTOOL": "True",
"LABELSTOOL": "True",
"MEMBERSTOOL": "True",
"MERGE_REQUESTSTOOL": "True",
"MERGE_RULESTOOL": "True",
"MILESTONESTOOL": "True",
"MISCTOOL": "True",
"NAMESPACESTOOL": "True",
"NOTESTOOL": "True",
"PACKAGESTOOL": "True",
"PIPELINESTOOL": "True",
"PIPELINE_SCHEDULESTOOL": "True",
"PROJECTSTOOL": "True",
"PROTECTED_BRANCHESTOOL": "True",
"RELEASESTOOL": "True",
"RUNNERSTOOL": "True",
"SNIPPETSTOOL": "True",
"TAGSTOOL": "True",
"USERSTOOL": "True",
"VULNERABILITIESTOOL": "True",
"WIKITOOL": "True"
}
}
}
}Alternativamente, conéctese a una instancia Streamable-HTTP previamente desplegada mediante url:
{
"mcpServers": {
"gitlab-mcp": {
"url": "http://localhost:8000/gitlab-mcp/mcp"
}
}
}Ejecute una imagen de contenedor revisada como un hijo stdio de mínimo privilegio (sin listener ni puerto publicado):
docker run -i --rm \
--read-only \
--cap-drop=ALL \
--security-opt=no-new-privileges \
--pids-limit=256 \
--tmpfs /tmp:rw,noexec,nosuid,nodev,size=64m \
-e TRANSPORT=stdio \
-e MCP_TOOL_MODE=intent \
-e BRANCHESTOOL=True \
-e COMMITSTOOL=True \
-e CUSTOM_APITOOL=True \
-e DEPLOY_TOKENSTOOL=True \
-e ENVIRONMENTSTOOL=True \
-e EPICSTOOL=True \
-e GITLAB_TOKEN=your_gitlab_token_here \
-e GITLAB_URL=https://gitlab.example.com \
-e GRAPHQLTOOL=True \
-e GRAPHQL_OPSTOOL=True \
-e GROUPSTOOL=True \
-e ISSUESTOOL=True \
-e JOBSTOOL=True \
-e LABELSTOOL=True \
-e MEMBERSTOOL=True \
-e MERGE_REQUESTSTOOL=True \
-e MERGE_RULESTOOL=True \
-e MILESTONESTOOL=True \
-e MISCTOOL=True \
-e NAMESPACESTOOL=True \
-e NOTESTOOL=True \
-e PACKAGESTOOL=True \
-e PIPELINESTOOL=True \
-e PIPELINE_SCHEDULESTOOL=True \
-e PROJECTSTOOL=True \
-e PROTECTED_BRANCHESTOOL=True \
-e RELEASESTOOL=True \
-e RUNNERSTOOL=True \
-e SNIPPETSTOOL=True \
-e TAGSTOOL=True \
-e USERSTOOL=True \
-e VULNERABILITIESTOOL=True \
-e WIKITOOL=True \
registry.example.invalid/gitlab-api@sha256:<digest> gitlab-mcpPara HTTP de red contenedorizada, proporcione un ingress TLS autenticado (o
TLS directo del servidor), los MCP_ALLOWED_HOSTS exactos y una política CIDR exacta de proxy de
confianza a través del perfil de despliegue propiedad del operador. El generador
no emite ningún listener no autenticado no loopback.
Autogenerado a partir de la superficie de variables de entorno leída del código (MCP_TOOL_MODE + variables del paquete) — no editar.
Opciones de despliegue adicionales
gitlab-api puede ejecutarse como un proceso stdio local o un contenedor, o detrás de un
límite de red remoto. La
Guía de despliegue contiene el contrato de
transporte detallado.
Contenedor local — ejecuta una imagen inmutable revisada como un hijo stdio de mínimo privilegio, sin listener ni puerto publiated.
URL remora — conéctese mediante un ingress HTTPS autenticado proporcionado por el operador. Mantenga su URL, las referencias de identidad salientes, el perfil de confianza y los
MCP_ALLOWED_HOSTSexactos enAgentConfig.
Variables de entorno
Variables de entorno del paquete
Variable | Ejemplo | Descripción |
|
| |
|
| |
|
| opciones: stdio, streamable-http, sse |
|
| |
|
| |
| secret-injected | |
| secret-injected | |
|
| |
|
| opciones: none, embedded, remote |
|
| |
|
| |
|
| |
| secret-injected | |
| — | perfil TLS de AgentConfig denominado; en blanco se usa el predeterminado configurado |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
Variables heredadas de agent-utilities (se aplican a todos los conectores)
Variable | Ejemplo | Descripción |
|
| Superficie de herramientas: |
| — | Lista de permitidos de herramientas separada por comas |
| — | Lista de denegados de herramientas separada por comas |
| — | Lista de permitidos de etiquetas separada por comas |
| — | Lista de denegados de etiquetas separada por comas |
| — | Autenticación saliente del MCP hijo: |
| — | ID de cliente OIDC (autenticación de cuenta de servicio) |
|
| Referencia de secreto en tiempo de ejecución para la cuenta de servicio OIDC |
| — | Nombre de usuario HTTP Basic ( |
|
| Referencia de secreto en tiempo de ejecución para la autenticación HTTP Basic ( |
|
| Registro detallado (verbose) |
|
| Salida estándar sin buffer (recomendado en contenedores) |
|
| URL del servidor MCP al que se conecta el agente |
|
| Proveedor de LLM para el agente |
|
| ID de modelo para el agente |
|
| Servir la interfaz web AG-UI |
45 variables de paquete + 16 variables heredadas. Generado automáticamente desde .env.example + el conjunto compartido de agent-utilities — no editar.
Cada variable que lee el servidor.
Conexión y credenciales
El conector es de un solo host por defecto y multi-tenant cuando se configura
gitlab_instances (consulte Multi-Tenancy). Cuando no
hay instancias configuradas, recurre a los valores GITLAB_* de un solo host que se indican
a continuación.
Variable | Descripción | Predeterminado |
| URL base de la instancia de GitLab |
|
| Token de acceso personal/de proyecto de GitLab ( | — |
| Selector opcional de perfil TLS en tiempo de ejecución | (sin establecer) |
Las instancias múltiples se declaran una sola vez en
gitlab_instancesdentro de la configuración XDG compartida de agent-utilities (~/.config/agent-utilities/config.json) — cada entrada tienename,url,tokeny untls_profileopcional. Seleccione un tenant por nombre desde la fábrica de clientes; una instancia sin definir se resuelve a la primera configurada (o bienGITLAB_URL/GITLAB_TOKEN).
Servidor MCP / transporte
Variable | Descripción | Predeterminado |
|
|
|
| Host de enlace (transportes HTTP) |
|
| Puerto de enlace (transportes HTTP) |
|
| Superficie de herramientas: |
|
| Lista de permitidos/denegados de herramientas separada por comas | — |
| Lista de permitidos/denegados de etiquetas separada por comas | — |
| Registro detallado (verbose) |
|
| Salida estándar sin buffer (recomendado en contenedores) |
|
Alternancias de herramientas
Cada herramienta enrutada por acción se puede deshabilitar individualmente mediante su variable
de entorno de conmutación (establecida en false). La lista completa está en la tabla
Herramientas MCP disponibles anterior (p. ej. PROJECTSTOOL, MERGE_REQUESTSTOOL,
PIPELINESTOOL, GRAPHQLTOOL, CUSTOM_APITOOL).
Telemetría y gobernanza
Variable | Descripción | Predeterminado |
| Habilitar la exportación de OpenTelemetry |
|
| Endpoint del recopilador OTLP | — |
| Claves de autenticación OTLP | — |
| Protocolo OTLP (p. ej. | — |
| Modo de autorización: |
|
| Archivo de política integrado |
|
| URL del servidor remoto de Eunomia | — |
CLI del agente (solo runtime [agent] completo)
Variable | Descripción | Predeterminado |
| URL del servidor MCP al que se conecta el agente |
|
| Proveedor de LLM (p. ej. |
|
| ID de modelo (p. ej. |
|
| Servir la interfaz web AG-UI |
|
Consulte .env.example como punto de partida de copiar y pegar.
Agente
Este repositorio incluye un Pydantic AI Graph Agent totalmente integrado. Se comunica a través del Agent Control Protocol (ACP) e interactúa sin problemas con la Agent Web UI (AG-UI) y la interfaz de Terminal.
Ejecutar la CLI del agente
Para iniciar el agente interactivo de línea de comandos:
# Set credentials
export GITLAB_URL="your_value"
export GITLAB_TOKEN="your_value"
# Run the agent server
gitlab-agent --provider openai --model-id gpt-4oOrquestación con Docker Compose
El siguiente docker/agent.compose.yml configura conjuntamente el Agente, la Web UI y la interfaz de Terminal:
version: '3.8'
services:
gitlab-api-mcp:
image: example/gitlab-api:mcp
container_name: gitlab-api-mcp
hostname: gitlab-api-mcp
restart: always
env_file:
- ../.env
environment:
- PYTHONUNBUFFERED=1
- HOST=0.0.0.0
- PORT=8000
- TRANSPORT=streamable-http
ports:
- "8000:8000"
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
gitlab-api-agent:
image: example/gitlab-api@sha256:<digest>
container_name: gitlab-api-agent
hostname: gitlab-api-agent
restart: always
depends_on:
- gitlab-api-mcp
env_file:
- ../.env
command: [ "gitlab-agent" ]
environment:
- PYTHONUNBUFFERED=1
- HOST=0.0.0.0
- PORT=9017
- MCP_URL=http://gitlab-api-mcp:8000/mcp
- PROVIDER=${PROVIDER:-openai}
- MODEL_ID=${MODEL_ID:-gpt-4o}
- ENABLE_WEB_UI=True
- ENABLE_OTEL=True
ports:
- "9017:9017"
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:9017/health')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
Las explicaciones detalladas de la arquitectura de nodos del grafo, las configuraciones de habilidades personalizadas y las guías de trazas del agente están disponibles en docs/deployment.md.
Multi-Tenancy (múltiples instancias de GitLab)
El cliente es nativamente multi-tenant. El conjunto de instancias se declara una sola vez en la
configuración XDG compartida de agent-utilities (~/.config/agent-utilities/config.json) bajo
gitlab_instances — la misma lista que lee el indexador Knowledge-Graph de GitLab, de modo que una
única configuración impulsa tanto la indexación de código/metadatos como cada llamada API/MCP:
{
"gitlab_instances": [
{"name": "internal", "url": "https://gitlab.example.invalid", "token": "<GITLAB_TOKEN>", "tls_profile": "private-pki"},
{"name": "public", "url": "https://gitlab.com", "token": "<GITLAB_TOKEN>"}
]
}Seleccione un tenant por nombre desde la fábrica de clientes; una URL simple también funciona, y una
instancia sin definir se resuelve a la primera configurada (o bien GITLAB_URL/GITLAB_TOKEN):
from gitlab_api.auth import get_client
from gitlab_api.instances import list_configured_instances
internal = get_client(instance="internal") # resolves URL, token, and TLS profile
public = get_client(instance="public")
default = get_client() # first configured / GITLAB_URL fallback
names = [i.name for i in list_configured_instances()]El servidor MCP expone una herramienta gitlab_instances (action=list|get) para descubrir los
tenants configurados (los tokens nunca se devuelven). Cuando no hay instancias configuradas, el
conector recurre al GITLAB_URL/GITLAB_TOKEN de un solo host que siempre ha utilizado.
Seguridad y gobernanza
Construido directamente sobre el núcleo de agent-utilities, listo para empresas, los parámetros de seguridad estándar cuentan con soporte completo:
Control de acceso y aplicación de políticas
Políticas de Eunomia: Autorización de herramientas detallada y basada en políticas. Admite modos
none,embeddedlocal (mcp_policies.json) oremotecentralizado.Delegación de tokens OIDC: Cumple con el intercambio de tokens RFC 8693 para transmitir las credenciales de autenticación del usuario desde Web UI / ACP → Agent → MCP.
Credenciales con ámbito: El contexto de ejecución queda restringido a la identidad específica del llamante.
Matriz de seguridad en tiempo de ejecución
Característica | Funcionalidad | Habilitación |
Guardia de herramientas | Inspección de sensibilidad con validación de intervención humana | Habilitada por defecto |
Defensa contra inyección de prompts | Escaneo de entradas, monitoreo de repeticiones y bloqueos de bucles recursivos | Habilitada por defecto |
Guardia de seguridad de contexto | Detectores de bucles bloqueados y alertas preventivas de desbordamiento contextual | Habilitada por defecto |
Instalación
Elija el extra que coincida con lo que desea ejecutar:
Extra | Instala | Úselo cuando |
| Servidor MCP centrado en el conector ( | Solo ejecuta el servidor MCP (instalación / imagen más pequeña) |
| Runtime del agente ( | Ejecuta el agente integrado |
| Todo ( | Desarrollo / ambas superficies |
# Connector-focused MCP server (includes the shared graph engine)
uv pip install "gitlab-api[mcp]"
# Agent runtime (adds model orchestration to the shared graph engine)
uv pip install "gitlab-api[agent]"
# Everything (development)
uv pip install "gitlab-api[all]" # or: python -m pip install "gitlab-api[all]"Imágenes de contenedor (:mcp vs :agent)
Un docker/Dockerfile de varias etapas construye dos imágenes de tamaño adecuado, seleccionadas mediante --target:
Etiqueta de imagen | Destino de compilación | Contenido | Punto de entrada |
|
|
|
|
|
|
|
|
docker build --target mcp -t example/gitlab-api:mcp docker/ # connector-focused MCP server
docker build --target agent -t example/gitlab-api:agent-local docker/ # agent runtimedocker/mcp.compose.yml ejecuta el servidor :mcp centrado en el conector; docker/agent.compose.yml ejecuta el agente (digest de agente inmutable) con un sidecar :mcp co-ubicado.
Base de datos de grafo de conocimiento (epistemic-graph)
Tanto [mcp] como [agent] incluyen el motor epistemic-graph a través de la dependencia principal requerida de Agent Utilities (epistemic-graph[full]). El extra [mcp] mantiene el servidor centrado en el conector; [agent] habilita además la orquestación de modelos. Los despliegues locales pueden usar el motor incluido. Para producción o estado compartido, ejecuta epistemic-graph como un servicio de base de datos dedicado y configura el runtime para usarlo. Las recetas de despliegue (un solo nodo + Raft HA), la configuración de conexión y los diagramas de arquitectura están documentados en la guía de despliegue de epistemic-graph.
Documentación
La documentación completa se publica como el sitio oficial de documentación y es la referencia recomendada para la instalación, el despliegue y la operación diaria.
Página | Contenido |
pip, código fuente, extras, imagen Docker preconstruida | |
ejecutar los servidores MCP y de agente, Compose, Caddy + Technitium, configuración de env | |
las herramientas MCP, el cliente | |
desplegar GitLab con Docker | |
la superficie de herramientas enrutadas por acción y la arquitectura | |
registro de conceptos ( |
Propietarios del repositorio
Contribuir
¡Las contribuciones son bienvenidas! Por favor, asegura la calidad del código ejecutando las comprobaciones locales antes de enviar pull requests:
Formatea el código con
ruff format .Ejecuta el lint del código con
ruff check .Valida la seguridad de tipos con
mypy .Ejecuta las suites de pruebas con
pytest
Despliegue con agent-utilities-deployment
Aprovisiona este paquete con el flujo de trabajo consolidado agent-utilities-deployment. Selecciona una ruta de paquete instalado, fuente editable o contenedor inmutable; registra solo referencias de secretos de runtime y de perfiles TLS en AgentConfig; y ejecuta las compuertas de doctor, registro, políticas, observabilidad y rollback. Pide a tu agente que "despliegue gitlab-api con agent-utilities-deployment".
Modo de instalación | Comando |
Paquete instalado |
|
Fuente editable |
|
Contenedor inmutable | despliega |
El repositorio no incorpora ningún perfil de despliegue, valor de credencial, ruta de certificado ni endpoint específico del entorno. Proporciónalos en tiempo de ejecución a través de AgentConfig y del proveedor de secretos configurado.
Contrato de capacidad gobernada
Este paquete incluye una superficie de habilidades canónica y compacta con procedimientos especializados mantenidos como flujos de trabajo referenciados. Las herramientas MCP actuales, los metadatos de habilidades, connector_manifest.yml, la ontología, los mapeos, las formas, los fixtures, las migraciones, las huellas de esquemas de herramientas y los metadatos de certificación forman un único contrato de capacidad versionado. Valídalos conjuntamente; no confíes en nombres de herramientas obsoletos ni en envoltorios históricos de habilidades por tarea.
Los endpoints de runtime, las credenciales, la confianza de certificados, la identidad del inquilino, la retención y la política de observabilidad son entradas de despliegue y nunca valores empaquetados. Consulta Configuración, confianza y privacidad antes de habilitar un transporte de red, la ingesta del conector, la delegación de GraphOS o la exportación de trazas.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- -licenseAqualityAmaintenanceMCP Server for the GitLab API, enabling project management, file operations, and more.95,52589,748MIT
- AlicenseNot gradedqualityDmaintenanceProduction-ready MCP server providing GitLab integration with OAuth authentication, enabling AI assistants to manage projects, issues, merge requests, branches, files, and commits across GitLab instances.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for interacting with GitLab API, supporting both self-hosted instances and gitlab.com. Provides tools for managing issues, merge requests, code review, pipelines, milestones, releases, search, and file access.514MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for the GitLab REST API providing tools to manage projects, merge requests, pipelines, CI/CD variables, approvals, issues, and code reviews.5MIT
Related MCP Connectors
Go MCP server for GitLab: 2 dynamic tools reach 1000+ REST/GraphQL actions. Free/CE, no paid tier.
A MCP server built for developers enabling Git based project management with project and personal…
MCP server for Appcircle mobile CI/CD platform.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Knuckles-Team/gitlab-api'
If you have feedback or need assistance with the MCP directory API, please join our Discord server