Skip to main content
Glama

mcp-beaker

PyPI Version PyPI Downloads CI License Python

MCP-Server für die Beaker-Laborautomatisierung – Systembereitstellung, Jobverwaltung, Distro-Erkennung und Fehlerdiagnose.

Funktioniert mit jeder Beaker-Serverinstanz. Basierend auf FastMCP v3 und entwickelt für den Einsatz mit KI-Coding-Assistenten (Cursor, Claude Desktop usw.).

Funktionen

  • 27 Tools für den gesamten Beaker-Lebenszyklus: Systeme, Jobs, Distros, Aufgaben

  • Beaker Py3-kompatibel: funktioniert mit sowohl älteren als auch modernisierten Beaker-REST-APIs

  • Flexible Authentifizierung: Kerberos (natives GSSAPI/SPNEGO oder bkr-CLI-Fallback) und Passwort (XML-RPC)

  • Job-XML-Validierung: füllt fehlende Felder automatisch aus, leitet Distro-Familien ab

  • Fehlerdiagnose: tiefgehende Analyse mit automatischem Wiederholungsversuch bei korrigierbaren Fehlern

  • 10 Dokumentationsthemen als MCP-Ressourcen verfügbar

  • 2 Workflow-Prompts für häufige Aufgaben (System reservieren, Job diagnostizieren)

  • Generisch: funktioniert mit jeder Beaker-URL, konfigurierbare SSL/CA-Einstellungen

Related MCP server: zuul-mcp

Installation

Container (empfohlen)

Das Container-Image bündelt alles – keine Host-Abhängigkeiten außer podman (oder docker). Die Kerberos-Authentifizierung erfolgt innerhalb des Containers über die Umgebungsvariablen KRB5_PRINCIPAL und 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

Konfiguration

Cursor / VS Code

Fügen Sie zu Ihrer .cursor/mcp.json (oder .vscode/mcp.json) hinzu:

Container (empfohlen)

{
  "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"
      ]
    }
  }
}

Der Container führt kinit intern aus – keine Volume-Mounts, keine Host- Abhängigkeiten. Verwenden Sie --network=host, damit der Container Ihr Kerberos-KDC und den Beaker-Server erreichen kann (insbesondere über VPN).

Container mit gemountetem Ticket-Cache (kein Passwort in der Konfiguration)

Anstatt Ihr Kerberos-Passwort in mcp.json zu speichern, können Sie einen bereits vorhandenen Ticket-Cache vom Host mounten:

Schritt 1 – Erstellen Sie ein dateibasiertes Ticket auf dem Host:

kinit -c FILE:/tmp/krb5cc_beaker your-user@YOUR.REALM

Führen Sie dies erneut aus, wenn das Ticket abläuft (normalerweise alle 10 Stunden).

Schritt 2 – Mounten Sie das Ticket in den Container:

{
  "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"
      ]
    }
  }
}

Der Container erkennt das gültige Ticket und überspringt kinit vollständig. Keine KRB5_PRINCIPAL- oder KRB5_PASSWORD-Angabe erforderlich. Die :ro,Z-Mount-Flags gewährleisten schreibgeschützten Zugriff mit korrekter SELinux-Kennzeichnung.

Hinweis: Der Host verwendet normalerweise KCM (D-Bus) für die Speicherung von Anmeldeinformationen, auf die Container keinen Zugriff haben. Deshalb benötigen Sie kinit -c FILE:..., um einen dateibasierten Cache zu erstellen, der bind-gemountet werden kann.

SSL-Zertifikate: Viele Beaker-Server verwenden interne CA-Zertifikate, die nicht im Standard-Vertrauensspeicher des Containers enthalten sind. Sie haben drei Optionen:

  1. Verifizierung deaktivieren (am einfachsten, in einem vertrauenswürdigen Unternehmensnetzwerk in Ordnung):

"-e", "BEAKER_SSL_VERIFY=false",
  1. CA-Zertifikat inline übergeben über BEAKER_CA_CERT_DATA (kein Volume-Mount erforderlich):

"-e", "BEAKER_CA_CERT_DATA=-----BEGIN CERTIFICATE-----\nMIID...your-ca-cert...\n-----END CERTIFICATE-----",
  1. CA-Bundle mounten (eine einzelne Datei):

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

uvx mcp-beaker --transport streamable-http --port 8000
{
  "mcpServers": {
    "beaker": {
      "url": "http://localhost:8000/mcp",
      "type": "streamableHttp"
    }
  }
}

Umgebungsvariablen

Variable

Erforderlich

Standard

Beschreibung

BEAKER_URL

Ja

--

Basis-URL Ihres Beaker-Servers

BEAKER_AUTH_METHOD

Nein

kerberos

kerberos oder password

BEAKER_KERBEROS_BACKEND

Nein

http

http (natives SPNEGO) oder bkr (bkr-CLI)

BEAKER_USERNAME

Für Passwort-Auth

--

Beaker-Benutzername

BEAKER_PASSWORD

Für Passwort-Auth

--

Beaker-Passwort

BEAKER_OWNER

Nein

$USER

Standard-Eigentümer für Job-Abfragen

BEAKER_SSL_VERIFY

Nein

true

SSL-Zertifikate verifizieren

BEAKER_CA_CERT

Nein

--

Pfad zum CA-Zertifikatsbundle

KRB5_PRINCIPAL

Nur Container

--

Kerberos-Prinzipal für kinit im Container

KRB5_PASSWORD

Nur Container

--

Kerberos-Passwort für kinit im Container

BEAKER_CA_CERT_DATA

Nur Container

--

PEM-kodiertes CA-Zertifikat, das beim Start in eine Datei geschrieben wird

CLI-Optionen

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

Tools

Lesetools (15)

Tool

Beschreibung

list_systems

Systeme nach Verfügbarkeit auflisten (alle/verfügbar/frei)

search_systems

Systeme nach CPU, Architektur, Speicher, Pool und anderen Hardware-Attributen suchen

get_system_details

Hardwarespezifikationen, CPU-Info, Pool-Mitgliedschaft, Eigentümer, Status für ein System

get_system_status

Aktueller Zustand, Reservierung und Leihstatus für ein System

get_system_history

Aktivitätsverlauf für ein System

get_system_arches

Unterstützte OS-Familien und Architekturen

list_jobs

Jobs nach Eigentümer, Status, Whiteboard filtern

get_job_status

Jobstatus mit Fehlerdiagnose

get_job_results_xml

Job-Ergebnisse als XML exportieren

get_job_logs

Logdateien für einen Job/Rezept/Aufgabe auflisten

list_distro_trees

Distros nach Name, Familie, Arch, Tags durchsuchen

list_os_families

Alle bekannten OS-Familien auflisten

whoami

Authentifizierte Benutzerinformationen anzeigen

list_lab_controllers

Alle Lab-Controller auflisten

search_tasks

Die Aufgabenbibliothek durchsuchen

Schreibwerkzeuge (12)

Tool

Beschreibung

submit_job

Job aus XML einreichen (mit Validierung und automatischem Ausfüllen)

clone_job

Vorhandenen Job klonen und erneut einreichen

cancel_job

Laufenden/wartenden Job abbrechen

watch_job

Bis zum Abschluss pollen, mit Fehleranalyse und automatischem Wiederholungsversuch

reserve_system

System manuell reservieren

release_system

Manuell reserviertes System freigeben

loan_system

Einem Benutzer ein System leihen

return_loan

Aktuelle Systemleihe zurückgeben

power_system

System ein-/ausschalten oder neu starten

provision_system

Reserviertes System mit einer Distro bereitstellen

extend_watchdog

Watchdog-Timer einer laufenden Aufgabe verlängern

set_job_response

Ack/nak (verwerfen) eines Rezeptsatzes festlegen

Authentifizierung

Kerberos (empfohlen)

Stellen Sie sicher, dass Sie ein gültiges Ticket haben:

kinit your-username@YOUR.REALM

Der Server unterstützt zwei Kerberos-Backends, gesteuert über BEAKER_KERBEROS_BACKEND:

Wert

Backend

Installation

http (Standard)

Natives GSSAPI/SPNEGO – leichtgewichtig, per pip installierbar

pip install mcp-beaker[kerberos]

bkr

bkr-CLI-Subprozesse – traditionell, erfordert RPM

yum install beaker-client

Beide Backends verwenden dasselbe Kerberos-Ticket von kinit.

Passwort

Setzen Sie BEAKER_AUTH_METHOD=password zusammen mit BEAKER_USERNAME und BEAKER_PASSWORD. Der Server authentifiziert sich über die XML-RPC-Methode auth.login_password(). Hinweis: Dies erfordert, dass serverseitig LDAP aktiviert ist.

Architektur

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

Entwicklung

cd mcp-beaker
uv sync --dev
uv run pytest
uv run ruff check src/

Lizenz

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