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やBeaverサーバーに
(特にVPN経由で)到達できるようにします。
チケットキャッシュをマウントしたコンテナ(設定ファイルにパスワードを入れない)
mcp.jsonにKerberosパスワードを保存する代わりに、ホストから既存の
チケットキャッシュをマウントできます:
ステップ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証明書を使用します。3つのオプションがあります:
検証を無効にする(最も簡単。信頼できる社内ネットワークで問題ありません):
"-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"
}
}
}
}ストリーミング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)
ツール | 説明 |
| 可用性(all/available/free)でシステムを一覧表示 |
| CPU、アーキテクチャ、メモリ、プール、その他のハードウェア属性でシステムを検索 |
| システムのハードウェア仕様、CPU情報、プールメンバーシップ、所有権、ステータスを取得 |
| システムの現在の状態、予約、ローン状況を取得 |
| システムのアクティビティ履歴を取得 |
| サポートされているOSファミリーとアーキテクチャを取得 |
| オーナー、ステータス、ホワイトボードでジョブをフィルタリング |
| 障害診断付きのジョブステータスを取得 |
| ジョブ結果をXMLとしてエクスポート |
| ジョブ/レシピ/タスクのログファイルを一覧表示 |
| 名前、ファミリー、アーキテクチャ、タグでディストリビューションを検索 |
| 既知のOSファミリーをすべて一覧表示 |
| 認証済みユーザー情報を表示 |
| すべてのラボコントローラーを一覧表示 |
| タスクライブラリを検索 |
書き込みツール(12)
ツール | 説明 |
| XMLからジョブを送信(検証と自動入力付き) |
| 既存のジョブをクローンして再送信 |
| 実行中/キュー内のジョブをキャンセル |
| 障害分析と自動リトライ付きで完了までポーリング |
| システムを手動で予約 |
| 手動で予約したシステムを解放 |
| ユーザーにシステムのローンを許可 |
| 現在のシステムローンの返却 |
| システムの電源オン/オフ/再起動 |
| 予約済みシステムにディストリビューションをプロビジョニング |
| 実行中タスクのウォッチドッグタイマーを延長 |
| レシピセット結果を承認/拒否(破棄) |
認証
Kerberos(推奨)
有効なチケットがあることを確認します:
kinit your-username@YOUR.REALMサーバーはBEAKER_KERBEROS_BACKENDで制御される2つの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