mcpField
T
TractorBeeam365 MCP

TractorBeeam365 MCP

ローカル
github.comクラウド・インフラ217 週間前に更新

TractorBeeam365 MCP について

TractorBeeam365 MCPは、Veeam Backup for Microsoft 365を確認する管理者向けのMCPサーバーです。既定では読み取り専用で、操作や復元を有効にした場合は確認トークンが必要となり、監査ログに記録されます。

主な機能

  1. 01ヘルス状況と傾向の異常を要約
  2. 02バックアップ対象の漏れを確認
  3. 03クラウドストレージのロック設定を照合
  4. 04組織、ジョブ、復元ポイントを確認
  5. 05任意でジョブ制御と復元を有効化
  6. 06確認と監査ログで変更を管理

活用シーン

  1. 01バックアップ設定と保護漏れの確認
  2. 02ジョブ成功率とリポジトリ容量の推移を追跡
  3. 03クラウドストレージの不変性設定を検証
  4. 04必要に応じてMicrosoft 365データを復元

MCP 対応

MCPクライアントにVeeam Backup for Microsoft 365の確認ツールを公開し、任意でジョブ操作と復元にも対応します。stdioとStreamable HTTPをサポートします。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"ringosystems-tractorbeeam": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"VB365_HOST",
"-e",
"VB365_USERNAME",
"-e",
"VB365_PASSWORD",
"ghcr.io/ringosystems/tractorbeeam-mcp:2.2.0"
],
"env": {
"VB365_HOST": "<VB365_HOST>",
"VB365_USERNAME": "<VB365_USERNAME>",
"VB365_PASSWORD": "<VB365_PASSWORD>"
}
}
}
}
起動コマンドdocker run -i --rm -e VB365_HOST -e VB365_USERNAME -e VB365_PASSWORD ghcr.io/ringosystems/tractorbeeam-mcp:2.2.0
設定が必要な環境変数
VB365_HOSTIP or hostname of the VB365 (Veeam Backup Server) host
VB365_USERNAMEシークレットVB365 account used to obtain a REST API token (DOMAIN\\user, .\\localuser, or user@domain)
VB365_PASSWORDシークレットPassword for VB365_USERNAME

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/ringosystems/tractorbeeam-mcp:2.2.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

TractorBeeam365 MCP

Veeam Backup for Microsoft 365(VB365)用のModel Context Protocolサーバーです。 VB365 REST APIに直接接続し、MCPクライアント(Claude Code / Claude Desktop)がバックアップ構成を確認し、保護のギャップを見つけ、傾向を把握し、クラウドのイミュータビリティを検証できます。また、明示的にオプトインした場合は、ジョブの実行やリストアのオーケストレーションも行えます。

独立したプロジェクトです。Veeam Softwareとは提携、承認、サポートの関係にありません。 「Veeam」はVeeam Softwareの登録商標です。「Beeam」という表記は、意図的に変えた独自の言葉遊びです。ご自身の責任でご利用ください。

🔱 名前の由来:トラクタービームがデータを引き戻し、Beeamはその下にあるバックアップ製品にちなんでいます。読み取り専用の確認が安全なデフォルトです。「引き戻し」(リストア/アクション)はオプトインです。

2つのティア

ティアデフォルトできること
読み取り専用の確認✅ 常に有効GETのみ。変更は一切できません。構成/健全性、ギャップ分析、傾向、クラウドロックの照合。
アクション/リストア⛔ 無効TB_* 環境フラグでオプトインします。ジョブの実行/停止、レポートの生成、組織の同期、リストアの定義と実行ができます。書き込みはすべて確認トークンによって制御され、監査されます。

TB_* フラグを設定しなければ、このツールは純粋な読み取り専用の確認ツールとなり、物理的に環境を変更できません。アクション/リストアのツールは登録すらされません。

すばやくデプロイ(ビルド済みイメージ)

クローンもビルドも不要です。v2.2.0以降、イメージはGitHub Container RegistryとDocker Hubに**マルチアーキテクチャ(amd64 + arm64)**で公開されているため、x86サーバー、Apple Silicon、ARMマシン(Raspberry Pi、ARMクラウド)でネイティブに実行できます。ARMホストでは、マルチアーキテクチャ対応の :latest が公開されるまで、:2.2.0(またはそれ以降)のタグを固定して使用してください。

常駐HTTPサービス(Docker Compose)

2つのファイルを取得して起動します。

curl -fsSLO https://raw.githubusercontent.com/Ringosystems/TractorBeeam-MCP/main/docker-compose.deploy.yml
curl -fsSL  https://raw.githubusercontent.com/Ringosystems/TractorBeeam-MCP/main/.env.example -o .env
# Edit .env: set VB365_HOST / VB365_USERNAME / VB365_PASSWORD and a long MCP_AUTH_TOKEN.
docker compose -f docker-compose.deploy.yml up -d

MCPは http://<host>:8766/mcp で利用できます。設定したベアラートークンを使ってクライアントを接続します。

claude mcp add --transport http tractorbeeam365 http://<host>:8766/mcp \
  --header "Authorization: Bearer <your MCP_AUTH_TOKEN>"

後で更新する場合:

docker compose -f docker-compose.deploy.yml pull && docker compose -f docker-compose.deploy.yml up -d
Unraid(ワンクリック)

UnraidでDocker → Add Containerを開き、このテンプレートURLをTemplateフィールドに貼り付けます。

https://raw.githubusercontent.com/Ringosystems/TractorBeeam-MCP/main/deploy/unraid/tractorbeeam365.xml

VB365_HOST、VB365_USERNAME、VB365_PASSWORD、長い MCP_AUTH_TOKEN を入力してから、Applyをクリックします。監査フォルダーとダウンロードフォルダーは /mnt/user/appdata/tractorbeeam365/ にマッピングされます。

MCPクライアント1つでサービス不要(stdio)

サーバー自体を起動するクライアントでは、必要に応じてイメージをstdio経由で実行します。

docker run -i --rm \
  -e VB365_HOST=... -e VB365_USERNAME=... -e VB365_PASSWORD=... \
  ghcr.io/ringosystems/tractorbeeam-mcp:latest

読み取り専用ツール(常に利用可能)

ツール返される内容
vb365_health_summary一括確認:組織、ジョブと最終ステータス、リポジトリ、クラウドストレージ(B2/S3/Azure)、プロキシ、ライセンス、傾向の異常、flags リスト。まずはこちらを確認してください。
vb365_trendsジョブごとの成功/失敗の推移、リポジトリの容量上限到達予測、組織ごとのリストアテストの実施頻度、RPO準拠状況。
gap_coverage_summary / gap_unprotected_objectsMicrosoft Graphとジョブの保護対象を比較し、バックアップ対象範囲の割合と、稼働中のM365オブジェクトのうち保護されていないものを表示します(GRAPH_* が必要です)。
cloud_lock_auditバケットのObject Lockモード/保持期間/バージョニングをVB365の報告内容と照合します(B2_*/S3_* が必要です)。
vb365_api_rootリソース一覧とバージョン(接続を確認します)。
vb365_list_organizations / vb365_org_inventory保護対象の組織、および組織内のユーザー/グループ/サイト/チーム。
vb365_list_jobs / vb365_get_job / vb365_job_scopeジョブ一覧、1つのジョブの構成、ジョブが保護する対象の詳細(選択対象/除外対象)。
vb365_list_job_sessions最近の実行結果(ジョブごとの絞り込みも可能)。
vb365_list_repositories / vb365_list_restore_pointsリポジトリ(容量/保持期間/イミュータビリティ)とリストアポイント。
vb365_list_object_storage / vb365_get_object_storageクラウド/オブジェクトストレージ(B2/S3/Azure/Wasabi/IBM/Glacier)。
vb365_list_proxies / vb365_licenseプロキシとステータス、ライセンス/エディション/有効期限。
vb365_getその他の /<version>/... リソースに対する読み取り専用GET。

アクション/復元ツール(オプトイン、制限付き)

対応するフラグが設定されている場合にのみ登録されます。2 回呼び出す確認パターン: 1 回目の呼び出しでプレビューと一度限りの confirm_token を取得し、2 回目の呼び出しで confirm=<token> を指定して実行します。実行のたびに TB_AUDIT_LOG に追記されます。

ツール(フラグ)機能
action_job (TB_ALLOW_JOB_CONTROL)バックアップジョブの開始/停止/有効化/無効化
action_generate_report (TB_ALLOW_REPORTS)メールボックス/onedrive/sharepoint/teams/ユーザー保護、ライセンス、ストレージのレポートをファイルに出力
action_org_sync (TB_ALLOW_ORG_SYNC)組織のディレクトリ再同期を実行
action_proxy (TB_ALLOW_PROXY)プロキシの再スキャン/メンテナンスモードへの切り替え
restore_session_start → restore_browse / restore_search → restore_define → restore_execute → restore_status → restore_session_stop (TB_ALLOW_RESTORE)Exchange/OneDrive/SharePoint/Teams 全体の復元オーケストレーション:特定時点のセッションを開き、復元可能なアイテムを参照/検索してから、復元対象、復元先、オプションを定義し、復元を実行します。
復元:対象、場所、方法を定義する
restore_session_start(scope="job", scope_id="<jobId>", workload="exchange")
   → { session_id }                         # opens a point-in-time explore session
restore_browse(session_id)                  # list mailboxes
restore_browse(session_id, parent_id=<mailboxId>)   # list items in a mailbox
restore_define(session_id, parent_id=<mailboxId>, item_ids=[...], target="export")
   → { confirm_token, preview }             # DRY RUN — nothing changed
restore_execute(session_id, confirm=<confirm_token>)   # executes + audits
restore_session_stop(session_id)
  • target = export(最も安全です。バックアップをローカルファイルに読み込みます。M365 の認証情報は不要です)、alternate(別の M365 の場所に書き込みます)、または original(元の場所に書き戻します。破壊的な操作です。confirm_overwrite_original=True も指定してください)。
  • options には、代替の mailbox/folder と、書き戻しに VB365 が使用する M365 の接続先認証情報(userName/userPassword/applicationId)を指定できます。または .env に VB365_RESTORE_* を設定してください。
  • PST へのエクスポートには、VB365 サーバーに 64 ビット版の Outlook 2010 以降がインストールされている必要があります(Veeam の要件です)。インストールされていない場合、exportToPst はサーバー側エラーを返します。

セットアップ

  1. Claude Code の実行環境に Python 3.10 以降をインストールします。

  2. このフォルダーから次を実行します。

    python -m venv .venv
    .\.venv\Scripts\Activate.ps1
    pip install -r requirements.txt
    
  3. .env.example を .env にコピーし、VB365_HOST、VB365_USERNAME、VB365_PASSWORD を設定します(値が異なる場合を除き、VB365_PORT=4443、VB365_API_VERSION=v8 はそのままにしてください)。必要に応じて GRAPH_*、B2_*/S3_*、TB_* フラグも追加します。

    REST API アカウントには、VB365 管理者(または復元オペレーター)の権限が必要です。VB365 には読み取り専用の API ロールがありません。読み取り専用のレビューツールは、いずれも GET リクエストのみを使用します。New-VB365ReviewAccount.ps1 は VB365 サーバー上に専用のサービスアカウントを作成します。.env をソース管理に含めないでください。

Claude Code への登録

# Replace <repo> with the absolute path to your clone.
claude mcp add tractorbeeam365 --scope user -- "<repo>\.venv\Scripts\python.exe" "<repo>\server.py"

Linux/macOS ではスラッシュを使用し、<repo>/.venv/bin/python を指定してください。

また、MCP Registry に io.github.Ringosystems/tractorbeeam-mcp として公開されています(GHCR 上の OCI イメージ)。レジストリに対応している MCP クライアントは、直接インストールできます。公開済みイメージを stdio サーバーとして実行するには、次を実行します。

docker run -i --rm \
  -e VB365_HOST=... -e VB365_USERNAME=... -e VB365_PASSWORD=... \
  ghcr.io/ringosystems/tractorbeeam-mcp:latest

次に、**「VB365 の正常性サマリーを実行して、設定に問題がないか教えてください。」**と尋ねます。

アクション/復元レベルを有効にする

オプトインするまで、アクション/復元ツールは非表示のままです。.env で次のように設定します。

TB_ENABLE_ACTIONS=true        # master switch
TB_ALLOW_JOB_CONTROL=true     # + any of the per-category flags you want
TB_ALLOW_RESTORE=true
TB_AUDIT_LOG=audit/actions.jsonl

呼び出し元ごとの ID を確認できないため、TB_ALLOW_WRITE_OVER_HTTP=true も設定しない限り、HTTP トランスポートではアクション/復元ツールは登録されません。オペレーター向けレベルは stdio 経由で実行するか、独自の認証機能付きリバースプロキシの背後でのみ実行してください。

安全性の仕組み:ツールは有効化された場合にのみ登録され、変更操作にはすべて一度限りの確認トークンを使った 2 回目の呼び出しが必要です。復元先は安全な場所がデフォルトであり、元の場所への上書きには明示的な確認が必要です。また、すべての操作が追記専用の監査ログに記録されます。推奨事項:フラグを有効にした別個の「オペレーター」インスタンスを実行し、デフォルトのインスタンスは読み取り専用にしてください。

永続サービスとして実行する(Docker / UNRAID)

イメージはデフォルトで stdio トランスポートを使用するため、MCP クライアントから docker run -i で実行できます。docker compose 経由では、コンテナ内の 0.0.0.0:8000 で streamable-http を読み取り専用で実行します(TB_* フラグはありません)。認証情報はイメージに組み込まれていません。HTTP トランスポートはフェイルクローズで動作し、MCP_AUTH_TOKEN を設定しないと起動を拒否します(クライアントは Authorization: Bearer <token> を送信します)。または、MCP_ALLOW_UNAUTHENTICATED_HTTP=true を設定してリスクを明示的に受け入れることもできます。

# Put MCP_AUTH_TOKEN=<a long random secret> in .env first.
docker compose up -d --build          # builds locally and runs read-only
# MCP is live at http://<host>:8766/mcp ; attach with:
claude mcp add --transport http tractorbeeam365 http://<host>:8766/mcp \
  --header "Authorization: Bearer <token>"
ビルド済みイメージ

各 GitHub リリースでは、CI 経由でマルチアーキテクチャ、マルチタグのイメージが GHCR、Docker Hub、MCP Registry に公開されます(.github/workflows/publish.yml)。リリースの詳細な手順については、PUBLISHING.md を参照してください。

# GitHub Container Registry (published automatically on every release):
docker pull ghcr.io/ringosystems/tractorbeeam-mcp:latest
# Docker Hub (published when the DOCKERHUB_USERNAME / DOCKERHUB_TOKEN repo
# secrets are configured):
docker pull ringosystems/tractorbeeam365-mcp:latest

代わりに手動で公開するには:

docker build -t <dockerhubuser>/tractorbeeam365-mcp:latest .
docker push <dockerhubuser>/tractorbeeam365-mcp:latest

セキュリティ: MCP HTTP トランスポートには呼び出し元ごとの ID がありません。このビルドはデフォルトでループバックにバインドされ、HTTP を提供する前に MCP_AUTH_TOKEN を必須とし、TB_ALLOW_WRITE_OVER_HTTP=true を設定しない限り、HTTP 経由での書き込み/復元ツールを非表示にします。それでも、ポートは信頼できるネットワーク内に限定し、TLS と認証を備えたフロントエンドの背後に配置してください。監査ログおよび生成された PST/レポートファイルは、マウントされた audit/ と downloads/ ボリュームに保存されます。SECURITY.md を参照してください。

クイック接続テスト(MCP クライアント不要)

.\.venv\Scripts\Activate.ps1
python -c "import server; print(server.vb365_api_root())"

注意事項

  • .gitignore は .env、仮想環境、運用者向けの audit/、downloads/、*.pst アーティファクトを除外します。認証情報や復元データは絶対にコミットしないでください。
  • VB365 には自己署名証明書が同梱されているため、VB365_VERIFY_SSL のデフォルト値は false です。この設定では、VB365 への接続が中間者攻撃にさらされます。そのため、サーバーの証明書を指定する VB365_CA_BUNDLE(証明書に対する検証が有効になります)か、信頼できる証明書を使用した VB365_VERIFY_SSL=true の設定を推奨します。サーバーは、接続が未検証の場合に起動時に警告します。
  • エンドポイント名は VB365 のバージョンによって多少異なります。厳選されたツールが 404 を返す場合は、vb365_api_root を呼び出し、正確なリソース名を指定して vb365_get を使用してください。

商標

本プロジェクトは独立したものであり、以下のいずれの企業とも提携、推奨、後援関係にありません。製品名は識別の目的でのみ使用しています(記述的使用)。

  • 「Veeam」は Veeam Software の登録商標です。「Beeam」という表記は、意図的に区別して用いている言葉遊びであり、商標ではありません。
  • Microsoft、Microsoft 365、Microsoft Graph、Outlook、Office Deployment Tool は、Microsoft グループ企業の商標です。
  • Backblaze と B2 は、Backblaze, Inc. の商標です。
  • Amazon Web Services、AWS、Amazon S3、S3 Glacier は、Amazon.com, Inc. またはその関連会社の商標です。
  • Wasabi、IBM と IBM Cloud、Azure、Google Cloud は、それぞれの所有者の商標です。

ライセンス

MIT License のもとで公開されています。セキュリティモデルと脆弱性報告については SECURITY.md を、貢献方法については CONTRIBUTING.md を、リリースのビルドと公開方法については PUBLISHING.md を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。