albs-mcp
Officialalbs-mcp
Servidor MCP y CLI para AlmaLinux Build System (ALBS).
Da a los asistentes de codificación con IA acceso directo a ALBS: investigar fallos de compilación, crear compilaciones, firmar paquetes, todo mediante lenguaje natural.
Dos formas de usarlo:
Servidor MCP | CLI + Skill | |
Cómo funciona | La IA llama a herramientas mediante el protocolo MCP | La IA ejecuta comandos |
Configuración | Añadir a la configuración de MCP | Instalar |
Ideal para | Flujo de trabajo dedicado a ALBS | Configuración ligera, evitando la contaminación del contexto de MCP |
Funciona sin IA | No | Sí ( |
Qué puede hacer
Sin token (solo lectura)
Investigar fallos de compilación — el caso de uso principal. Dale al agente un ID de compilación y éste busca en los registros las firmas de fallo (
search_log), fijando el archivo, la línea y el diagnóstico exactos, y luego amplía el contexto alrededor. Sin adivinar desplazamientos de línea y sin gastar tokens en archivos de registro de más de 100k líneas.Obtener detalles de la compilación — estados de todas las tareas, paquetes, arquitecturas, tareas de firma.
Listar y buscar compilaciones — explorar compilaciones recientes, filtrar por nombre de paquete o estado.
Obtener plataformas — lista obtenida dinámicamente de todas las plataformas y sus arquitecturas soportadas.
Descargar y leer registros — cualquier archivo de registro de cualquier compilación: haz grep (
search_log), página desde abajo (read_log_tail) o lee un rango de líneas. Ninguna lectura puede explotar: cada línea se recorta a 500 caracteres y el resultado completo a 40k caracteres (max_line_chars=0/max_chars=0para levantar), de modo que un registro cuyas líneas individuales llegan a varios KB de flags del compilador vuelve en páginas que se unen exactamente en lugar de un blob sobredimensionado. La lectura descarga automáticamente el registro si aún no está en disco.Comprobar estado de firma — ver si las tareas de firma de una compilación se completaron o fallaron.
Listar productos — todos los objetivos de lanzamiento (productos) con sus plataformas, indicador oficial/comunidad e IDs.
Ver planes de lanzamiento — estado, paquetes fuente y repositorios objetivo de cualquier lanzamiento existente.
Con token JWT (autenticado)
Crear compilaciones — especificar paquetes, plataforma(s), rama/etiqueta/SRPM. Soporta múltiples plataformas en una sola compilación (p. ej. AlmaLinux-8 + AlmaLinux-9). Las arquitecturas por defecto son la lista completa de cada plataforma a menos que se sobrescriban. Soporta URLs Git personalizadas para repositorios fuera de
git.almalinux.org(p. ej. GitHub, GitLab). Soporta todas las opciones de mkbuild.py: compilaciones enlazadas, definiciones de mock, exclusiones, sabores, secureboot, módulos, con/sin.Firmar compilaciones — crear tareas de firma con una clave elegida.
Listar claves de firma — ver claves disponibles con IDs y asignaciones de plataforma.
Crear planes de lanzamiento — construir un plan de lanzamiento programado para una compilación (qué paquetes van a qué repositorios) dirigido a una plataforma + producto elegidos. El lanzamiento real nunca se realiza — esto solo crea el plan; la confirmación/publicación está bloqueada intencionalmente.
Eliminar compilaciones — bloqueado intencionalmente por seguridad.
Tipos de registro
ALBS produce varios archivos de registro por tarea de compilación. Los clave para depurar:
Registro | Qué contiene |
| Configuración del chroot, resolución de dependencias. Comprueba primero: si las dependencias fallaron, nada más importa. |
| Salida de stderr del proceso de compilación. A menudo tiene el mensaje de error más claro. |
| Registro completo de compilación (puede tener más de 100k líneas). La salida completa de rpmbuild, donde viven los errores de compilación. Haz grep con |
| Transiciones de estado de Mock. |
| Información de hardware del nodo de compilación. |
| Lista de paquetes instalados en el chroot. |
| Registro de tareas a nivel de ALBS (asignación de tareas, subida). |
| Configuración de Mock utilizada para la compilación. |
Related MCP server: Kerneldev MCP
Instalación
pip install git+https://github.com/AlmaLinux/albs-mcp.gitEsto instala tanto el servidor MCP (albs-mcp) como la CLI (albs).
Autenticación
El token JWT se lee de (comprobado en orden):
Variable de entorno
ALBS_JWT_TOKENArchivo
~/.albs/credentials(dict de Python con una clavetoken):
{"token": "eyJ..."}Sin token, tanto MCP como CLI funcionan en modo de solo lectura.
Nunca confirmes tokens reales. Usa variables de entorno o
~/.albs/credentials, no argumentos de CLI.
Opción de configuración 1: servidor MCP
Añade a la configuración de tu cliente MCP (p. ej. mcp.json o equivalente):
{
"mcpServers": {
"albs": {
"command": "albs-mcp"
}
}
}Opción de configuración 2: CLI + Skill
Para configuraciones donde la contaminación del contexto de MCP es una preocupación, o cuando se usan herramientas que no soportan MCP.
Paso 1. Instala el paquete (igual que arriba: te da el comando albs):
pip install git+https://github.com/AlmaLinux/albs-mcp.gitPaso 2. Añade las instrucciones de flujo de trabajo a tu herramienta de IA:
# Copy the skill directory to your tool's skills location, e.g.:
cp -r skills/albs-cli <YOUR_SKILLS_DIR>/albs-cliO copia el contenido de skills/albs-cli/SKILL.md en el archivo AGENTS.md de tu proyecto o en un archivo de instrucciones equivalente.
La skill enseña al agente de IA los mismos flujos de trabajo (orden de investigación, manejo de EPEL, firma) pero mediante comandos de shell albs en lugar de llamadas a herramientas MCP.
Paso 3. Verifica:
albs --helpLa CLI también funciona de forma independiente: no se necesita IA. Útil para scripts y uso manual en terminal.
Uso de la CLI
# List platforms
albs platforms
# Investigate a build
albs build-info 52679
albs failed-tasks 52679
# log-search greps for the failure and shows it with context — start here.
# It auto-downloads the log if needed (download-log is optional)
albs log-search 52679 "mock_build.395391.1772974729.log"
# ...or grep for something specific
albs log-search 52679 "mock_build.395391.1772974729.log" -e "Hunk #\d+ FAILED" -A 3
# When the search finds nothing, page the log bottom-up: each page prints the
# exact command for the page above it, so the pages join up with no gaps
albs log-tail 52679 "mock_build.395391.1772974729.log"
albs log-tail 52679 "mock_build.395391.1772974729.log" --before-line 772
# Search builds
albs search --project bash --page 2
# Create a build (requires JWT)
albs create-build AlmaLinux-9 bash --branch c9s
albs create-build AlmaLinux-10 https://example.com/pkg.src.rpm \
--from-srpm --add-epel-dist --arch x86_64_v2 \
--flavor EPEL-10 --flavor EPEL-10_altarch
# Build on multiple platforms at once
albs create-build AlmaLinux-8 bash --branch c9s \
--add-platform AlmaLinux-9
# Build from an external Git repo (e.g. GitHub)
albs create-build AlmaLinux-10 \
--git-url https://github.com/ykohut/leapp-data.git \
--branch devel-ng-0.23.0
# Independent tasks (disable the default sequential per-platform task chain,
# so packages build in parallel within each platform)
albs create-build AlmaLinux-9 bash glibc openssl --branch c9s --independent-tasks
# Sign a build (requires JWT)
albs sign-keys
albs sign-build 52679 --key-id 4
# Check whether signing finished
albs sign-status 52679
# List products (release targets) and view an existing release plan
albs products
albs release-plan 39229
# Create a release plan (requires JWT) — never performs the actual release
albs create-release-plan 62316 --platform AlmaLinux-8 --product AlmaLinux
# Release a PARTIAL build (only fully-completed packages):
albs create-release-plan 62316 --platform AlmaLinux-8 --product AlmaLinux \
--whole-packages-only
# Pass token via flag or env var
albs --token "eyJ..." sign-keys
ALBS_JWT_TOKEN="eyJ..." albs sign-keysEjecuta albs --help o albs <comando> --help para el uso completo.
Referencia de herramientas
Solo lectura (sin autenticación)
Herramienta | Descripción |
| Todas las plataformas y sus arquitecturas, obtenidas dinámicamente de ALBS |
| Resumen de la compilación: cada tarea con estado, arquitectura, paquete, referencia git, número de registros, además del estado de Secure Boot, sabores y cualquier compilación enlazada |
| Solo tareas fallidas con sus archivos de registro listados; los registros clave marcados con ★ |
| Todos los archivos de registro/configuración disponibles para una compilación en el servidor |
| Descargar un archivo de registro al disco local ( |
| Empieza aquí ante un fallo: haz grep en un registro para las firmas de fallo de compilación (o tu propio regex) y obtén cada coincidencia con números de línea y contexto; se descarga automáticamente si es necesario |
| Lee una página de un registro desde el final y pagina hacia arriba desde allí ( |
| Lee un rango específico de líneas de un registro (p. ej. alrededor de una coincidencia de |
| Explora compilaciones por página, filtra por nombre de paquete o estado de ejecución: muestra cada paquete como NVR más el estado de lanzamiento de la compilación; un filtro |
| Estado de las tareas de firma de una compilación (idle/in_progress/completed/failed) — úsalo después de |
| Lista todos los productos (objetivos de lanzamiento): ID, nombre, oficial/comunidad, plataformas |
| Ver un lanzamiento existente: estado, paquetes fuente, repositorios objetivo |
Autenticado (requiere JWT)
Herramienta | Descripción |
| Lista claves de firma: ID, nombre, keyid GPG, estado activo, asignaciones de plataforma |
| Crea una compilación: paquetes o URLs Git personalizadas + plataforma(s) + rama/etiqueta/srpm, con todas las opciones de mock |
| Crea una tarea de firma para una compilación con una clave elegida |
| Crea un plan de lanzamiento programado para una compilación + plataforma + producto. Nunca realiza el lanzamiento real — solo el plan |
| Bloqueado — realizar el lanzamiento real está deshabilitado; solo se admiten planes |
| Bloqueado — deshabilitado por seguridad |
Prompts
Los prompts de MCP son puntos de entrada de flujo de trabajo invocados por el usuario. En clientes como Claude Code aparecen como comandos de barra (/mcp__albs__<nombre>); los activa el usuario, no el agente.
Prompt | Argumentos | Descripción |
|
| Inicia el flujo de trabajo de investigación de fallos de compilación para un ID de compilación. Equivale a preguntar "¿por qué falló la compilación N?", pero como un comando parametrizado de un solo paso. |
|
| Inicia el flujo de trabajo de plan de lanzamiento para un ID de compilación (confirmar plataforma, elegir producto, crear el plan). Nunca realiza el lanzamiento real. |
Ejemplo (Claude Code):
/mcp__albs__investigate_build 52679
/mcp__albs__release_plan 52679investigate_build se expande en el flujo de trabajo de investigación (get_build_info → get_failed_tasks → descargar/leer los registros clave en orden), parametrizado por el ID de compilación. release_plan se expande en el flujo de trabajo de plan de lanzamiento (get_build_info → get_products → create_release_plan), y se detiene explícitamente en el plan: nunca confirma/publica.
Ejemplo: investigar una compilación fallida
Pregunte al agente: "¿Qué salió mal en la compilación 52679?"
El agente hará:
get_build_info(70368)— ve que solo falló la tarea i686; las otras 7 arquitecturas se compilaronget_failed_tasks(70368)— obtiene los archivos de registro, ★ marca los importantessearch_log(70368, "mock_build.441500.1785274367.log")— busca en el registro de 936 líneas / 600 KB y devuelve la causa con contexto, en una sola llamada:>>> 826 | usr/lib/common/mech_openssl.c:2766:52: error: passing argument 5 of 'EVP_PKEY_get_octet_string_param' from incompatible pointer type 833 | note: expected 'size_t *' {aka 'unsigned int *'} but argument is of type 'CK_ULONG *' {aka 'long unsigned int *'} >>> 853 | make[1]: *** [Makefile:9851: ...mech_openssl.lo] Error 1search_log(70368, "mock_root.441500.1785274367.log")— sin coincidencias: el chroot y las dependencias estaban bien, por lo que no es un fallo de dependenciasInforma: "
CK_ULONG *esunsigned long *mientras que OpenSSL quieresize_t *; en ILP32 (i686) esos son tipos diferentes, por lo que el rebase 3.27.0 solo se rompe en 32 bits."
Si la búsqueda no hubiera dado resultados, el siguiente paso es read_log_tail y luego la llamada ↑ earlier: ... que imprime, recorriendo el registro hacia arriba una página a la vez. Las páginas se dimensionan según el presupuesto de caracteres, no por número de líneas: 165 líneas de este mock_build, o 350 del mock_root de la misma compilación, y cada una comienza exactamente donde se detuvo la anterior, por lo que no se omite nada.
Observe lo que reemplaza el paso 3. read_log_tail en ese registro devuelve make: *** [Makefile:4615: all] Error 2 — el síntoma, cientos de líneas por debajo del error real, porque make -j sigue compilando después del primer fallo. Pedir suficiente cola para llegar al error devuelve en cambio 167 KB de líneas de comandos de gcc y puede exceder el límite de tamaño de resultado de la persona que llama. search_log devuelve 4 KB con la respuesta al principio.
Ejemplo: crear una compilación
Pregunte al agente: "Compile bash para AlmaLinux-9 desde la rama c9s"
El agente llamará:
create_build(packages=["bash"], platform="AlmaLinux-9", branch="c9s")Para varias plataformas a la vez:
create_build(packages=["bash"], platforms=["AlmaLinux-8", "AlmaLinux-9"], branch="c9s")Para repositorios Git externos (p. ej., GitHub), use git_urls:
create_build(git_urls=["https://github.com/ykohut/leapp-data.git"], platform="AlmaLinux-10", branch="devel-ng-0.23.0")Las arquitecturas se establecen por defecto en la lista completa de cada plataforma. Cuando se especifica arch_list con varias plataformas, se valida contra cada plataforma individualmente.
Ejemplo: crear un plan de lanzamiento
Pregunte al agente: "Cree un plan de lanzamiento para la compilación 62316 en AlmaLinux-8."
El agente hará:
get_build_info(62316)— confirma la plataforma y que la compilación tiene tareas completadasget_products()— lista los productos para que pueda elegir el destino (p. ej.,AlmaLinux)create_release_plan(build_id=62316, platform="AlmaLinux-8", product="AlmaLinux")— recopila las tareas de compilación completadas, resuelve los nombres de plataforma/producto a IDs y crea un plan programadoInforma del plan (estado, paquetes fuente, repositorios de destino) y deja claro que no se publicó nada — es solo un plan
El lanzamiento real (confirmar/publicar el plan) no se realiza intencionalmente. Pedir al agente que "libere de verdad" enruta a
commit_release, que está bloqueado y explica que solo se admiten planes.
Pruebas
pip install -e ".[test]"
# Unit tests (no network, 263 tests)
pytest tests/test_client_unit.py tests/test_server_unit.py tests/test_cli_unit.py -v
# Integration tests (hits real ALBS API, read-only, 30 tests)
pytest tests/test_integration.py -v
# All tests
pytest -vVariables de entorno
Variable | Descripción | Default |
| Token JWT para operaciones autenticadas | — |
| Directorio para registros descargados |
|
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
- AlicenseNot gradedqualityDmaintenanceMCP server and CLI for iOS development — build, test, automate, and diagnose from any AI agent or terminal.1MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server for intelligent Linux kernel configuration management and building. Enables AI assistants to generate, manage, and optimize kernel configurations and build kernels with comprehensive error detection.7GPL 2.0

evergreen-mcp-serverofficial
FlicenseAqualityAmaintenanceMCP server for MongoDB's Evergreen CI/CD platform, enabling AI assistants to manage projects, analyze builds, and troubleshoot failures via natural language.83- AlicenseAqualityDmaintenanceMCP server that bridges AI assistants with the SUSE Linux ecosystem, enabling safe access to openSUSE Wiki, OBS, and repositories for system management.221GPL 3.0
Related MCP Connectors
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
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/AlmaLinux/albs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server