mcp-beaker
mcp-beaker
用于 Beaker 实验室自动化的 MCP 服务器 —— 系统供应、作业管理、distro 发现和失败诊断。
适用于任何 Beaker 服务器实例。基于 FastMCP v3 构建,专为 AI 编码助手(Cursor、Claude Desktop 等)设计。
功能特性
27 个工具,覆盖 Beaker 的完整生命周期:系统、作业、distro、任务
Beaker Py3 兼容:同时兼容传统和现代化 Beaker REST API
灵活的验证方式:Kerberos(原生 GSSAPI/SPNEGO 或
bkrCLI 回退)和密码(XML-RPC)作业 XML 验证:自动填充缺失字段,推断 distro 系列
失败诊断:深度分析,并自动重试可纠正的失败
10 个文档主题,作为 MCP 资源提供
2 个工作流程提示,用于常见任务(保留系统、诊断作业)
通用:适用于任何 Beaker URL,支持配置 SSL/CA 设置
Related MCP server: zuul-mcp
安装
容器(推荐)
容器镜像捆绑了所有必要内容 —— 宿主机只需要 podman(或 docker),无需其他依赖。Kerberos 认证在容器内通过 KRB5_PRINCIPAL 和 KRB5_PASSWORD 环境变量完成。
# Pull the pre-built image from GHCR
podman pull ghcr.io/faizbawa/mcp-beaker:latest
# Or build locally from the repo
podman build -t mcp-beaker:latest -f Containerfile .Pip / uvx
# Using uv (recommended)
pip install uv
uvx mcp-beaker
# Using pip
pip install mcp-beaker
mcp-beaker
# With native Kerberos support (no bkr CLI needed -- requires krb5-devel on host)
pip install mcp-beaker[kerberos]
# Local development
uv run --directory /path/to/mcp-beaker mcp-beaker配置
Cursor / VS Code
将以下内容添加到 .cursor/mcp.json(或 .vscode/mcp.json):
容器(推荐)
{
"mcpServers": {
"beaker": {
"command": "podman",
"args": [
"run", "--rm", "-i", "--network=host",
"-e", "BEAKER_URL=https://beaker.example.com",
"-e", "KRB5_PRINCIPAL=your-user@YOUR.REALM",
"-e", "KRB5_PASSWORD=your-kerberos-password",
"ghcr.io/faizbawa/mcp-beaker:latest"
]
}
}
}容器内部运行 kinit —— 无需挂载卷,无需宿主机依赖。使用 --network=host 让容器能访问你的 Kerberos KDC 和 Beaker 服务器(尤其是在 VPN 下)。
使用挂载的 kerberos 票据的容器(配置中无需密码)
无需在 mcp.json 中存储 Kerberos 密码,你可以在宿主机上挂载一个现有的 kerberos 票据缓存:
步骤 1 —— 在宿主机上创建文件型 kerberos 票据:
kinit -c FILE:/tmp/krb5cc_beaker your-user@YOUR.REALM每当票据过期(通常每 10 小时)时,重新运行此命令。
步骤 2 —— 将票据挂载到容器中:
{
"mcpServers": {
"beaker": {
"command": "podman",
"args": [
"run", "--rm", "-i", "--network=host",
"-v", "/tmp/krb5cc_beaker:/tmp/krb5cc_0:ro,Z",
"-e", "BEAKER_URL=https://beaker.example.com",
"ghcr.io/faizbawa/mcp-beaker:latest"
]
}
}
}容器检测到有效票据并完全跳过 kinit。无需 KRB5_PRINCIPAL 或 KRB5_PASSWORD。:ro,Z 挂载标志确保只读访问,并带有正确的 SELinux 标签。
注意: 宿主机通常使用 KCM(D-Bus)来存储凭证,容器无法访问。这就是为什么你需要
kinit -c FILE:...来创建基于文件的缓存,以便可以将其绑定挂载。
SSL 证书: 许多 Beaker 服务器使用内部的 CA 证书,这些证书不在容器的默认信任库中。你有三种选择:
禁用验证(最简单,在可信的办公网络中没问题):
"-e", "BEAKER_SSL_VERIFY=false",通过
BEAKER_CA_CERT_DATA直接传入 CA 证书(无需挂载卷):
"-e", "BEAKER_CA_CERT_DATA=-----BEGIN CERTIFICATE-----\nMIID...your-ca-cert...\n-----END CERTIFICATE-----",挂载一个 CA 证书包(单个文件):
"-v", "/path/to/ca-bundle.crt:/tmp/ca-bundle.crt:ro",
"-e", "BEAKER_CA_CERT=/tmp/ca-bundle.crt",Pip / uvx
{
"mcpServers": {
"beaker": {
"command": "uvx",
"args": ["mcp-beaker[kerberos]"],
"env": {
"BEAKER_URL": "https://beaker.example.com",
"BEAKER_AUTH_METHOD": "kerberos",
"BEAKER_KERBEROS_BACKEND": "http"
}
}
}
}Streamable HTTP 模式
uvx mcp-beaker --transport streamable-http --port 8000{
"mcpServers": {
"beaker": {
"url": "http://localhost:8000/mcp",
"type": "streamableHttp"
}
}
}环境变量
变量 | 必需 | 默认值 | 说明 |
| 是 | -- | 你的 Beaker 服务器的基础 URL |
| 否(默认 |
|
|
| 否 |
|
|
| 使用密码时 | -- | Beaker 用户名 |
| 使用密码时 | -- | Beaker 密码 |
| 否 |
| 作业查询的默认所有者 |
| 否 |
| 是否验证 SSL 证书 |
| 否 | -- | CA 证书包的路径 |
| 仅容器 | -- | 容器内执行 |
| 仅容器 | -- | 容器内执行 |
| 仅容器 | -- | 启动时写入文件的 PEM 编码 CA 证书 |
CLI 选项
mcp-beaker [OPTIONS]
Options:
--transport [stdio|sse|streamable-http] Transport type (default: stdio)
--port INTEGER Port for HTTP transports (default: 8000)
--host TEXT Host for HTTP transports (default: 0.0.0.0)
--path TEXT Path for streamable-http (default: /mcp)
--beaker-url TEXT Beaker server URL
--ssl-verify / --no-ssl-verify Verify SSL certs (default: verify)
--ca-cert TEXT CA certificate bundle path
--auth-method [kerberos|password] Authentication method
--kerberos-backend [http|bkr] Kerberos backend (default: http)
--read-only Disable all write tools
--enabled-tools TEXT Comma-separated tools to enable
-v, --verbose Increase verbosity (-v info, -vv debug)
--version Show version
--help Show this message工具
读工具(15)
工具 | 说明 |
| 按可用性(all/available/free)列出系统 |
| 按 CPU、架构、内存、资源池及其他硬件属性搜索系统 |
| 硬件的详细规格、CPU 信息、资源池成员资格、所有权、状态 |
| 当前状态、保留情况(reservation)、借用状态(loan) |
| 一个系统的活动历史 |
| 支持的 OS 系列和架构 |
| 按所有者、状态、 whiteboard 过滤作业 |
| 作业状态,包含失败诊断信息 |
| 以 XML 格式导出作业结果 |
| 列出作业/配方/任务的日志文件 |
| 按名称、家族、架构、标签搜索发行版 |
| 列出所有已知的操作系统家族 |
| 显示当前已认证用户的信息 |
| 列出所有实验室控制器 |
| 在任务库中搜索 |
写工具(12)
工具 | 说明 |
| 从 XML 提交作业(含校验和自动填充) |
| 启动并重新提交一个现有作业,生成一个新的克隆 |
| 取消正在运行/被排队的作业 |
| 轮询直到作业完成,包含故障分析和自动重试 |
| 手动保留一个系统 |
| 释放手动保留的系统 |
| 将系统授权借用给某个用户 |
| 归还当前系统借出 |
| 打开/关闭/重启系统 |
| 为已保留的系统使用某个 distro 进行小规模初始化 |
| 延长当前任务的操作看门狗定时器 |
| 确认/拒绝(waive)一个配方集的结果 |
认证
Kerberos(推荐)
确保你有一张有效的 Kerberos 票据:
kinit your-username@YOUR.REALM服务器支持两种 Kerberos 后端,由 BEAKER_KERBEROS_BACKEND 控制:
值 | 后端 | 安装方式 |
| 原生 GSSAPI/SPNEGO —— 轻量,可通过 pip 安装 |
|
|
|
|
两者后端都使用 kinit 产生的同一张 Kerberos 票据。
密码
设置 BEAKER_AUTH_METHOD=password,同时设置 BEAKER_USERNAME 和 BEAKER_PASSWORD。服务器通过 XML-RPC 的 auth.login_password() 方法进行认证。注意:这需要服务器端启用 LDAP。
架构
src/mcp_beaker/
__init__.py # Click CLI entry point
config.py # BeakerConfig dataclass
exceptions.py # Custom exceptions
client.py # BeakerClient (XML-RPC + REST)
models/ # Pydantic response models
servers/
__init__.py # FastMCP server, lifespan, DI helper
systems.py # System tools (6 read + 6 write)
jobs.py # Job tools (4 read + 6 write)
distros.py # Distro tools (2 read)
tasks.py # Task tools (1 read)
general.py # General tools (2 read)
prompts.py # Workflow prompt templates
resources.py # Beaker documentation resources
utils/
xml_validation.py # Job XML validation/auto-fill
diagnosis.py # Failure analysis engine
formatting.py # Human-readable formatters
bkr_cli.py # bkr CLI helpers
parsing.py # ID parsing utilities开发
cd mcp-beaker
uv sync --dev
uv run pytest
uv run ruff check src/许可证
MIT
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
- FlicenseCqualityDmaintenanceMCP server that enables deployment and management of MCP servers through a simple configuration-based interface.1
- AlicenseNot gradedqualityBmaintenanceMCP server for Zuul CI/CD with 25 tools for builds, pipelines, queue management (enqueue/dequeue/promote), infrastructure visibility, and autohold management. Supports stdio, HTTP, and SSE transports.MIT
- FlicenseNot gradedqualityDmaintenanceA highly configurable, deployment-ready MCP server with modular architecture for dynamic tool loading and external package support.1
- FlicenseNot gradedqualityCmaintenanceMCP server for infrastructure discovery and remote management, enabling SSH command execution, file transfer, log tailing, and machine/service inventory with a companion web dashboard.1
Related MCP Connectors
The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.
MCP Server for JFrog, providing tools for development and artifact management.
A MCP server built for developers enabling Git based project management with project and personal…
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/faizbawa/mcp-beaker'
If you have feedback or need assistance with the MCP directory API, please join our Discord server