Skip to main content
Glama

mcp-beaker

PyPI Version PyPI Downloads CI License Python

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 используются внутренние сертификаты ЦС, которых нет в стандартном хранилище доверия контейнера. У вас есть три варианта:

  1. Отключить проверку (проще всего, допустимо в доверенной корпоративной сети):

"-e", "BEAKER_SSL_VERIFY=false",
  1. Передать сертификат ЦС встроенно через BEAKER_CA_CERT_DATA (без монтирования тома):

"-e", "BEAKER_CA_CERT_DATA=-----BEGIN CERTIFICATE-----\nMIID...your-ca-cert...\n-----END CERTIFICATE-----",
  1. Смонтировать пакет ЦС (один файл):

"-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

Да

--

Базовый URL вашего сервера Beaker

BEAKER_AUTH_METHOD

Нет

kerberos

kerberos или password

BEAKER_KERBEROS_BACKEND

Нет

http

http (нативный SPNEGO) или bkr (CLI bkr)

BEAKER_USERNAME

Для парольной аутентификации

--

Имя пользователя Beaker

BEAKER_PASSWORD

Для парольной аутентификации

--

Пароль Beaker

BEAKER_OWNER

Нет

$USER

Владелец по умолчанию для запросов заданий

BEAKER_SSL_VERIFY

Нет

true

Проверять SSL-сертификаты

BEAKER_CA_CERT

Нет

--

Путь к пакету сертификатов ЦС

KRB5_PRINCIPAL

Только контейнер

--

Принципал Kerberos для kinit внутри контейнера

KRB5_PASSWORD

Только контейнер

--

Пароль Kerberos для kinit внутри контейнера

BEAKER_CA_CERT_DATA

Только контейнер

--

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)

Инструмент

Описание

list_systems

Список систем по доступности (all/available/free)

search_systems

Поиск систем по CPU, архитектуре, памяти, пулу и другим аппаратным атрибутам

get_system_details

Аппаратные характеристики, информация о CPU, членство в пуле, владелец, статус системы

get_system_status

Текущее состояние, резервирование и статус ссуды для системы

get_system_history

История активности для системы

get_system_arches

Поддерживаемые семейства ОС и архитектуры

list_jobs

Фильтрация заданий по владельцу, статусу, whiteboard

get_job_status

Статус задания с диагностикой сбоев

get_job_results_xml

Экспорт результатов задания в формате XML

get_job_logs

Список файлов журналов для задания/рецепта/задачи

list_distro_trees

Поиск дистрибутивов по имени, семейству, архитектуре, тегам

list_os_families

Список всех известных семейств ОС

whoami

Показать информацию об аутентифицированном пользователе

list_lab_controllers

Список всех контроллеров лаборатории

search_tasks

Поиск в библиотеке задач

Инструменты записи (12)

Инструмент

Описание

submit_job

Отправка задания из XML (с проверкой и автозаполнением)

clone_job

Клонирование и повторная отправка существующего задания

cancel_job

Отмена выполняющегося/стоящего в очереди задания

watch_job

Ожидание завершения с анализом сбоев и автоматическим повтором

reserve_system

Ручное резервирование системы

release_system

Освобождение вручную зарезервированной системы

loan_system

Выдача ссуды на систему пользователю

return_loan

Возврат текущей ссуды на систему

power_system

Включение/выключение/перезагрузка системы

provision_system

Подготовка зарезервированной системы с дистрибутивом

extend_watchdog

Продление таймера watchdog выполняющейся задачи

set_job_response

Подтверждение/отклонение (waive) результата набора рецептов

Аутентификация

Kerberos (рекомендуется)

Убедитесь, что у вас есть действующий билет:

kinit your-username@YOUR.REALM

Сервер поддерживает два бэкенда Kerberos, управляемых через BEAKER_KERBEROS_BACKEND:

Значение

Бэкенд

Установка

http (по умолчанию)

Нативный GSSAPI/SPNEGO — лёгкий, устанавливается через pip

pip install mcp-beaker[kerberos]

bkr

Субпроцессы CLI bkr — традиционный, требует RPM

yum install beaker-client

Оба бэкенда используют один и тот же билет 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

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
1wRelease cycle
19Releases (12mo)
Commit activity
Issues opened vs closed

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
    B
    maintenance
    MCP 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
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP 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

View all related MCP servers

Related MCP Connectors

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/faizbawa/mcp-beaker'

If you have feedback or need assistance with the MCP directory API, please join our Discord server