Bareos Mcp Server について
Bareos Mcp Server は、バックアップ基盤を監視する運用担当者向けに、Bareos のデータを読み取り専用で提供します。bconsole 経由でジョブ、クライアント、ファイルセット、プール、ボリュームを照会し、ジョブ履歴を絞り込めます。
主な機能
- 01バックアップジョブの絞り込みと一覧
- 02ジョブ状態とログの表示
- 03バックアップ済みファイルの一覧
- 04クライアントとファイルセットの確認
- 05プール容量とボリュームの確認
活用シーン
- 01最近のジョブや失敗したジョブの確認
- 02ジョブの状態とログの調査
- 03空き容量やプルーニング対象ボリュームの確認
MCP 対応
Bareos の監視・照会操作を読み取り専用の MCP ツールとして公開します。bconsole を介して Bareos Director と通信し、ローカル接続または設定済みのリモートラッパーを利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Bareos MCP サーバー
Bareos backup system 向けの Model Context Protocol(MCP)サーバーです。バックアップインフラストラクチャの監視と照会を行う、読み取り専用の操作を提供します。
クイックスタート
設定が完了したら、バックアップについて AI アシスタントに自然な言葉で質問できます。
"Show me the last 10 backup jobs"
"Are there any failed backups today?"
"What's the status of job 12345?"
"How much storage is left in the Full pool?"
"List all volumes ready for pruning"
機能
読み取り専用の操作
- ジョブ:最近のジョブの一覧表示、詳細なステータスの取得、ジョブログの表示
- クライアント:すべての Bareos ファイルデーモンクライアントの一覧表示
- ファイルセット:設定済みのバックアップファイルセットの一覧表示
- ストレージ:容量情報付きでプールとボリュームを一覧表示
本番環境で安全に利用できるよう、すべての操作は設計上、読み取り専用です。
前提条件
- Rust 1.70+ - サーバーのビルドに必要です
- Bareos Director - bconsole にアクセスできること
- bconsole - Bareos Director のコマンドラインインターフェイス
インストール
1. クローンとビルド
git clone https://github.com/edeckers/bareos-mcp-server.git
cd bareos-mcp-server
cargo build --release
バイナリは target/release/bareos-mcp-server に作成されます。
2. bconsole アクセスの設定
MCP サーバーは Bareos Director とやり取りするために bconsole を呼び出します。デフォルトでは PATH 内の bconsole を探しますが、BAREOS_BCONSOLE_PATH 環境変数を設定すると、バイナリまたはラッパースクリプトの絶対パスを指定できます。
export BAREOS_BCONSOLE_PATH=/usr/sbin/bconsole
MCP クライアントの設定経由で渡すこともできます(手順 3 を参照)。
いくつかの方法があります。
オプション A:ローカルの bconsole(直接アクセス)
bconsole がローカルにインストールされていて、アクセスできる場合:
# Test that bconsole works
bconsole -c /etc/bareos/bconsole.conf
追加の設定は不要です。サーバーは bconsole を直接使用します。
オプション B:SSH 経由のリモート Bareos
Bareos Director がリモートホスト上にある場合は、ラッパースクリプトを作成します。
# Copy the example
cp bconsole.example.sh bconsole
chmod +x bconsole
# Edit bconsole and set your hostname
vim bconsole
ラッパーの内容の例:
#!/usr/bin/env bash
ssh your-bareos-host "sudo bconsole $*"
ラッパーのディレクトリを PATH に追加するか、MCP 設定で指定してください。
オプション C:Docker/コンテナーのセットアップ
Bareos Director にネットワーク経由でアクセスできるコンテナー内で bconsole を実行します。
3. MCP クライアントの設定
Claude Code(CLI)の場合
プロジェクトディレクトリに .mcp.json を作成します。
cp .mcp.json.example .mcp.json
# Edit with your paths
vim .mcp.json
設定例:
{
"bareos": {
"command": "/absolute/path/to/bareos-mcp-server/target/release/bareos-mcp-server",
"args": [],
"env": {
"BAREOS_BCONSOLE_PATH": "/absolute/path/to/bconsole"
}
}
}
Claude Desktop の場合
Claude Desktop の設定ファイルに追加します。
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"bareos": {
"command": "/absolute/path/to/bareos-mcp-server/target/release/bareos-mcp-server",
"args": [],
"env": {
"BAREOS_BCONSOLE_PATH": "/absolute/path/to/bconsole"
}
}
}
}
使用方法
Claude Code での使用
cd your-project
claude
クエリの例:
- 「直近 10 件のバックアップジョブを表示してください」
- 「ジョブ 12345 のステータスはどうなっていますか?」
- 「すべての Bareos クライアントを一覧表示してください」
- 「Full プールにはどれくらいのストレージがありますか?」
- 「プルーニング可能なボリュームを表示してください」
利用可能なツール
| ツール | 説明 | パラメーター |
|---|---|---|
list_jobs | フィルターを指定してバックアップジョブを一覧表示 | job、client、jobstatus、jobtype、joblevel、volume、pool(すべて任意のフィルター);days、hours(時間フィルター。hours が優先);last、count(出力モード。count が優先) |
get_job_status | ジョブの詳細なステータスを取得 | job_id(必須) |
get_job_log | ジョブのログ全体を表示 | job_id(必須) |
list_files | ジョブでバックアップされたファイルを一覧表示 | job_id(必須) |
list_clients | すべてのファイルデーモンクライアントを一覧表示 | なし |
list_filesets | バックアップファイルセットを一覧表示 | なし |
list_pools | ストレージプールを一覧表示 | なし |
list_volumes | ボリューム/メディアを一覧表示 | pool(任意のフィルター) |
list_jobs のパラメーター詳細
list_jobs ツールでは、複数のフィルターとオプションを組み合わせて使用できます。
フィルター(すべて任意で、組み合わせ可能):
job- ジョブ名でフィルターclient- クライアント名でフィルターjobstatus- ステータスでフィルター(例:T=終了、f=失敗、R=実行中)jobtype- 種類でフィルター(例:B=バックアップ、R=リストア、V=検証、D=管理、C=コピー、M=移行)joblevel- レベルでフィルター(例:F=フル、I=増分、D=差分)volume- ボリューム名でフィルターpool- プール名でフィルター
ジョブの種類について:
- ユーザーが「バックアップ」や「バックアップのパフォーマンス」について尋ねた場合、通常はバックアップジョブのみ(
jobtype: "B")を指します。明示的に要求されない限り、検証、リストア、その他のジョブの種類は含めないでください。 - 検証ジョブ(
jobtype: "V")はバックアップの整合性を検証しますが、それ自体はバックアップではありません。 - 曖昧さがある場合は、
jobtypeフィルターを使って特定の操作に絞り込みます。
時間フィルター(相互に排他的):
days- 過去 N 日間のジョブを表示hours- 過去 N 時間のジョブを表示- 優先順位:両方が指定された場合、
hoursが優先されます(Bareos の動作に準拠)。
出力モード(相互に排他的):
last- 各ジョブの最新の実行のみを表示します(警告:期間内にジョブが複数回実行されていても、最後の実行のみが返されます)。count- 詳細の代わりに、条件に一致するジョブ数を表示- 優先順位:両方が指定された場合、
countが優先されます(Bareos の動作に準拠)。
例:
{"client": "web-server", "days": 7}- 過去 7 日間の web-server のすべてのジョブ{"jobstatus": "f", "hours": 24, "count": true}- 過去 24 時間の失敗したジョブの数{"pool": "Full", "last": true}- Full プール内の各ジョブの種類の最新の実行(ジョブごとに実行は 1 回のみ)
直接テスト
MCP クライアントを使わずにサーバーをテストします。
# Initialize
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | ./target/release/bareos-mcp-server
# List tools
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | ./target/release/bareos-mcp-server
# Call a tool - list jobs from last 7 days
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_jobs","arguments":{"days":7}}}' | ./target/release/bareos-mcp-server
# List the most recent jobs for a specific client
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_jobs","arguments":{"client":"backup-client-1","last":true}}}' | ./target/release/bareos-mcp-server
# Count failed jobs in the last 24 hours
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_jobs","arguments":{"hours":24,"jobstatus":"f","count":true}}}' | ./target/release/bareos-mcp-server
トラブルシューティング
bconsole が見つからない
# Check if bconsole is in PATH
which bconsole
# Or create wrapper script (see Setup section)
アクセスが拒否されました
# Check bconsole config permissions
ls -l /etc/bareos/bconsole.conf
# May need to add user to bareos group
sudo usermod -a -G bareos $USER
接続が拒否されました
# Test bconsole directly
echo "version" | bconsole
# Check Director is running
systemctl status bareos-dir
SSH の問題(リモート設定)
# Test SSH connection
ssh your-host "bconsole" << EOF
version
quit
EOF
# Check SSH key authentication
ssh -v your-host
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。