mcp-beaker
mcp-beaker
Servidor MCP para la automatización de laboratorio Beaker -- aprovisionamiento de sistemas, gestión de trabajos, descubrimiento de distribuciones y diagnóstico de fallos.
Funciona con cualquier instancia de servidor Beaker. Construido sobre FastMCP v3 y diseñado para su uso con asistentes de codificación con IA (Cursor, Claude Desktop, etc.).
Características
27 herramientas que cubren el ciclo de vida completo de Beaker: sistemas, trabajos, distribuciones, tareas
Compatible con Beaker Py3: funciona con las API REST de Beaker tanto heredadas como modernizadas
Autenticación flexible: Kerberos (GSSAPI/SPNEGO nativo o respaldo de CLI
bkr) y contraseña (XML-RPC)Validación de XML de trabajos: rellena automáticamente campos faltantes, infiere familias de distribuciones
Diagnóstico de fallos: análisis profundo con reintento automático en fallos corregibles
10 temas de documentación expuestos como recursos MCP
2 indicaciones de flujo de trabajo para tareas comunes (reservar sistema, diagnosticar trabajo)
Genérico: funciona con cualquier URL de Beaker, configuración SSL/CA ajustable
Related MCP server: zuul-mcp
Instalación
Contenedor (recomendado)
La imagen del contenedor incluye todo -- no hay dependencias del host más allá de
podman (o docker). La autenticación Kerberos ocurre dentro del contenedor
mediante las variables de entorno KRB5_PRINCIPAL y 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-beakerConfiguración
Cursor / VS Code
Añade a tu .cursor/mcp.json (o .vscode/mcp.json):
Contenedor (recomendado)
{
"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"
]
}
}
}El contenedor ejecuta kinit internamente -- sin montajes de volúmenes, sin dependencias
del host. Usa --network=host para que el contenedor pueda alcanzar tu
KDC de Kerberos y el servidor Beaker (especialmente a través de VPN).
Contenedor con caché de tickets montada (sin contraseña en la configuración)
En lugar de almacenar tu contraseña de Kerberos en mcp.json, puedes montar
una caché de tickets preexistente desde el host:
Paso 1 -- Crear un ticket basado en archivo en el host:
kinit -c FILE:/tmp/krb5cc_beaker your-user@YOUR.REALMVuelve a ejecutar esto cuando el ticket expire (normalmente cada 10 horas).
Paso 2 -- Montar el ticket en el contenedor:
{
"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"
]
}
}
}El contenedor detecta el ticket válido y omite kinit por completo.
No se necesitan KRB5_PRINCIPAL ni KRB5_PASSWORD. Las banderas de montaje :ro,Z
aseguran acceso de solo lectura con el etiquetado SELinux adecuado.
Nota: El host normalmente usa KCM (D-Bus) para el almacenamiento de credenciales, al que los contenedores no pueden acceder. Por eso necesitas
kinit -c FILE:...para crear una caché basada en archivos que pueda montarse por bind.
Certificados SSL: Muchos servidores Beaker usan certificados de CA internos que no están en el almacén de confianza predeterminado del contenedor. Tienes tres opciones:
Deshabilitar la verificación (lo más simple, adecuado en una red corporativa confiable):
"-e", "BEAKER_SSL_VERIFY=false",Pasar el certificado CA en línea mediante
BEAKER_CA_CERT_DATA(sin necesidad de montaje de volumen):
"-e", "BEAKER_CA_CERT_DATA=-----BEGIN CERTIFICATE-----\nMIID...your-ca-cert...\n-----END CERTIFICATE-----",Montar un paquete de CA (archivo único):
"-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"
}
}
}
}Modo HTTP transmisible
uvx mcp-beaker --transport streamable-http --port 8000{
"mcpServers": {
"beaker": {
"url": "http://localhost:8000/mcp",
"type": "streamableHttp"
}
}
}Variables de entorno
Variable | ¿Requerida? | Predeterminado | Descripción |
| Sí | -- | URL base de tu servidor Beaker |
| No |
|
|
| No |
|
|
| Para autenticación por contraseña | -- | Nombre de usuario de Beaker |
| Para autenticación por contraseña | -- | Contraseña de Beaker |
| No |
| Propietario predeterminado para consultas de trabajos |
| No |
| Verificar certificados SSL |
| No | -- | Ruta al paquete de certificados CA |
| Solo contenedor | -- | Principal de Kerberos para |
| Solo contenedor | -- | Contraseña de Kerberos para |
| Solo contenedor | -- | Certificado CA codificado en PEM escrito a un archivo al inicio |
Opciones de 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 messageHerramientas
Herramientas de lectura (15)
Herramienta | Descripción |
| Listar sistemas por disponibilidad (todos/disponibles/libres) |
| Buscar sistemas por CPU, arquitectura, memoria, pool y otros atributos de hardware |
| Especificaciones de hardware, información de CPU, membresía de pool, propiedad, estado de un sistema |
| Condición actual, reserva y estado de préstamo de un sistema |
| Historial de actividad de un sistema |
| Familias de SO y arquitecturas soportadas |
| Filtrar trabajos por propietario, estado, pizarra |
| Estado del trabajo con diagnóstico de fallos |
| Exportar resultados del trabajo como XML |
| Listar archivos de registro de un trabajo/receta/tarea |
| Buscar distribuciones por nombre, familia, arquitectura, etiquetas |
| Listar todas las familias de SO conocidas |
| Mostrar información del usuario autenticado |
| Listar todos los controladores de laboratorio |
| Buscar en la biblioteca de tareas |
Herramientas de escritura (12)
Herramienta | Descripción |
| Enviar un trabajo desde XML (con validación y autocompletado) |
| Clonar y reenviar un trabajo existente |
| Cancelar un trabajo en ejecución/en cola |
| Sondeo hasta completar con análisis de fallos y reintento automático |
| Reservar manualmente un sistema |
| Liberar un sistema reservado manualmente |
| Otorgar un préstamo de un sistema a un usuario |
| Devolver un préstamo de sistema actual |
| Encender/apagar/reiniciar un sistema |
| Aprovisionar un sistema reservado con una distribución |
| Extender el temporizador de vigilancia de una tarea en ejecución |
| Ack/nak (renunciar) a un resultado de conjunto de recetas |
Autenticación
Kerberos (recomendado)
Asegúrate de tener un ticket válido:
kinit your-username@YOUR.REALMEl servidor soporta dos backends de Kerberos, controlados por BEAKER_KERBEROS_BACKEND:
Valor | Backend | Instalación |
| GSSAPI/SPNEGO nativo -- ligero, instalable con pip |
|
| Subprocesos de CLI |
|
Ambos backends usan el mismo ticket de Kerberos de kinit.
Contraseña
Establece BEAKER_AUTH_METHOD=password junto con BEAKER_USERNAME y BEAKER_PASSWORD. El servidor se autentica mediante el método auth.login_password() de XML-RPC. Nota: esto requiere que LDAP del lado del servidor esté habilitado.
Arquitectura
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 utilitiesDesarrollo
cd mcp-beaker
uv sync --dev
uv run pytest
uv run ruff check src/Licencia
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