albs mcp
MCP服务器和CLI AlmaLinux构建系统 (ALBS)。
让AI编码助手直接访问ALBS——通过自然语言调查构建失败、创建构建、签署包。
有两种使用方法:
| MCP服务器 | CLI+技能 | |
|---|---|---|
| 工作原理 | AI通过MCP协议调用工具 | AI运行 albs 通过shell命令 |
| 安装 | 添加到MCP配置 | 安装 albs +为您的AI工具添加技能 |
| 最适合 | 专用ALBS工作流程 | 轻量级设置,避免MCP上下文污染 |
| 在没有人工智能的情况下工作 | 否 | 是(albs 作为独立的CLI工作) |
它能做什么
没有令牌(只读)
- 调查构建失败 --主要用例。给代理一个构建ID,它将遍历日志(mock_root→ mock_sterr→ mock_build),从末尾读取以查找错误,而不会浪费100k+行日志文件上的令牌。
- 获取构建详细信息 --所有任务、包、架构、签名任务的状态。
- 列表和搜索构建 --浏览最新版本,按包名或状态筛选。
- 获取平台 --动态获取所有平台及其支持架构的列表。
- 下载并阅读日志 --来自任何构建的任何日志文件,具有智能分页(尾部优先,然后是范围)。
使用JWT令牌(经过身份验证)
- 创建构建 --指定包、平台、分支/标签/SRPM。在单个构建中支持多个平台(例如AlmaLinux-8+AlmaLinux-9)。除非您覆盖,否则架构默认为每个平台的完整列表。支持外部仓库的自定义Git URL
git.almalinux.org(例如GitHub、GitLab)。支持所有mkbuild.py选项:链接构建、模拟定义、排除、风格、安全插件、模块、带/不带。 - 标志构建 --使用所选密钥创建签名任务。
- 列出标志键 --请参阅带有ID和平台映射的可用密钥。
- 删除构建 --为了安全而故意封锁。
日志类型
ALBS为每个构建任务生成多个日志文件。调试的关键:
| 日志 | 里面有什么 |
|---|---|
mock_root | Chroot设置,依赖解析。先检查一下——如果deps失败了,其他什么都不重要。 |
mock_stderr | 生成过程中的Stderr输出。通常有最清晰的错误信息。 |
mock_build | 完整的构建日志(可以是100k+行)。包含完整的rpmbuild输出。最后检查。 |
mock_state | 模拟状态转换。 |
mock_hw_info | 构建节点的硬件信息。 |
mock_installed_pkgs | chroot中安装的软件包列表。 |
albs | ALBS级任务日志(任务分配、上传)。 |
mock.*.cfg | 用于构建的模拟配置。 |
安装
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都以只读模式工作。
永远不要承诺真正的代币。 使用env变量或 ~/.albs/credentials,而不是CLI参数。设置选项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 /albs-cli或复制以下内容 skills/albs-cli/SKILL.md 进入你的项目 AGENTS.md 或等效的指令文件。
该技能教AI代理相同的工作流程(调查订单、EPEL处理、签名),但通过 albs shell命令而不是MCP工具调用。
步骤3。 验证:
albs --helpCLI也可以独立工作,不需要人工智能。适用于脚本和手动终端使用。
CLI使用情况
# List platforms
albs platforms
# Investigate a build
albs build-info 52679
albs failed-tasks 52679
albs download-log 52679 "mock_build.395391.1772974729.log"
albs log-tail 52679 "mock_build.395391.1772974729.log" -n 200
# 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
# Sign a build (requires JWT)
albs sign-keys
albs sign-build 52679 --key-id 4
# Pass token via flag or env var
albs --token "eyJ..." sign-keys
ALBS_JWT_TOKEN="eyJ..." albs sign-keys跑 albs --help 或 albs --help 完全使用。
工具参考
只读(无身份验证)
| 工具 | 说明 |
|---|---|
get_platforms | 从ALBS动态获取的所有平台及其架构 |
get_build_info | 构建摘要:每个任务都有状态、arch、包、git ref、日志计数 |
get_failed_tasks | 仅列出日志文件的失败任务;标记为的密钥日志★ |
list_build_logs | 服务器上可用于构建的所有日志/配置文件 |
download_log | 将日志文件下载到本地磁盘(/tmp/albs-logs//) |
read_log_tail | 读取下载日志的最后N行(默认3000行——错误在末尾) |
read_log_range | 从下载的日志中读取特定行范围 |
search_builds | 按页面浏览构建,按包名或运行状态筛选 |
已认证(需要JWT)
| 工具 | 说明 |
|---|---|
get_sign_keys | 列出符号键:ID、名称、GPG keyid、活动状态、平台映射 |
create_build | 创建构建:包或自定义Git URL+平台+分支/标签/srpm,包含所有模拟选项 |
sign_build | 使用所选密钥为构建创建签名任务 |
delete_build | 已屏蔽 --因安全原因致残 |
示例:调查失败的构建
问代理人: *“52679号楼出了什么问题?”*
代理人将:
get_build_info(52679)--看到2个任务:src已完成,x86_64失败get_failed_tasks(52679)--得到14个日志文件,★ 标记重要的download_log(52679, "mock_root.395391.1772974729.log")--下载根日志read_log_tail(52679, "mock_root.395391.1772974729.log")--检查chroot设置:全部干净download_log(52679, "mock_stderr.395391.1772974729.log")--下载stderrread_log_tail(52679, "mock_stderr.395391.1772974729.log")--看到rpmbuild命令download_log(52679, "mock_build.395391.1772974729.log")--下载完整的构建日志(236KB)read_log_tail(52679, "mock_build.395391.1772974729.log", 200)--发现错误:
gmake[1]: *** [libtransmission/CMakeFiles/transmission.dir/all] Error 2- 报告: *“由于libtransmission中的编译错误,构建失败。”*
示例:创建构建
问代理人: *“从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 如果指定了多个平台,则分别针对每个平台进行验证。
测试
pip install -e ".[test]"
# Unit tests (no network)
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, 21 tests)
pytest tests/test_integration.py -v
# All tests
pytest -v环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
ALBS_JWT_TOKEN | 用于身份验证操作的JWT令牌 | -- |
ALBS_LOG_DIR | 下载日志目录 | /tmp/albs-logs |
