albs-mcp
Officialalbs-mcp
MCP-сервер и CLI для AlmaLinux Build System (ALBS).
Даёт ИИ-ассистентам для программирования прямой доступ к ALBS — расследование сбоев сборки, создание сборок, подпись пакетов — всё через естественный язык.
Два способа использования:
MCP-сервер | CLI + Skill | |
Как это работает | ИИ вызывает инструменты через MCP-протокол | ИИ выполняет команды |
Настройка | Добавить в конфиг MCP | Установить |
Лучше всего для | Выделенный рабочий процесс ALBS | Лёгкая настройка, без загрязнения контекста MCP |
Работает без ИИ | Нет | Да ( |
Что умеет
Без токена (только чтение)
Расследование сбоев сборки — основной сценарий. Дайте агенту 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 создаёт несколько файлов логов для каждой задачи сборки. Ключевые для отладки:
Лог | Что внутри |
| Настройка chroot, разрешение зависимостей. Проверяйте первым — если зависимости не удались, остальное не имеет значения. |
| Вывод stderr из процесса сборки. Часто содержит самое понятное сообщение об ошибке. |
| Полный лог сборки (может быть 100 000+ строк). Полный вывод rpmbuild — там живут ошибки компиляции. Ищите по нему с помощью |
| Переходы состояний mock. |
| Информация об оборудовании узла сборки. |
| Список пакетов, установленных в chroot. |
| Лог задач уровня ALBS (назначение задач, загрузка). |
| Конфигурация mock, использованная для сборки. |
Related MCP server: Kerneldev MCP
Установка
pip install git+https://github.com/AlmaLinux/albs-mcp.gitЭта команда устанавливает и MCP-сервер (albs-mcp), и CLI (albs).
Аутентификация
JWT-токен считывается (проверяется по порядку):
Переменная окружения
ALBS_JWT_TOKENФайл
~/.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 --helpCLI также работает автономно — ИИ не нужен. Полезно для скриптов и ручного использования в терминале.
Использование 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 для полной справки.
Справочник инструментов
Только чтение (без аутентификации)
Инструмент | Описание |
| Все платформы и их архитектуры, получаемые динамически из ALBS |
| Сводка по сборке: каждая задача со статусом, архитектурой, пакетом, git-ссылкой, количеством логов, плюс состояние Secure Boot, флейворы и любые связанные сборки |
| Только неудачные задачи с перечислением их файлов логов; ключевые логи отмечены символом ★ |
| Все файлы логов/конфигураций, доступные для сборки на сервере |
| Скачать файл лога на локальный диск ( |
| Начните здесь при сбое: поиск по логу сигнатур ошибок сборки (или вашего собственного регулярного выражения) и получение каждого совпадения с номерами строк и контекстом; автоматически скачивает при необходимости |
| Чтение страницы лога с конца и прокрутка вверх оттуда ( |
| Чтение конкретного диапазона строк из лога (например, вокруг совпадения |
| Просмотр сборок по страницам, фильтрация по имени пакета или статусу выполнения — показывает каждый пакет как NVR плюс состояние релиза сборки; фильтр |
| Статус задач подписи сборки (idle/in_progress/completed/failed) — используйте после |
| Список всех продуктов (целей релиза): ID, имя, official/community, платформы |
| Просмотр существующего релиза: статус, исходные пакеты, целевые репозитории |
Аутентифицированные (требуется JWT)
Инструмент | Описание |
| Список ключей подписи: ID, имя, GPG keyid, статус активности, сопоставления платформ |
| Создание сборки: пакеты или пользовательские Git-URL + платформа(ы) + ветка/тег/srpm, со всеми опциями mock |
| Создание задачи подписи для сборки с выбранным ключом |
| Создание запланированного плана релиза для сборки + платформы + продукта. Никогда не выполняет сам релиз — только план |
| Заблокировано — выполнение фактического релиза отключено; поддерживаются только планы |
| Заблокировано — отключено для безопасности |
Промпты
Промпты MCP — это точки входа в рабочий процесс, вызываемые пользователем. В таких клиентах, как Claude Code, они отображаются как слэш-команды (/mcp__albs__<name>); их запускает пользователь, а не агент.
Промпт | Аргументы | Описание |
|
| Запускает рабочий процесс исследования сбоя сборки для идентификатора сборки. Эквивалентно вопросу «почему сборка N упала?», но в виде одношаговой параметризованной команды. |
|
| Запускает рабочий процесс создания плана релиза для идентификатора сборки (подтвердить платформу, выбрать продукт, создать план). Никогда не выполняет сам релиз. |
Пример (Claude Code):
/mcp__albs__investigate_build 52679
/mcp__albs__release_plan 52679investigate_build разворачивается в рабочий процесс исследования (get_build_info → get_failed_tasks → загрузка/чтение ключевых логов по порядку), параметризованный идентификатором сборки. release_plan разворачивается в рабочий процесс создания плана релиза (get_build_info → get_products → create_release_plan) и явно останавливается на плане — он никогда не коммитит и не публикует.
Пример: исследование упавшей сборки
Спросите агента: «Что пошло не так в сборке 52679?»
Агент выполнит:
get_build_info(70368)— видит, что упала только задача i686; остальные 7 архитектур собралисьget_failed_tasks(70368)— получает файлы логов, ★ отмечает важные из них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 1search_log(70368, "mock_root.441500.1785274367.log")— нет совпадений: chroot и зависимости в порядке, значит, это не сбой зависимостейСообщает: "
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.»
Агент выполнит:
get_build_info(62316)— подтверждает платформу и то, что у сборки есть завершённые задачиget_products()— выводит список продуктов, чтобы вы могли выбрать цель (например,AlmaLinux)create_release_plan(build_id=62316, platform="AlmaLinux-8", product="AlmaLinux")— собирает завершённые задачи сборки, преобразует имена платформы и продукта в идентификаторы и создаёт запланированный планСообщает план (статус, исходные пакеты, целевые репозитории) и поясняет, что ничего не опубликовано — это только план
Сам релиз (коммит/публикация плана) намеренно не выполняется. Если попросить агента «выпустить по-настоящему», запрос направляется на
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Переменные окружения
Переменная | Описание | По умолчанию |
| JWT-токен для аутентифицированных операций | — |
| Каталог для загруженных логов |
|
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