mcp-beaker
mcp-beaker
Beaker 랩 자동화를 위한 MCP 서버 -- 시스템 프로비저닝, 작업 관리, 배포판 검색, 장애 진단을 지원합니다.
모든 Beaker 서버 인스턴스와 호환됩니다. FastMCP v3 기반으로 구축되었으며, AI 코딩 어시스턴트(Cursor, Claude Desktop 등)와 함께 사용하도록 설계되었습니다.
기능
27개 도구 -- Beaker 전체 수명주기(시스템, 작업, 배포판, 태스크)를 포괄
Beaker Py3 호환: 레거시 및 현대화된 Beaker REST API 모두 지원
유연한 인증: Kerberos(네이티브 GSSAPI/SPNEGO 또는
bkrCLI 폴백) 및 비밀번호(XML-RPC)작업 XML 검증: 누락된 필드 자동 채움, 배포판 계열 추론
장애 진단: 수정 가능한 실패에 대한 자동 재시도를 포함한 심층 분석
MCP 리소스로 노출되는 10개 문서 주제
일반 작업용 2개 워크플로 프롬프트(시스템 예약, 작업 진단)
범용성: 모든 Beaker URL과 호환, 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를 사용하여 컨테이너가 Kerberos KDC 및 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 서버가 컨테이너의 기본 신뢰 저장소에 없는 내부 CA 인증서를 사용합니다. 세 가지 옵션이 있습니다:
검증 비활성화(가장 간단하며, 신뢰할 수 있는 사내 네트워크에서 적합):
"-e", "BEAKER_SSL_VERIFY=false",BEAKER_CA_CERT_DATA로 CA 인증서 인라인 전달(볼륨 마운트 불필요):
"-e", "BEAKER_CA_CERT_DATA=-----BEGIN CERTIFICATE-----\nMIID...your-ca-cert...\n-----END CERTIFICATE-----",CA 번들 마운트(단일 파일):
"-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 |
| 아니요 |
|
|
| 아니요 |
|
|
| 비밀번호 인증 시 | -- | Beaker 사용자 이름 |
| 비밀번호 인증 시 | -- | Beaker 비밀번호 |
| 아니요 |
| 작업 조회 시 기본 소유자 |
| 아니요 |
| SSL 인증서 검증 여부 |
| 아니요 | -- | CA 인증서 번들 경로 |
| 컨테이너 전용 | -- | 컨테이너 내 |
| 컨테이너 전용 | -- | 컨테이너 내 |
| 컨테이너 전용 | -- | 시작 시 파일로 기록되는 PEM 인코딩 CA 인증서 |
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개)
도구 | 설명 |
| 가용성(전체/사용 가능/여유)별 시스템 목록 |
| CPU, 아키텍처, 메모리, 풀 및 기타 하드웨어 속성으로 시스템 검색 |
| 시스템의 하드웨어 사양, CPU 정보, 풀 멤버십, 소유권, 상태 |
| 시스템의 현재 상태, 예약 및 대여 상태 |
| 시스템의 활동 기록 |
| 지원되는 OS 계열 및 아키텍처 |
| 소유자, 상태, 화이트보드로 작업 필터링 |
| 장애 진단이 포함된 작업 상태 |
| 작업 결과를 XML로 내보내기 |
| 작업/레시피/태스크의 로그 파일 목록 |
| 이름, 계열, 아키텍처, 태그로 배포판 검색 |
| 알려진 모든 OS 계열 목록 |
| 인증된 사용자 정보 표시 |
| 모든 랩 컨트롤러 목록 |
| 태스크 라이브러리 검색 |
쓰기 도구(12개)
도구 | 설명 |
| XML에서 작업 제출(검증 및 자동 채움 포함) |
| 기존 작업 복제 및 재제출 |
| 실행 중/대기 중인 작업 취소 |
| 실패 분석 및 자동 재시도와 함께 완료까지 폴링 |
| 시스템 수동 예약 |
| 수동으로 예약된 시스템 해제 |
| 사용자에게 시스템 대여 부여 |
| 현재 시스템 대여 반환 |
| 시스템 전원 켜기/끄기/재부팅 |
| 예약된 시스템에 배포판 프로비저닝 |
| 실행 중인 태스크의 워치독 타이머 연장 |
| 레시피 세트 결과에 대해 ack/nak(면제) 처리 |
인증
Kerberos(권장)
유효한 티켓이 있는지 확인하세요:
kinit your-username@YOUR.REALM서버는 BEAKER_KERBEROS_BACKEND로 제어되는 두 가지 Kerberos 백엔드를 지원합니다:
값 | 백엔드 | 설치 |
| 네이티브 GSSAPI/SPNEGO -- 경량, pip 설치 가능 |
|
|
|
|
두 백엔드 모두 kinit의 동일한 Kerberos 티켓을 사용합니다.
비밀번호
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