Skip to main content
Glama
AlmaLinux

albs-mcp

Official
by AlmaLinux

albs-mcp

MCP-Server und CLI für AlmaLinux Build System (ALBS).

Gibt KI-Codierungsassistenten direkten Zugriff auf ALBS – Build-Fehler untersuchen, Builds erstellen, Pakete signieren, alles über natürliche Sprache.

Zwei Verwendungsmöglichkeiten:

MCP server

CLI + Skill

Funktionsweise

KI ruft Tools über das MCP-Protokoll auf

KI führt albs-Befehle über die Shell aus

Einrichtung

Zu MCP-Konfiguration hinzufügen

albs installieren + Skill zu Ihrem KI-Tool hinzufügen

Am besten geeignet

Dedizierter ALBS-Workflow

Leichtgewichtige Einrichtung, vermeidet MCP-Kontextverschmutzung

Funktioniert ohne KI

Nein

Ja (albs funktioniert als eigenständige CLI)

Was es kann

Ohne Token (nur lesend)

  • Build-Fehler untersuchen – der Hauptanwendungsfall. Geben Sie dem Agenten eine Build-ID und er durchsucht die Logs nach den Fehlersignaturen (search_log), lokalisiert die genaue Datei, Zeile und Diagnose und erweitert dann den Kontext darum. Kein Raten bei Zeilenoffsets und kein Verbrennen von Tokens für Logdateien mit über 100.000 Zeilen.

  • Build-Details abrufen – Status aller Tasks, Pakete, Architekturen, Signier-Tasks.

  • Builds auflisten und durchsuchen – aktuelle Builds durchsuchen, nach Paketname oder Status filtern.

  • Plattformen abrufen – dynamisch abgerufene Liste aller Plattformen und ihrer unterstützten Architekturen.

  • Logs herunterladen und lesen – jede Logdatei von jedem Build: mit search_log durchsuchen, von unten blättern (read_log_tail) oder einen Zeilenbereich lesen. Kein Lesevorgang kann explodieren: jede Zeile wird auf 500 Zeichen gekürzt und das gesamte Ergebnis auf 40k Zeichen (max_line_chars=0 / max_chars=0 zum Aufheben), sodass ein Log, dessen einzelne Zeilen mehrere KB Compiler-Flags enthalten, in Seiten zurückkommt, die exakt zusammenpassen, statt eines überdimensionierten Blobs. Beim Lesen wird das Log automatisch heruntergeladen, falls es noch nicht auf der Platte ist.

  • Signierstatus prüfen – sehen, ob Signier-Tasks für einen Build abgeschlossen oder fehlgeschlagen sind.

  • Produkte auflisten – alle Release-Ziele (Produkte) mit ihren Plattformen, offiziell/Community-Flag und IDs.

  • Release-Pläne anzeigen – Status, Quellpakete und Ziel-Repositories eines vorhandenen Releases.

Mit einem JWT-Token (authentifiziert)

  • Builds erstellen – Pakete, Plattform(en), Branch/Tag/SRPM angeben. Unterstützt mehrere Plattformen in einem einzigen Build (z. B. AlmaLinux-8 + AlmaLinux-9). Architekturen standardmäßig auf die vollständige Liste jeder Plattform, sofern nicht überschrieben. Unterstützt benutzerdefinierte Git-URLs für Repos außerhalb von git.almalinux.org (z. B. GitHub, GitLab). Unterstützt alle mkbuild.py-Optionen: verknüpfte Builds, Mock-Definitionen, Ausschlüsse, Flavors, Secureboot, Module, with/without.

  • Builds signieren – Signier-Tasks mit einem gewählten Schlüssel erstellen.

  • Signierschlüssel auflisten – verfügbare Schlüssel mit IDs und Plattform-Zuordnungen anzeigen.

  • Release-Pläne erstellen – einen geplanten Release-Plan für einen Build erstellen (welche Pakete in welche Repositories gehen), der auf eine gewählte Plattform + Produkt abzielt. Der eigentliche Release wird nie durchgeführt – dies erstellt nur den Plan; Committen/Veröffentlichen ist absichtlich blockiert.

  • Builds löschen – aus Sicherheitsgründen absichtlich blockiert.

Log-Typen

ALBS erzeugt mehrere Logdateien pro Build-Task. Die wichtigsten für die Fehlersuche:

Log

Was darin enthalten ist

mock_root

Chroot-Einrichtung, Abhängigkeitsauflösung. Zuerst prüfen – wenn Abhängigkeiten fehlgeschlagen sind, ist nichts anderes wichtig.

mock_stderr

Stderr-Ausgabe des Build-Prozesses. Enthält oft die klarste Fehlermeldung.

mock_build

Vollständiges Build-Log (kann über 100.000 Zeilen haben). Die komplette rpmbuild-Ausgabe – dort leben Kompilierfehler. Mit search_log durchsuchen; das Ende zeigt nur den make-Wrapper-Fehler, nicht die Ursache.

mock_state

Mock-Zustandsübergänge.

mock_hw_info

Hardware-Informationen des Build-Knotens.

mock_installed_pkgs

Liste der im Chroot installierten Pakete.

albs

ALBS-Level-Task-Log (Task-Zuweisung, Upload).

mock.*.cfg

Mock-Konfiguration, die für den Build verwendet wurde.

Related MCP server: Kerneldev MCP

Installation

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

Dies installiert sowohl den MCP-Server (albs-mcp) als auch die CLI (albs).

Authentifizierung

Das JWT-Token wird gelesen aus (in dieser Reihenfolge geprüft):

  1. Umgebungsvariable ALBS_JWT_TOKEN

  2. Datei ~/.albs/credentials (Python-Dict mit einem token-Schlüssel):

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

Ohne Token funktionieren sowohl MCP als auch CLI im Nur-Lese-Modus.

Committen Sie niemals echte Tokens. Verwenden Sie Umgebungsvariablen oder ~/.albs/credentials, nicht CLI-Argumente.

Setup-Option 1: MCP-Server

Fügen Sie zu Ihrer MCP-Client-Konfiguration hinzu (z. B. mcp.json oder Äquivalent):

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

Setup-Option 2: CLI + Skill

Für Setups, bei denen MCP-Kontextverschmutzung ein Problem ist, oder wenn Sie Tools verwenden, die MCP nicht unterstützen.

Schritt 1. Installieren Sie das Paket (wie oben – gibt Ihnen den albs-Befehl):

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

Schritt 2. Fügen Sie die Workflow-Anweisungen zu Ihrem KI-Tool hinzu:

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

Oder kopieren Sie den Inhalt von skills/albs-cli/SKILL.md in die AGENTS.md Ihres Projekts oder eine gleichwertige Anweisungsdatei.

Das Skill lehrt den KI-Agenten dieselben Workflows (Untersuchungsreihenfolge, EPEL-Handhabung, Signieren), aber über albs-Shell-Befehle anstelle von MCP-Tool-Aufrufen.

Schritt 3. Überprüfen:

albs --help

Die CLI funktioniert auch eigenständig – keine KI erforderlich. Nützlich für Skripte und manuelle Terminalnutzung.

CLI-Nutzung

# 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

Führen Sie albs --help oder albs <command> --help für die vollständige Nutzung aus.

Tool-Referenz

Nur lesen (ohne Authentifizierung)

Tool

Beschreibung

get_platforms

Alle Plattformen und ihre Architekturen, dynamisch von ALBS abgerufen

get_build_info

Build-Zusammenfassung: jeder Task mit Status, Arch, Paket, Git-Ref, Log-Anzahl, plus Secure-Boot-Status, Flavors und alle verknüpften Builds

get_failed_tasks

Nur fehlgeschlagene Tasks mit ihren Logdateien aufgelistet; wichtige Logs mit ★ markiert

list_build_logs

Alle Log-/Konfigurationsdateien, die für einen Build auf dem Server verfügbar sind

download_log

Laden Sie eine Logdatei auf die lokale Festplatte herunter (/tmp/albs-logs/<build_id>/)

search_log

Beginnen Sie hier bei einem Fehler: Durchsuchen Sie ein Log nach den Build-Fehler-Signaturen (oder Ihrem eigenen Regex) und erhalten Sie jeden Treffer mit Zeilennummern und Kontext; lädt bei Bedarf automatisch herunter

read_log_tail

Lesen Sie eine Seite eines Logs vom Ende und blättern Sie von dort nach oben (before_line); jedes Ergebnis gibt den genauen Aufruf für die Seite darüber aus. Zeigt, wie der Build beendet wurde, nicht wo der Kompilierfehler ist

read_log_range

Lesen Sie einen bestimmten Zeilenbereich aus einem Log (z. B. um einen search_log-Treffer); stoppt beim Größenbudget und sagt Ihnen, wie Sie fortfahren

search_builds

Durchsuchen Sie Builds seitenweise, filtern Sie nach Paketname oder Ausführungsstatus – zeigt jedes Paket als NVR plus den Release-Status des Builds; ein project-Filter listet das passende Paket in einer eigenen match:-Zeile

get_sign_task_status

Status der Signier-Tasks eines Builds (idle/in_progress/completed/failed) – nach sign_build verwenden

get_products

Alle Produkte (Release-Ziele) auflisten: ID, Name, offiziell/Community, Plattformen

get_release_plan

Ein vorhandenes Release anzeigen: Status, Quellpakete, Ziel-Repositories

Authentifiziert (JWT erforderlich)

Tool

Beschreibung

get_sign_keys

Signierschlüssel auflisten: ID, Name, GPG-Key-ID, aktiver Status, Plattform-Zuordnungen

create_build

Einen Build erstellen: Pakete oder benutzerdefinierte Git-URLs + Plattform(en) + Branch/Tag/SRPM, mit allen Mock-Optionen

sign_build

Einen Signier-Task für einen Build mit einem gewählten Schlüssel erstellen

create_release_plan

Einen geplanten Release-Plan für einen Build + Plattform + Produkt erstellen. Führt den eigentlichen Release nie durch – nur den Plan

commit_release

Blockiert – die Durchführung des eigentlichen Releases ist deaktiviert; nur Pläne werden unterstützt

delete_build

Blockiert – aus Sicherheitsgründen deaktiviert

Prompts

MCP-Prompts sind benutzeraufgerufene Workflow-Einstiegspunkte. In Clients wie Claude Code erscheinen sie als Slash-Befehle (/mcp__albs__<name>); der Benutzer löst sie aus, nicht der Agent.

Prompt

Argumente

Beschreibung

investigate_build

build_id

Startet den Workflow zur Untersuchung von Build-Fehlern für eine Build-ID. Entspricht der Frage „Warum ist Build N fehlgeschlagen?“, jedoch als einstufiger parametrisierter Befehl.

release_plan

build_id

Startet den Release-Plan-Workflow für eine Build-ID (Plattform bestätigen, Produkt wählen, Plan erstellen). Führt die eigentliche Veröffentlichung nie durch.

Beispiel (Claude Code):

/mcp__albs__investigate_build 52679
/mcp__albs__release_plan 52679

investigate_build erweitert sich zum Untersuchungs-Workflow (get_build_infoget_failed_tasks → Herunterladen/Lesen der wichtigsten Protokolle in der richtigen Reihenfolge), parametrisiert durch die Build-ID. release_plan erweitert sich zum Release-Plan-Workflow (get_build_infoget_productscreate_release_plan) und endet ausdrücklich beim Plan – es committet/veröffentlicht nie.

Beispiel: Untersuchung eines fehlgeschlagenen Builds

Fragen Sie den Agenten: „Was ist bei Build 52679 schiefgelaufen?"

Der Agent wird:

  1. get_build_info(70368) — erkennt, dass nur die i686-Aufgabe fehlgeschlagen ist; die anderen 7 Architekturen wurden gebaut

  2. get_failed_tasks(70368) — holt die Protokolldateien, ★ markiert die wichtigen

  3. search_log(70368, "mock_build.441500.1785274367.log") — durchsucht das 936-zeilige / 600-KB-Protokoll mit grep und liefert die Ursache mit Kontext in einem Aufruf:

    >>> 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") — keine Treffer: Das Chroot und die Abhängigkeiten waren in Ordnung, also handelt es sich nicht um einen Abhängigkeitsfehler

  5. Meldet: CK_ULONG * ist unsigned long *, während OpenSSL size_t * erwartet; auf ILP32 (i686) sind das verschiedene Typen, daher bricht das 3.27.0-Rebase nur auf 32-Bit."

Wäre die Suche erfolglos geblieben, wäre der nächste Schritt read_log_tail und dann der davon ausgegebene Aufruf ↑ earlier: ..., mit dem das Protokoll Seite für Seite nach oben durchlaufen wird. Die Seiten werden anhand des Zeichenbudgets bemessen, nicht anhand einer Zeilenzahl — 165 Zeilen dieses mock_build oder 350 des mock_root desselben Builds — und jede beginnt genau dort, wo die vorherige aufgehört hat, sodass nichts übersprungen wird.

Beachten Sie, was Schritt 3 ersetzt. read_log_tail liefert für dieses Protokoll make: *** [Makefile:4615: all] Error 2 — das Symptom, Hunderte von Zeilen unterhalb des eigentlichen Fehlers, weil make -j nach dem ersten Fehler weiter kompiliert. Wird genug vom Protokollende angefordert, um den Fehler zu erreichen, liefert das stattdessen 167 KB gcc-Befehlszeilen und kann das Ergebnisgrößenlimit des Aufrufers überschreiten. search_log liefert 4 KB mit der Antwort ganz oben.

Beispiel: Erstellen eines Builds

Fragen Sie den Agenten: „Erstellen Sie bash für AlmaLinux-9 aus dem Branch c9s"

Der Agent wird Folgendes aufrufen:

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

Für mehrere Plattformen gleichzeitig:

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

Für externe Git-Repos (z. B. GitHub) verwenden Sie git_urls:

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

Standardmäßig entsprechen die Architekturen der vollständigen Liste der jeweiligen Plattform. Wenn arch_list mit mehreren Plattformen angegeben wird, wird sie gegen jede Plattform einzeln validiert.

Beispiel: Erstellen eines Release-Plans

Fragen Sie den Agenten: „Erstellen Sie einen Release-Plan für Build 62316 auf AlmaLinux-8."

Der Agent wird:

  1. get_build_info(62316) — bestätigt die Plattform und dass der Build abgeschlossene Aufgaben hat

  2. get_products() — listet Produkte auf, damit Sie das Ziel auswählen können (z. B. AlmaLinux)

  3. create_release_plan(build_id=62316, platform="AlmaLinux-8", product="AlmaLinux") — sammelt die abgeschlossenen Build-Aufgaben, löst die Plattform-/Produktnamen in IDs auf und erstellt einen geplanten Plan

  4. Meldet den Plan (Status, Quellpakete, Ziel-Repositories) und stellt klar, dass nichts veröffentlicht wurde — es handelt sich nur um einen Plan

Die eigentliche Veröffentlichung (Commit/Veröffentlichung des Plans) wird absichtlich nicht durchgeführt. Wird der Agent gebeten, „wirklich zu veröffentlichen", führt das zu commit_release, das blockiert ist und erklärt, dass nur Pläne unterstützt werden.

Tests

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

Umgebungsvariablen

Variable

Beschreibung

Standard

ALBS_JWT_TOKEN

JWT-Token für authentifizierte Vorgänge

ALBS_LOG_DIR

Verzeichnis für heruntergeladene Protokolle

/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