Skip to main content
Glama
AlmaLinux

albs-mcp

Official
by AlmaLinux

albs-mcp

MCP-сервер и CLI для AlmaLinux Build System (ALBS).

Даёт ИИ-ассистентам для программирования прямой доступ к ALBS — расследование сбоев сборки, создание сборок, подпись пакетов — всё через естественный язык.

Два способа использования:

MCP-сервер

CLI + Skill

Как это работает

ИИ вызывает инструменты через MCP-протокол

ИИ выполняет команды albs через оболочку

Настройка

Добавить в конфиг MCP

Установить albs + добавить skill в ваш ИИ-инструмент

Лучше всего для

Выделенный рабочий процесс ALBS

Лёгкая настройка, без загрязнения контекста MCP

Работает без ИИ

Нет

Да (albs работает как самостоятельный CLI)

Что умеет

Без токена (только чтение)

  • Расследование сбоев сборки — основной сценарий. Дайте агенту ID сборки, и он просмотрит логи на предмет сигнатур ошибок (search_log), точно определяя файл, строку и диагностику, затем расширяет контекст вокруг них. Никаких догадок о смещениях строк и никакого сжигания токенов на файлы логов размером более 100 000 строк.

  • Получение деталей сборки — статусы всех задач, пакетов, архитектур, задач подписи.

  • Список и поиск сборок — просмотр последних сборок, фильтрация по имени пакета или статусу.

  • Получение платформ — динамически получаемый список всех платформ и поддерживаемых ими архитектур.

  • Скачивание и чтение логов — любой файл лога из любой сборки: поиск по нему (search_log), чтение снизу вверх (read_log_tail) или чтение диапазона строк. Ни одно чтение не может «взорваться»: каждая строка обрезается до 500 символов, а весь результат — до 40 000 символов (max_line_chars=0 / max_chars=0 для снятия ограничений), так что лог, отдельные строки которого достигают нескольких КБ флагов компилятора, возвращается страницами, которые точно стыкуются, а не одним раздутым блоком. Чтение автоматически скачивает лог, если его ещё нет на диске.

  • Проверка статуса подписи — видеть, завершились ли задачи подписи для сборки или завершились с ошибкой.

  • Список продуктов — все цели релиза (продукты) с их платформами, флагом official/community и ID.

  • Просмотр планов релиза — статус, исходные пакеты и целевые репозитории любого существующего релиза.

С JWT-токеном (аутентифицированный доступ)

  • Создание сборок — указание пакетов, платформы(ы), ветки/тега/SRPM. Поддерживает несколько платформ в одной сборке (например, AlmaLinux-8 + AlmaLinux-9). Архитектуры по умолчанию соответствуют полному списку каждой платформы, если вы не переопределите их. Поддерживает пользовательские Git-URL для репозиториев вне git.almalinux.org (например, GitHub, GitLab). Поддерживает все опции mkbuild.py: связанные сборки, mock-определения, исключения, флейворы, secureboot, модули, with/without.

  • Подпись сборок — создание задач подписи с выбранным ключом.

  • Список ключей подписи — просмотр доступных ключей с ID и сопоставлениями платформ.

  • Создание планов релиза — создание запланированного плана релиза для сборки (какие пакеты идут в какие репозитории) с выбором платформы + продукта. Сам релиз никогда не выполняется — создаётся только план; фиксация/публикация намеренно заблокированы.

  • Удаление сборок — намеренно заблокировано для безопасности.

Типы логов

ALBS создаёт несколько файлов логов для каждой задачи сборки. Ключевые для отладки:

Лог

Что внутри

mock_root

Настройка chroot, разрешение зависимостей. Проверяйте первым — если зависимости не удались, остальное не имеет значения.

mock_stderr

Вывод stderr из процесса сборки. Часто содержит самое понятное сообщение об ошибке.

mock_build

Полный лог сборки (может быть 100 000+ строк). Полный вывод rpmbuild — там живут ошибки компиляции. Ищите по нему с помощью search_log; его хвост показывает только ошибку обёртки make, а не причину.

mock_state

Переходы состояний mock.

mock_hw_info

Информация об оборудовании узла сборки.

mock_installed_pkgs

Список пакетов, установленных в chroot.

albs

Лог задач уровня ALBS (назначение задач, загрузка).

mock.*.cfg

Конфигурация mock, использованная для сборки.

Related MCP server: Kerneldev MCP

Установка

pip install git+https://github.com/AlmaLinux/albs-mcp.git

Эта команда устанавливает и MCP-сервер (albs-mcp), и CLI (albs).

Аутентификация

JWT-токен считывается (проверяется по порядку):

  1. Переменная окружения ALBS_JWT_TOKEN

  2. Файл ~/.albs/credentials (Python-словарь с ключом token):

{"token": "eyJ..."}

Без токена и MCP, и CLI работают в режиме только для чтения.

Никогда не коммитьте реальные токены. Используйте переменные окружения или ~/.albs/credentials, а не аргументы CLI.

Вариант настройки 1: MCP-сервер

Добавьте в конфиг вашего MCP-клиента (например, mcp.json или эквивалент):

{
  "mcpServers": {
    "albs": {
      "command": "albs-mcp"
    }
  }
}

Вариант настройки 2: CLI + Skill

Для случаев, когда загрязнение контекста MCP вызывает беспокойство, или при использовании инструментов, не поддерживающих MCP.

Шаг 1. Установите пакет (как указано выше — даёт вам команду albs):

pip install git+https://github.com/AlmaLinux/albs-mcp.git

Шаг 2. Добавьте инструкции рабочего процесса в ваш ИИ-инструмент:

# Copy the skill directory to your tool's skills location, e.g.:
cp -r skills/albs-cli <YOUR_SKILLS_DIR>/albs-cli

Или скопируйте содержимое skills/albs-cli/SKILL.md в файл AGENTS.md вашего проекта или эквивалентный файл инструкций.

Skill обучает ИИ-агента тем же рабочим процессам (порядок расследования, обработка EPEL, подпись), но через команды оболочки albs вместо вызовов инструментов MCP.

Шаг 3. Проверка:

albs --help

CLI также работает автономно — ИИ не нужен. Полезно для скриптов и ручного использования в терминале.

Использование 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-keys

Выполните albs --help или albs <command> --help для полной справки.

Справочник инструментов

Только чтение (без аутентификации)

Инструмент

Описание

get_platforms

Все платформы и их архитектуры, получаемые динамически из ALBS

get_build_info

Сводка по сборке: каждая задача со статусом, архитектурой, пакетом, git-ссылкой, количеством логов, плюс состояние Secure Boot, флейворы и любые связанные сборки

get_failed_tasks

Только неудачные задачи с перечислением их файлов логов; ключевые логи отмечены символом ★

list_build_logs

Все файлы логов/конфигураций, доступные для сборки на сервере

download_log

Скачать файл лога на локальный диск (/tmp/albs-logs/<build_id>/)

search_log

Начните здесь при сбое: поиск по логу сигнатур ошибок сборки (или вашего собственного регулярного выражения) и получение каждого совпадения с номерами строк и контекстом; автоматически скачивает при необходимости

read_log_tail

Чтение страницы лога с конца и прокрутка вверх оттуда (before_line); каждый результат печатает точный вызов для страницы выше. Показывает, как завершилась сборка, а не где находится ошибка компиляции

read_log_range

Чтение конкретного диапазона строк из лога (например, вокруг совпадения search_log); останавливается при достижении лимита размера и сообщает, как продолжить

search_builds

Просмотр сборок по страницам, фильтрация по имени пакета или статусу выполнения — показывает каждый пакет как NVR плюс состояние релиза сборки; фильтр project выводит совпавший пакет на отдельной строке match:

get_sign_task_status

Статус задач подписи сборки (idle/in_progress/completed/failed) — используйте после sign_build

get_products

Список всех продуктов (целей релиза): ID, имя, official/community, платформы

get_release_plan

Просмотр существующего релиза: статус, исходные пакеты, целевые репозитории

Аутентифицированные (требуется JWT)

Инструмент

Описание

get_sign_keys

Список ключей подписи: ID, имя, GPG keyid, статус активности, сопоставления платформ

create_build

Создание сборки: пакеты или пользовательские Git-URL + платформа(ы) + ветка/тег/srpm, со всеми опциями mock

sign_build

Создание задачи подписи для сборки с выбранным ключом

create_release_plan

Создание запланированного плана релиза для сборки + платформы + продукта. Никогда не выполняет сам релиз — только план

commit_release

Заблокировано — выполнение фактического релиза отключено; поддерживаются только планы

delete_build

Заблокировано — отключено для безопасности

Промпты

Промпты MCP — это точки входа в рабочий процесс, вызываемые пользователем. В таких клиентах, как Claude Code, они отображаются как слэш-команды (/mcp__albs__<name>); их запускает пользователь, а не агент.

Промпт

Аргументы

Описание

investigate_build

build_id

Запускает рабочий процесс исследования сбоя сборки для идентификатора сборки. Эквивалентно вопросу «почему сборка N упала?», но в виде одношаговой параметризованной команды.

release_plan

build_id

Запускает рабочий процесс создания плана релиза для идентификатора сборки (подтвердить платформу, выбрать продукт, создать план). Никогда не выполняет сам релиз.

Пример (Claude Code):

/mcp__albs__investigate_build 52679
/mcp__albs__release_plan 52679

investigate_build разворачивается в рабочий процесс исследования (get_build_infoget_failed_tasks → загрузка/чтение ключевых логов по порядку), параметризованный идентификатором сборки. release_plan разворачивается в рабочий процесс создания плана релиза (get_build_infoget_productscreate_release_plan) и явно останавливается на плане — он никогда не коммитит и не публикует.

Пример: исследование упавшей сборки

Спросите агента: «Что пошло не так в сборке 52679?»

Агент выполнит:

  1. get_build_info(70368) — видит, что упала только задача i686; остальные 7 архитектур собрались

  2. get_failed_tasks(70368) — получает файлы логов, ★ отмечает важные из них

  3. search_log(70368, "mock_build.441500.1785274367.log") — просматривает лог из 936 строк / 600 КБ и возвращает причину с контекстом одним вызовом:

    >>> 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 1
  4. search_log(70368, "mock_root.441500.1785274367.log") — нет совпадений: chroot и зависимости в порядке, значит, это не сбой зависимостей

  5. Сообщает: "CK_ULONG * — это unsigned long *, тогда как OpenSSL ожидает size_t *; на ILP32 (i686) это разные типы, поэтому rebase на 3.27.0 ломается только на 32-битных архитектурах."

Если бы поиск не дал результатов, следующим шагом был бы read_log_tail, а затем вызов ↑ earlier: ..., который он выводит, — так лог просматривается вверх, страница за страницей. Размер страниц задаётся символьным бюджетом, а не числом строк — 165 строк для этого mock_build, или 350 для mock_root той же сборки, — и каждая начинается ровно там, где остановилась предыдущая, так что ничего не пропускается.

Обратите внимание, что именно заменяет шаг 3. read_log_tail для этого лога возвращает make: *** [Makefile:4615: all] Error 2 — симптом, находящийся на сотни строк ниже настоящей ошибки, потому что make -j продолжает компиляцию после первого сбоя. Если запросить достаточно длинный хвост, чтобы добраться до ошибки, вместо этого вернётся 167 КБ команд gcc, что может превысить лимит размера результата вызывающей стороны. search_log возвращает 4 КБ с ответом в начале.

Пример: создание сборки

Спросите агента: «Собери bash для AlmaLinux-9 из ветки c9s»

Агент вызовет:

create_build(packages=["bash"], platform="AlmaLinux-9", branch="c9s")

Для нескольких платформ сразу:

create_build(packages=["bash"], platforms=["AlmaLinux-8", "AlmaLinux-9"], branch="c9s")

Для внешних Git-репозиториев (например, GitHub) используйте git_urls:

create_build(git_urls=["https://github.com/ykohut/leapp-data.git"], platform="AlmaLinux-10", branch="devel-ng-0.23.0")

По умолчанию архитектуры соответствуют полному списку каждой платформы. Когда arch_list указан вместе с несколькими платформами, он проверяется отдельно для каждой платформы.

Пример: создание плана релиза

Спросите агента: «Создай план релиза для сборки 62316 на AlmaLinux-8.»

Агент выполнит:

  1. get_build_info(62316) — подтверждает платформу и то, что у сборки есть завершённые задачи

  2. get_products() — выводит список продуктов, чтобы вы могли выбрать цель (например, AlmaLinux)

  3. create_release_plan(build_id=62316, platform="AlmaLinux-8", product="AlmaLinux") — собирает завершённые задачи сборки, преобразует имена платформы и продукта в идентификаторы и создаёт запланированный план

  4. Сообщает план (статус, исходные пакеты, целевые репозитории) и поясняет, что ничего не опубликовано — это только план

Сам релиз (коммит/публикация плана) намеренно не выполняется. Если попросить агента «выпустить по-настоящему», запрос направляется на commit_release, который заблокирован и сообщает, что поддерживаются только планы.

Тесты

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 -v

Переменные окружения

Переменная

Описание

По умолчанию

ALBS_JWT_TOKEN

JWT-токен для аутентифицированных операций

ALBS_LOG_DIR

Каталог для загруженных логов

/tmp/albs-logs

A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    An 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.
    7
    GPL 2.0
  • A
    license
    A
    quality
    D
    maintenance
    MCP server that bridges AI assistants with the SUSE Linux ecosystem, enabling safe access to openSUSE Wiki, OBS, and repositories for system management.
    22
    1
    GPL 3.0

View all related MCP servers

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

View all MCP Connectors

Latest Blog Posts

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