albs-mcp
Officialalbs-mcp
MCPサーバーとCLI for AlmaLinux Build System (ALBS)。
AIコーディングアシスタントにALBSへの直接アクセスを提供します — ビルド失敗の調査、ビルドの作成、パッケージの署名など、すべて自然言語で行えます。
2つの使用方法:
MCPサーバー | CLI + スキル | |
仕組み | AIがMCPプロトコル経由でツールを呼び出す | AIがシェル経由で |
セットアップ | MCP設定に追加 |
|
最適な用途 | 専用のALBSワークフロー | 軽量セットアップ、MCPコンテキストの汚染を回避 |
AIなしで動作 | いいえ | はい( |
できること
トークンなし(読み取り専用)
ビルド失敗の調査 — 主なユースケースです。エージェントにビルドIDを与えると、ログから失敗シグネチャ(
search_log)をgrepし、正確なファイル、行、診断情報を特定して、その周辺のコンテキストを広げます。行オフセットを推測する必要も、10万行以上のログファイルにトークンを費やす必要もありません。ビルド詳細の取得 — すべてのタスク、パッケージ、アーキテクチャ、署名タスクのステータス。
ビルドの一覧と検索 — 最近のビルドを閲覧し、パッケージ名やステータスでフィルタリング。
プラットフォームの取得 — すべてのプラットフォームとそのサポートアーキテクチャの動的に取得されるリスト。
ログのダウンロードと読み取り — 任意のビルドの任意のログファイル: grep(
search_log)、下からページング(read_log_tail)、または行範囲の読み取り。読み取りが肥大化することはありません: 各行は500文字に切り詰められ、結果全体は40k文字に制限されます(max_line_chars=0/max_chars=0で解除)。そのため、1行が数KBのコンパイラフラグになるログでも、巨大なブロブではなく、正確に結合されるページで返されます。読み取り時、ログがまだディスクにない場合は自動的にダウンロードされます。署名ステータスの確認 — ビルドの署名タスクが完了したか失敗したかを確認。
製品の一覧 — すべてのリリースターゲット(製品)とそのプラットフォーム、公式/コミュニティフラグ、ID。
リリースプランの表示 — 既存のリリースのステータス、ソースパッケージ、ターゲットリポジトリ。
JWTトークンあり(認証済み)
ビルドの作成 — パッケージ、プラットフォーム、ブランチ/タグ/SRPMを指定。単一ビルドで複数プラットフォームをサポート(例: AlmaLinux-8 + AlmaLinux-9)。アーキテクチャは上書きしない限り各プラットフォームの全リストがデフォルト。
git.almalinux.org以外のリポジトリ(例: GitHub、GitLab)のカスタムGit URLをサポート。mkbuild.pyのすべてのオプションをサポート: リンクビルド、mock定義、除外、フレーバー、secureboot、モジュール、with/without。ビルドの署名 — 選択したキーで署名タスクを作成。
署名キーの一覧 — 利用可能なキーをIDとプラットフォームマッピング付きで表示。
リリースプランの作成 — 選択したプラットフォーム+製品を対象に、ビルドのスケジュールされたリリースプラン(どのパッケージがどのリポジトリに行くか)を作成。実際のリリースは決して実行されません — これはプランを作成するだけです。コミット/公開は意図的にブロックされています。
ビルドの削除 — 安全性のため意図的にブロック。
ログの種類
ALBSはビルドタスクごとに複数のログファイルを生成します。デバッグに重要なものは次のとおりです:
ログ | 内容 |
| chrootセットアップ、依存関係の解決。最初に確認 — 依存関係が失敗した場合、他は何も重要ではありません。 |
| ビルドプロセスからのstderr出力。多くの場合、最も明確なエラーメッセージが含まれています。 |
| 完全なビルドログ(10万行以上になる可能性)。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ファイル(tokenキーを持つPython dict):
{"token": "eyJ..."}トークンがない場合、MCPとCLIの両方が読み取り専用モードで動作します。
実際のトークンをコミットしないでください。 CLI引数ではなく、環境変数または
~/.albs/credentialsを使用してください。
セットアップオプション1: MCPサーバー
MCPクライアント設定(例: mcp.jsonまたは同等のもの)に追加:
{
"mcpServers": {
"albs": {
"command": "albs-mcp"
}
}
}セットアップオプション2: CLI + スキル
MCPコンテキストの汚染が懸念されるセットアップ、またはMCPをサポートしないツールを使用する場合向け。
ステップ1. パッケージをインストール(上記と同じ — albsコマンドが使えます):
pip install git+https://github.com/AlmaLinux/albs-mcp.gitステップ2. ワークフロー手順をAIツールに追加:
# 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または同等の手順ファイルにコピーします。
このスキルは、AIエージェントに同じワークフロー(調査順序、EPEL処理、署名)を、MCPツール呼び出しではなくalbsシェルコマンド経由で教えます。
ステップ3. 確認:
albs --helpCLIはスタンドアロンでも動作します — AIは不要です。スクリプトや手動のターミナル使用に便利です。
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 ref、ログ数、さらにSecure Boot状態、フレーバー、リンクされたビルド |
| 失敗したタスクのみをログファイルとともに一覧表示。重要なログは★でマーク |
| サーバー上のビルドで利用可能なすべてのログ/設定ファイル |
| ログファイルをローカルディスクにダウンロード( |
| 失敗時はここから: ログをビルド失敗シグネチャ(または独自の正規表現)でgrepし、行番号とコンテキスト付きのすべてのヒットを取得。必要に応じて自動ダウンロード |
| ログの末尾から1ページ読み取り、そこから上にページング( |
| ログから特定の行範囲を読み取り(例: |
| ビルドをページ単位で閲覧し、パッケージ名または実行状態でフィルタリング — 各パッケージをNVRとビルドのリリース状態として表示。 |
| ビルドの署名タスクのステータス(idle/in_progress/completed/failed)— |
| すべての製品(リリースターゲット)を一覧: ID、名前、公式/コミュニティ、プラットフォーム |
| 既存のリリースを表示: ステータス、ソースパッケージ、ターゲットリポジトリ |
認証済み(JWT必須)
ツール | 説明 |
| 署名キーを一覧: ID、名前、GPGキーID、アクティブ状態、プラットフォームマッピング |
| ビルドを作成: パッケージまたはカスタムGit URL + プラットフォーム + ブランチ/タグ/srpm、すべてのmockオプション付き |
| 選択したキーでビルドの署名タスクを作成 |
| ビルド + プラットフォーム + 製品のスケジュールされたリリースプランを作成。実際のリリースは決して実行しません — プランのみ |
| ブロック — 実際のリリースの実行は無効。プランのみサポート |
| ブロック — 安全性のため無効 |
プロンプト
MCPプロンプトはユーザーが呼び出すワークフローのエントリポイントです。Claude Codeなどのクライアントではスラッシュコマンド(/mcp__albs__<name>)として表示されます。ユーザーがトリガーし、エージェントはトリガーしません。
Prompt | Arguments | Description |
|
| ビルド ID のビルド失敗調査ワークフローを起動します。「なぜビルド N は失敗したのか?」と尋ねるのと同等ですが、1 ステップのパラメータ化されたコマンドです。 |
|
| ビルド ID のリリース計画ワークフローを起動します(プラットフォームの確認、プロダクトの選択、計画の作成)。実際のリリースは実行しません。 |
例(Claude Code):
/mcp__albs__investigate_build 52679
/mcp__albs__release_plan 52679investigate_build は調査ワークフロー(get_build_info → get_failed_tasks → 主要なログのダウンロード/読み取りを順に実行)に展開され、ビルド ID によってパラメータ化されます。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 KB のログを grep し、原因をコンテキスト付きで 1 回の呼び出しで返します:>>> 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) ではこれらは異なる型であるため、3.27.0 のリベースは 32 ビットでのみ失敗します。」
検索結果が空だった場合、次の手順は read_log_tail を呼び出し、次にそれが出力する ↑ earlier: ... 呼び出しを実行して、ログをページ単位で上方向にさかのぼります。ページのサイズは行数ではなく文字数の予算で決まります。この mock_build では 165 行、同じビルドの mock_root では 350 行となり、各ページは直前のページが終了した位置から正確に始まるため、何もスキップされません。
ステップ 3 が何を置き換えているかに注目してください。そのログに対する read_log_tail は make: *** [Makefile:4615: all] Error 2 を返します。これは症状であり、実際のエラーから数百行下にあります。make -j は最初の失敗後もコンパイルを続けるためです。エラーに到達するのに十分な tail を要求すると、代わりに 167 KB の gcc コマンド行が返され、呼び出し側の結果サイズ制限を超える可能性があります。search_log は回答を先頭に含む 4 KB を返します。
例: ビルドを作成する
エージェントに依頼します: 「ブランチ c9s から AlmaLinux-9 用に bash をビルドする」
エージェントは次のように呼び出します:
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 が複数のプラットフォームとともに指定された場合、各プラットフォームに対して個別に検証されます。
例: リリース計画を作成する
エージェントに依頼します: 「AlmaLinux-8 のビルド 62316 のリリース計画を作成してください。」
エージェントは次のことを行います:
get_build_info(62316)— プラットフォームと、ビルドに完了したタスクがあることを確認しますget_products()— ターゲットを選択できるようにプロダクトを一覧表示します(例:AlmaLinux)create_release_plan(build_id=62316, platform="AlmaLinux-8", product="AlmaLinux")— 完了したビルドタスクを収集し、プラットフォーム/プロダクト名を ID に解決して、スケジュール済みの 計画を作成します計画(ステータス、ソースパッケージ、ターゲットリポジトリ)を報告し、何も公開されていないことを明確にします。これは単なる計画です
実際のリリース(計画のコミット/公開)は意図的に実行されません。「実際にリリースして」とエージェントに依頼すると
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環境変数
Variable | Description | Default |
| 認証済み操作用の 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