mcp-beaker
mcp-beaker
MCP-сервер для автоматизации лаборатории Beaker — подготовка систем, управление заданиями, поиск дистрибутивов и диагностика сбоев.
Работает с любым экземпляром сервера Beaker. Построен на FastMCP v3 и предназначен для использования с ИИ-ассистентами для программирования (Cursor, Claude Desktop и т. д.).
Возможности
27 инструментов, охватывающих полный жизненный цикл Beaker: системы, задания, дистрибутивы, задачи
Совместимость с Beaker Py3: работает как с устаревшими, так и с модернизированными REST API Beaker
Гибкая аутентификация: Kerberos (нативный GSSAPI/SPNEGO или резервный вариант через CLI
bkr) и пароль (XML-RPC)Проверка XML заданий: автоматическое заполнение отсутствующих полей, определение семейств дистрибутивов
Диагностика сбоев: углублённый анализ с автоматическим повтором при исправимых ошибках
10 документационных тем, доступных в качестве ресурсов MCP
2 подсказки для рабочих процессов для типовых задач (резервирование системы, диагностика задания)
Универсальность: работает с любым URL Beaker, настраиваемые параметры 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, чтобы контейнер мог
достичь вашего KDC Kerberos и сервера Beaker (особенно через VPN).
Контейнер с смонтированным кэшем билетов (без пароля в конфигурации)
Вместо хранения пароля Kerberos в mcp.json вы можете смонтировать
уже существующий кэш билетов с хоста:
Шаг 1 — Создайте файловый билет на хосте:
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 используются внутренние сертификаты ЦС, которых нет в стандартном хранилище доверия контейнера. У вас есть три варианта:
Отключить проверку (проще всего, допустимо в доверенной корпоративной сети):
"-e", "BEAKER_SSL_VERIFY=false",Передать сертификат ЦС встроенно через
BEAKER_CA_CERT_DATA(без монтирования тома):
"-e", "BEAKER_CA_CERT_DATA=-----BEGIN CERTIFICATE-----\nMIID...your-ca-cert...\n-----END CERTIFICATE-----",Смонтировать пакет ЦС (один файл):
"-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"
}
}
}Переменные окружения
Переменная | Обязательная | По умолчанию | Описание |
| Да | -- | Базовый URL вашего сервера Beaker |
| Нет |
|
|
| Нет |
|
|
| Для парольной аутентификации | -- | Имя пользователя Beaker |
| Для парольной аутентификации | -- | Пароль Beaker |
| Нет |
| Владелец по умолчанию для запросов заданий |
| Нет |
| Проверять SSL-сертификаты |
| Нет | -- | Путь к пакету сертификатов ЦС |
| Только контейнер | -- | Принципал Kerberos для |
| Только контейнер | -- | Пароль Kerberos для |
| Только контейнер | -- | PEM-кодированный сертификат ЦС, записываемый в файл при запуске |
Параметры 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, членство в пуле, владелец, статус системы |
| Текущее состояние, резервирование и статус ссуды для системы |
| История активности для системы |
| Поддерживаемые семейства ОС и архитектуры |
| Фильтрация заданий по владельцу, статусу, whiteboard |
| Статус задания с диагностикой сбоев |
| Экспорт результатов задания в формате XML |
| Список файлов журналов для задания/рецепта/задачи |
| Поиск дистрибутивов по имени, семейству, архитектуре, тегам |
| Список всех известных семейств ОС |
| Показать информацию об аутентифицированном пользователе |
| Список всех контроллеров лаборатории |
| Поиск в библиотеке задач |
Инструменты записи (12)
Инструмент | Описание |
| Отправка задания из XML (с проверкой и автозаполнением) |
| Клонирование и повторная отправка существующего задания |
| Отмена выполняющегося/стоящего в очереди задания |
| Ожидание завершения с анализом сбоев и автоматическим повтором |
| Ручное резервирование системы |
| Освобождение вручную зарезервированной системы |
| Выдача ссуды на систему пользователю |
| Возврат текущей ссуды на систему |
| Включение/выключение/перезагрузка системы |
| Подготовка зарезервированной системы с дистрибутивом |
| Продление таймера watchdog выполняющейся задачи |
| Подтверждение/отклонение (waive) результата набора рецептов |
Аутентификация
Kerberos (рекомендуется)
Убедитесь, что у вас есть действующий билет:
kinit your-username@YOUR.REALMСервер поддерживает два бэкенда Kerberos, управляемых через BEAKER_KERBEROS_BACKEND:
Значение | Бэкенд | Установка |
| Нативный GSSAPI/SPNEGO — лёгкий, устанавливается через pip |
|
| Субпроцессы CLI |
|
Оба бэкенда используют один и тот же билет Kerberos от kinit.
Пароль
Установите 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