Skip to main content

MCP server for Beaker lab automation — system provisioning, job management, distro discovery, and failure diagnosis

Project description

mcp-beaker

MCP server for Beaker lab automation -- system provisioning, job management, distro discovery, and failure diagnosis.

Works with any Beaker server instance. Built on FastMCP v3 and designed for use with AI coding assistants (Cursor, Claude Desktop, etc.).

Features

  • 23 tools covering the full Beaker lifecycle: systems, jobs, distros, tasks
  • Dual auth: Kerberos (via bkr CLI) and password (via XML-RPC)
  • Job XML validation: auto-fills missing fields, infers distro families
  • Failure diagnosis: deep analysis with auto-retry on correctable failures
  • 10 documentation topics exposed as MCP resources
  • 2 workflow prompts for common tasks (reserve system, diagnose job)
  • Generic: works with any Beaker URL, configurable SSL/CA settings

Installation

# Using uv (recommended)
pip install uv
uvx mcp-beaker

# Using pip
pip install mcp-beaker
mcp-beaker

# Local development
uv run --directory /path/to/mcp-beaker mcp-beaker

Configuration

Cursor / VS Code

Add to your .cursor/mcp.json (or .vscode/mcp.json):

{
  "mcpServers": {
    "beaker": {
      "command": "uvx",
      "args": ["mcp-beaker"],
      "env": {
        "BEAKER_URL": "https://beaker.example.com",
        "BEAKER_AUTH_METHOD": "kerberos"
      }
    }
  }
}

Streamable HTTP mode

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

Environment Variables

Variable Required Default Description
BEAKER_URL Yes -- Base URL of your Beaker server
BEAKER_AUTH_METHOD No kerberos kerberos or password
BEAKER_USERNAME For password auth -- Beaker username
BEAKER_PASSWORD For password auth -- Beaker password
BEAKER_OWNER No $USER Default owner for job queries
BEAKER_SSL_VERIFY No true Verify SSL certificates
BEAKER_CA_CERT No -- Path to CA certificate bundle

CLI Options

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

Read Tools (13)

Tool Description
list_systems List systems by availability (all/available/free)
get_system_details Hardware specs, ownership, status for a system
get_system_history Activity history for a system
get_system_arches Supported OS families and architectures
list_jobs Filter jobs by owner, status, whiteboard
get_job_status Job status with failure diagnosis
get_job_results_xml Export job results as XML
get_job_logs List log files for a job/recipe/task
list_distro_trees Search distros by name, family, arch, tags
list_os_families List all known OS families
whoami Show authenticated user info
list_lab_controllers List all lab controllers
search_tasks Search the task library

Write Tools (10)

Tool Description
submit_job Submit a job from XML (with validation and auto-fill)
clone_job Clone and resubmit an existing job
cancel_job Cancel a running/queued job
watch_job Poll until completion with failure analysis and auto-retry
reserve_system Manually reserve a system
release_system Release a manually reserved system
power_system Power on/off/reboot a system
provision_system Provision a reserved system with a distro
extend_watchdog Extend a running task's watchdog timer
set_job_response Ack/nak (waive) a recipe set result

Authentication

Kerberos (recommended)

Ensure you have a valid ticket:

kinit your-username@YOUR.REALM

The server uses the bkr CLI for authenticated operations, which picks up the Kerberos ticket automatically.

Password

Set BEAKER_AUTH_METHOD=password along with BEAKER_USERNAME and BEAKER_PASSWORD. The server authenticates via the XML-RPC auth.login_password() method.

Architecture

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 (4 read + 4 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

Development

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

License

Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_beaker-0.1.1.tar.gz (135.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_beaker-0.1.1-py3-none-any.whl (46.0 kB view details)

Uploaded Python 3

File details

Details for the file mcp_beaker-0.1.1.tar.gz.

File metadata

  • Download URL: mcp_beaker-0.1.1.tar.gz
  • Upload date:
  • Size: 135.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mcp_beaker-0.1.1.tar.gz
Algorithm Hash digest
SHA256 524c65ba4eebae189be7c47efeea22b31710a17ddfc0d5645bf48ee49b22e865
MD5 6d2c6ef38a61c046c5288d81afb23de7
BLAKE2b-256 17b47dc4ccb46e7561606da1e4093ec6795e342b862fe9a2341e7e0f1ce621ed

See more details on using hashes here.

File details

Details for the file mcp_beaker-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: mcp_beaker-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 46.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mcp_beaker-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 045fc9843ed689b48b8cab66896f3f32f9550ac3e2c170e0efa77d6e914b75a3
MD5 b7b7bca8cf65f36f12920a3ed4f09fe9
BLAKE2b-256 513d26ffa40e49f13d3b91a59d8cd3cc4649065916790cc7bd8a051b9a1d294f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page