MCP サーバー¶
BombVault には Model Context Protocol (MCP) のサーバーが組み込まれています。MCP は、Claude Code や Claude Desktop などの AI アシスタントが外部のツールにアクセスするためのプロトコルです。これを通じてアシスタントはバックアップの状況を読み取り、許可すればバックアップを開始したり、自分が開始したバックアップを取り消したりできます。キーを作成するか OAuth によるサインイン をオンにするまではオフで、それまでエンドポイント /mcp はすべてに 404 を返します。
アシスタントにできること、できないこと¶
| ツール | 内容 | 種類 |
|---|---|---|
get_health |
バージョン、インスタンス名、バックアップが実行中かどうか、このキーに許可されていること | 読み取り |
get_status |
ドメインごとの保護状態: 最後に成功したバックアップ、想定間隔、検証とオフサイトのチェック、次の予定実行、アプリのアイドルを待っているバックアップ。コンテナには最新の起動テストも付きます | 読み取り |
get_coverage |
BombVault が保護しているものとしていないもの、それぞれの理由付き | 読み取り |
list_items |
保護されているすべてのコンテナ、VM、フォルダーセット、フラッシュドライブ、アプリの設定。スケジュール、バックアップで止まるもの、最後のバックアップとその所要時間付き。データベースコンテナは最後のダンプも示します。ZFS データセットも最後のチェック結果付きで示します。各項目には最後の復元チェック、コンテナには最後の起動テストまたはテストできない理由も付きます。前回のバックアップ後に別の設定で作り直されたコンテナは変更点を示します | 読み取り |
list_runs |
実行履歴 (新しい順)。ドメイン、項目、状態、種類、時刻で絞り込めます。ひとつの要因で遅くなったバックアップはその要因を示します | 読み取り |
list_restore_points |
1 つの項目のプライマリリポジトリにある復元ポイント。コンテナならデータベースのダンプも。ZFS データセットではバックアップごとに復元ポイントが 1 つあり、その下のすべてのデータセットのスナップショットを含みます | 読み取り |
get_activity |
今実行中のもの。フェーズと進捗率付き | 読み取り |
get_storage_stats |
あるドメインのプライマリリポジトリのサイズ履歴と週ごとの増加、および各リポジトリのディスクまたはリモートの使用・空き・合計容量 | 読み取り |
get_size_breakdown |
コンテナ、VM、フォルダーセットの最新バックアップで容量を使っているフォルダーとファイル、そのうち直近のバックアップで追加された量 | 読み取り |
list_anomalies |
BombVault がバックアップに見つけた異常。状態、重大度、ドメインで絞り込め、未解決のものの概要付き | 読み取り |
get_anomaly |
そのうちの 1 件。確認したときに残したメモ付き | 読み取り |
start_backup |
1 つの項目を今すぐバックアップします | 開始 |
start_domain_backup |
1 つのドメインの保護対象項目をすべてバックアップします | 開始 |
start_backup_everything |
全体バックアップの一巡を実行します | 開始 |
cancel_backup |
このキーが開始した実行中のバックアップをキャンセルします | キャンセル |
次の操作は Web インターフェースに残ります: あらゆる種類の復元 (データベースダンプのダウンロード、保存、インポートを含む)、バックアップの削除、prune、unlock、チェックと訓練、オフサイトへのレプリケーション、設定、認証情報と MCP キー、そしてスケジュール、Web インターフェース、または別のキーが開始したバックアップのキャンセル。異常の確認や、想定内としてのマークも同様で、異常 ページで行います。理由は、ツールの応答にはサーバー由来の名前やエラーメッセージが含まれ、そのどれにもアシスタントを操るために書かれた文章が紛れ込み得るからです。そうした文章に引っかかったアシスタントにできるのは、最悪でも下記の制限内でバックアップを開始するか、自分で開始したバックアップをキャンセルすることだけです。
項目のプライマリリポジトリが別の場所 (S3、REST、SFTP、rclone) にある場合、list_restore_points はそこに接続するため、呼び出しに時間がかかることがあります。オフサイトのコピーは MCP では一覧できません。 異常のチェックが何を見ているかは 機能 で、ZFS 項目がデータセットごとにスナップショットを 1 つ持つ仕組みは ZFS データセット で説明しています。
開始したバックアップが行うこと¶
アシスタントが開始するバックアップは、Web インターフェースが開始するものと同じです。実行中のコンテナはバックアップが終わるまで停止され、一緒に停止するよう設定されたコンテナも止まります。"graceful" 方式の VM はシャットダウンされ、再び起動されます。ZFS データセットは、スナップショットを取る間、そのデータセット用に設定されたコンテナを停止します。フォルダーセット、フラッシュドライブ、設定は動き続けます。その後、BombVault は保持ポリシーを適用し、オフサイトリポジトリへコピーすることがあります。list_items は、項目が何を止めるか、最後のバックアップにどれだけかかったかをアシスタントに伝え、ツールの説明は何かを開始する前にそれをあなたに伝えるよう求めています。
バックアップはサービスを止め、古い復元ポイントを押し出すため、MCP からの開始には制限があります:
- キーごとに 1 時間あたり 12 回の開始。
- 同じ項目、同じドメイン、または全体バックアップの MCP 開始の間隔は 15 分。
- 同じ項目の MCP 開始は 24 時間で最大 4 回。
- 保持ガード。 ドメインが決まった数の復元ポイントを保持している場合 (日次、週次、月次のルールがなく「最新 N 個を保持」だけの場合。ローカルでもオフサイトの保存先でも同じ)、新しいバックアップのたびに最も古いものが押し出されます。そのとき BombVault は、最新 N-1 個の成功したバックアップがすべて MCP 経由で開始された項目について、MCP からの開始を拒否します。そのため、保持される集合には、スケジュールかあなたが作った復元ポイントが常に少なくとも 1 つ残ります。「最新 1 個を保持」ではアシスタントはその項目をまったくバックアップできません。次の予定バックアップがまた空きを作ります。年ごとのルールだけの場合は「最新 1 個を保持」と同じ扱いです。今年の復元ポイントを 1 つしか残さないためです。
ドメインや全体バックアップの開始では、制限に引っかかった項目は除外され、応答の中で名前が示されます。これらの制限はどれも Web インターフェースとスケジュールには影響しません。1 時間ごとの枠はメモリ上にあるため、BombVault を再起動するとリセットされます。
API 経由と Home Assistant からの開始は、項目ごとの制限と保持の保護において、MCP 経由の開始と合わせて数えられます。
オンにする¶
- 設定、連携、MCP サーバー を開き、使っているクライアントのボタンをクリックします。一覧にないクライアントは その他のクライアント から接続します。
- キー では 新しいキー と、提案された名前(クライアント名)をそのまま使うか、キーの用途がわかる名前を入力します。たとえば「ノート PC の Claude Code」です。クライアントごとに 1 つのキーにしておけば、ほかに触れずに 1 つだけ取り消せます。既存のキー を選ぶと、以前に作ったキーをクライアントに割り当てます。
- バックアップを開始できるようにしたいキーでは バックアップの開始を許可 をオンにします。オフのままだとキーは読み取りだけです。あとからキーのタイルで変更でき、変更は再接続なしでアシスタントの次のリクエストから有効になります。
- キーを作成 をクリックします。キーは一度だけ表示されます。BombVault は指紋だけを保存し、キーを二度と表示できないので、今すぐコピーしてください。クライアントがキーを使う前にダイアログを閉じた場合、コピーしたと確認するまでカードにキーが表示され続けます。
ログインパスワードがない場合、Web インターフェース自体がネットワーク上の全員に開かれていて、開ける人なら誰でもキーを作成できます。カードにもそう表示されます。公開されているように見える名前 (たとえばリバースプロキシの背後の bombvault.example.com) で BombVault を開いていて、ログインパスワードが設定されていない場合、そのアドレスからはキーを作成も交換もできません。インターネット上の Web ページがあなたのブラウザーにキーを作らせることがないようにするためです。ログインパスワードを設定するか、IP アドレスや tower、tower.local のようなローカル名で BombVault を開いてください。
キーとそのログ¶
カードでは各キーが専用のタイルに並びます。タイルには、キーの名前、バックアップを開始できるか読み取り専用か、キーの末尾 4 文字、作成日時または最後に置き換えた日時、クライアントが最後に使った日時、今日の呼び出し回数が表示されます。タイルからキーの名前変更、権限の変更、置き換え、失効ができます。失効したキーは失効済みキーの一覧に移り、履歴のどの実行からも参照されなくなれば、そこで完全に削除できます。
タイルの名前の横には、そのキーを作成したクライアントのマークが表示されます。その他のクライアント から作ったキーや、カードがクライアントを一覧表示する前に作ったキーには、代わりに鍵のアイコンが表示されます。
タイルの ログ を開くと、そのキーがしたことが表示されます。最初に、そのキーが開始したバックアップが状態とともに並び、ダッシュボードのアクティビティログにあるその実行へのリンクが付きます。その下に呼び出しが新しい順に並び、ツールと結果が表示されます。拒否された呼び出しには理由が付きます。キーが読み取り専用、保持ガードがバックアップを止めた、別のバックアップが実行中だった、項目のバックアップが数分前にウェブ画面の外から開始された、リクエストが多すぎた、のいずれかです。キャンセルには対象の実行へのリンクが付きます。
BombVault は各キーの記録を最長 30 日間保持します。成功した開始とキャンセルは最新 500 件、それとは別にその他の呼び出し(読み取り、拒否、エラー)は最新 200 件です。実行中のバックアップを繰り返し問い合わせたり、拒否された呼び出しを何度も再試行したりするアシスタントがいても、そのバックアップの開始が記録から押し出されることはありません。呼び出しごとに保存するのは、ツール、結果、キャンセルが指定した実行だけです。アシスタントが送った内容、キー、その指紋は保存しません。診断バンドルには件数だけが入り、設定のエクスポートには含まれません。
クライアントを接続する¶
カードには このコンピューター上 と クラウド の下に、クライアントごとのボタンがあります。ボタンを押すと 3 つの手順のダイアログが開きます。キー、そのクライアント用の設定(カードを開いたアドレス、コピーボタン、設定の置き場所、BombVault 独自の証明書の場合はクライアントがそれを信頼するために必要なこと)、そしてクライアントの最初の呼び出しの待機です。ダイアログはキーの最終使用を監視し、その呼び出しが届くと緑になります。
ダイアログはキーをどのコマンドラインにも載せません。クライアントが環境変数(BOMBVAULT_MCP_KEY)、マスクされた入力、または自身のファイルからキーを読める場合、設定はキーを参照するだけです。そうした手段がないクライアントでは、キーは設定ファイルや設定画面に置かれ、ダイアログにもそう書かれます。クライアントのドキュメントが未知の証明書の扱いを説明していない場合、ダイアログはその手順を「クライアントが BombVault の証明書を拒否したら」行うこととして書きます。
| クライアント | セットアップ | キーの取得元 |
|---|---|---|
| AnythingLLM | 設定ファイル | 設定ファイル |
| Antigravity | 設定ファイル | 環境変数 |
| Claude Code | コマンド | キーファイル |
| Claude Desktop | 設定ファイル | キーファイル |
| Cline | 設定ファイル | 設定ファイル |
| Codex CLI | 設定ファイル | 環境変数 |
| Continue | 設定ファイル | ~/.continue/.env |
| Copilot CLI | 設定ファイル | 設定ファイル |
| Cursor | 設定ファイル | 環境変数 |
| Gemini CLI | 設定ファイル | 環境変数 |
| GitHub Copilot (VS Code) | 設定ファイル | マスクされた入力 |
| Goose | 設定ファイル | 環境変数 |
| Jan | アプリ内のフォーム | アプリの設定 |
| JetBrains (AI Assistant, Junie) | 設定ファイル | 設定ファイル |
| Kimi Code | 設定ファイル | 設定ファイル |
| LM Studio | 設定ファイル | 設定ファイル |
| Mistral Vibe | 設定ファイル | 環境変数 |
| Msty | アプリ内のフォーム | アプリの設定 |
| n8n | アプリ内のフォーム | n8n の認証情報 |
| Open WebUI | アプリ内のフォーム | アプリの設定 |
| opencode | 設定ファイル | 環境変数 |
| Perplexity (Mac) | アプリ内のフォーム | キーファイル |
| Qwen Code | 設定ファイル | 環境変数 |
| Roo Code | 設定ファイル | 環境変数 |
| Visual Studio | 設定ファイル | 設定ファイル |
| Warp | 設定ファイル | 設定ファイル |
| Windsurf | 設定ファイル | 環境変数 |
| Zed | 設定ファイル | 設定ファイル |
| Grok | フォーム、クラウド | 提供元のサーバー |
| Le Chat | フォーム、クラウド | 提供元のサーバー |
| ChatGPT | OAuth によるサインイン、クラウド | アクセストークン、下記 参照 |
| Claude (claude.ai) | OAuth によるサインイン、クラウド | アクセストークン、下記 参照 |
以下のセクションでは Claude Code と Claude Desktop の設定を詳しく説明し、ほかのクライアントに必要なものを挙げます。
Claude Code¶
Claude Code は mcp-remote を通して BombVault に接続し、そのコンピューターには Node.js が必要です。まず、キーだけを入れたテキストファイルを作り、次の 1 行で保存します:
次に、カードのコマンドにそのファイルのパスを入れて、ターミナルで一度実行します。お使いのコンピューターが信頼する証明書の背後では、次のようになります:
claude mcp add bombvault --scope user -- npx -y mcp-remote@latest https://bombvault.example.com/mcp --header-file "<path of the file with your key>"
BombVault 自身の証明書を使う場合 (TLS と証明書 を参照)、コマンドはさらにダウンロードした証明書を Node.js に指定します:
claude mcp add bombvault --scope user -e "NODE_EXTRA_CA_CERTS=<path of the downloaded bombvault-cert.pem>" -- npx -y mcp-remote@latest https://192.168.1.10:3443/mcp --header-file "<path of the file with your key>"
接続は Claude Code の中で /mcp を使って確認できます。--scope user を付けると、BombVault をすべてのプロジェクトで使えます。Claude Code が保存するのはキーファイルのパスだけなので、キーはコマンドにもシェルの履歴にも、プロセス一覧にも現れません。ファイルは自分だけが読める場所で、コミットするフォルダーの外に置いてください。@latest を付けると npx が最新の mcp-remote を取得します。付けないとグローバルにインストールされた古いものが使われ、それは --header-file に対応していません。
Claude Code 用の mcp-remote の引数に ${BOMBVAULT_MCP_KEY} を書かないでください。Claude Code は mcp-remote を起動する前に、こうした参照を自分の環境の値で置き換えます。そのためキーがそのプロセスのコマンドラインに載り、コンピューター上のほかのプログラムやユーザーから読めてしまいます。
Node.js がなくても、コンピューターが信頼する証明書の背後に限っては、Claude Code は自分で接続できます。プロジェクトのフォルダーに .mcp.json を置きます:
{
"mcpServers": {
"bombvault": {
"type": "http",
"url": "https://bombvault.example.com/mcp",
"headers": {
"Authorization": "Bearer ${BOMBVAULT_MCP_KEY}"
}
}
}
}
BOMBVAULT_MCP_KEY は Claude Code が起動する環境で設定してください。たとえば ~/.claude/settings.json の "env" やシェルのプロファイルに、プロンプトで入力するのではなくテキストエディターで書きます。この場合は参照を使っても安全です。キーを受け取る 2 つ目のプロセスを Claude Code が起動しないからです。BombVault 自身の証明書ではこの方法は使えません。NODE_EXTRA_CA_CERTS を設定していても、Claude Code 自身の接続がその証明書を拒否します。キーを書き込んだ .mcp.json は決してコミットしないでください。
Claude Desktop¶
Claude Desktop は mcp-remote を通して BombVault に接続し、そのコンピューターには Node.js が必要です。まず、Claude Code の説明と同じように、キーを専用のテキストファイルに 1 行で保存します。Claude Desktop の Settings, Developer, Edit Config から設定ファイルを開きます。場所は Windows では %APPDATA%\Claude\claude_desktop_config.json、macOS では ~/Library/Application Support/Claude/claude_desktop_config.json です。カードのエントリを "mcpServers" の中、既存のサーバーの隣に追加し、Claude Desktop を再起動します:
{
"mcpServers": {
"bombvault": {
"command": "npx",
"args": ["-y", "mcp-remote@latest", "https://192.168.1.10:3443/mcp", "--header-file", "<path of the file with your key>"],
"env": {
"NODE_EXTRA_CA_CERTS": "<path of the downloaded bombvault-cert.pem>"
}
}
}
}
NODE_EXTRA_CA_CERTSは BombVault 自身の証明書のためだけにあります。コンピューターがすでに信頼している証明書の背後では削除してください。--allow-httpはプレーンなhttp://アドレスのときだけ付きます。- Windows ではパスを
C:/Users/sam/bombvault-key.txtのようにスラッシュで書いてください。バックスラッシュ 1 つは JSON として無効です。キーファイルのパスには空白を入れないでください。Windows の Claude Desktop は、空白を含むパスを 2 つに分けてnpxに渡します。 - 設定に書かれるのはキーファイルだけなので、キーは設定にもプロセス一覧にも現れません。ファイルは自分だけが読める場所に置いてください。
クラウドのクライアント¶
ChatGPT、claude.ai の Claude、Grok、Le Chat は提供元のサーバーから BombVault を呼び出します。そのため BombVault は、たとえばリバースプロキシの背後で、公的に信頼された証明書を使ってインターネットから到達できる必要があります。Le Chat は自己署名証明書を拒否します。プロキシのログインで Web インターフェースを守ることはできますが、/mcp はそれを通さずに BombVault まで届く必要があります。これらのサービスはプロキシにログインできず、キーやトークンは BombVault 自身が確認します。Grok と Le Chat は固定のキーを送り、ボタンからほかのクライアントと同じように設定できます。ChatGPT と、ほとんどの組織では claude.ai の Claude も、次に説明する OAuth によるサインインでしか接続できません。
OAuth によるサインイン¶
キーを受け取れないクライアントに対しては、BombVault 自身が OAuth 認可サーバーになります。クライアントは自分で登録し、あなたを BombVault のページに送ります。そこでログインパスワード (設定していれば第 2 要素も) でサインインし、許可します。その後クライアントは、この BombVault の MCP エンドポイントだけで使えるトークンを受け取り、自分で更新します。
- 設定、セキュリティ でログインパスワードを設定します。パスワードがないと、同意を求める相手がいないため、BombVault はサインインを一切提供しません。
- ブラウザーが信頼する証明書を使い、https でインターネットから BombVault に到達できるようにします。通常はリバースプロキシを使います。クライアントは自社のサーバーから
/mcp、/oauth/、/.well-known/を呼び出すため、独自のログインを持つプロキシはこの 3 つのパスを BombVault まで通す必要があります。/oauth/authorizeの同意ページはあなた自身のブラウザーで開くので、プロキシのログインの背後にあってもかまいません。プロキシをTRUSTED_PROXYにも指定してください (設定 を参照)。BombVault はクライアントの登録をアドレスごとに制限しており、指定がないとすべてのクライアントがプロキシから来たように見えます。 - MCP カードで OAuth によるサインイン をオンにし、公開アドレス にパスのない https アドレスを入力します。例:
https://backup.example.com。すべてのトークンはこのアドレスに結び付くため、変更すると各クライアントはサインインし直す必要があります。 - ChatGPT か Claude のボタンをクリックします。ダイアログに コネクター URL (公開アドレスの後ろに
/mcpを付けたもの) と、そのクライアントでの入力先が表示されます。ChatGPT では 設定、アプリとコネクター、詳細設定 で開発者モードをオンにし、作成 を選び、コネクター URL を MCP サーバー URL として貼り付け、認証に OAuth を選びます。claude.ai では 設定、コネクター、カスタムコネクターを追加 を開き、コネクター URL を貼り付け、OAuth のクライアント ID とシークレットは空のままにして 接続 を選びます。 - クライアントが同意ページを開きます。誰が求めているか、回答後にどこへ戻るか、そして最初はオフの バックアップの開始を許可 スイッチが表示されます。許可 か 拒否 を選びます。
サインインした各クライアントには、キーの横にタイルが表示されます。タイルにはマーク、ログ、失効、バックアップの開始を許可 があり、制限はキーと同じです。失効はすぐに有効になります。同じクライアントがサインインし直すと新しい許可が古い許可に置き換わり、30 日間だれも使わなかった許可は期限切れになります。10 個のキーとは別に、最大 10 クライアントが同時にサインインできます。
同意ページが受け付けるのは、登録済みのクライアントが、登録した戻り先アドレスのいずれかを正確に指定したリクエストだけです。戻り先は https か、あなたのコンピューター上のクライアントなら任意のポートのループバックアドレスです。受け付けるのは PKCE (S256) 付きの認可コードフローだけで、回答はあなたのセッションに結び付くため、ほかの Web サイトがあなたの代わりに送ることはできません。アクセストークンの有効期間は 1 時間です。リフレッシュトークンは使うたびに置き換わり、使用済みのものが再び現れると、ほかの誰かがコピーを持っているとみなして BombVault が許可を失効させます。応答が届かなかったために直前のリフレッシュを 30 秒以内にやり直したクライアントには、代わりに新しいトークンが渡されます。BombVault はクライアントのメタデータをインターネットから取得しないため、クライアントは動的クライアント登録で登録します。
その他のクライアント¶
Streamable HTTP を話すクライアントならどれでも使えます:
- URL: Web インターフェースのアドレスに
/mcpを付けたもの。例:https://192.168.1.10:3443/mcp。 - キーは
Authorization: Bearer <key>かX-API-Key: <key>に入れます。両方を送る場合は同じキーでなければなりません。 POSTにContent-Type: application/jsonとAccept: application/json, text/event-streamを付けます。- 1 リクエストにつき JSON-RPC メッセージは 1 つです。バッチは拒否されます。
- プロトコルバージョンは 2026-07-28、2025-11-25、2025-06-18、2025-03-26 です。
TLS と証明書¶
BombVault は自分で発行した証明書で HTTPS を提供しており、最初その証明書に載っているのは localhost、127.0.0.1、::1 だけです。Claude Code と mcp-remote は LAN のアドレスではこれを拒否します。回避の方法を、多くの Unraid 環境に合う順に挙げます:
- MCP カードでアドレスを追加する。 証明書に載っていないアドレスで HTTPS からカードを開くと、カードがそれを知らせ、このアドレスを証明書に追加 を示します。BombVault はそのアドレスを加えて証明書を発行し直します (ブラウザーは最初のときと同じように、もう一度警告します)。続いて 証明書をダウンロード をクリックします。スニペットは
NODE_EXTRA_CA_CERTSをダウンロードしたファイルに設定するので、クライアントはまさにその証明書を信頼します。つまり、以前にダウンロードしたファイルで設定したクライアントは、証明書が発行し直された時点で、このコンピューターでも他のどのコンピューターでも、新しいファイルを受け取るまで接続できなくなります。 - 信頼された証明書を持つリバースプロキシ (Nginx Proxy Manager、SWAG、Caddy、Traefik)。クライアントはプロキシの証明書を見るので、ほかに何も必要なく、カードも BombVault 自身の証明書について警告しません。
- Tailscale。 コンテナの前に置いた
tailscale serveや Unraid の Tailscale 連携で、信頼された証明書付きのts.net名が得られます。 HTTP_ONLY=true。TLS を終端するプロキシの背後か、完全に信頼できるネットワークでのみ使ってください。Web インターフェース全体がプレーンな HTTP に切り替わり、コンテナ設定の変更が必要で、キーは暗号化されずに送られます。
NODE_TLS_REJECT_UNAUTHORIZED=0 は決して設定しないでください。その Node.js プロセスが通信するすべての相手について証明書の検証が無効になります。
リバースプロキシは Authorization (または X-API-Key) ヘッダーをそのまま渡す必要があり (特に指示しない限りプロキシはそうします)、/mcp をバッファリングしたり書き換えたりしてはいけません。BombVault の証明書も検証する Nginx または Nginx Proxy Manager 用の location ブロックの例です:
location /mcp {
proxy_pass https://192.168.1.10:3443;
proxy_ssl_verify on;
proxy_ssl_trusted_certificate /data/bombvault-cert.pem;
proxy_ssl_name localhost;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Host $host;
}
プロキシの背後では、どのリクエストもプロキシのアドレスを持ちます。そのため、設定を誤ったクライアント 1 つから誤ったキーが 5 回来ると、そのプロキシの背後にあるすべての MCP クライアントが 1 分間締め出されます。クライアントごとに数えるには、プロキシを TRUSTED_PROXY に指定してください (設定 を参照)。
セキュリティモデル¶
- 有効なキーがなく OAuth によるサインインがオフのとき、
/mcpは404を返します。 - OAuth によるサインインは、ログインパスワードが設定されている間だけ提供されます。トークン、コード、クライアントシークレットはフィンガープリントとしてのみ保存され、トークンは発行されたアドレスでしか使えません。
- 1 つのアドレスからのクライアント登録は 1 時間に最大 10 回で、BombVault はだれもサインインしていない登録済みクライアントを最大 100 件、それぞれ 1 日だけ保持します。誤ったコードやリフレッシュトークンは、誤ったキーと同じロックアウトに数えられます。
- 設定のバックアップを復元したときや
APP_KEYが変わったとき、許可はキーと同じように扱われます。復元後は各クライアントがサインインし直す必要があります。 - 例外扱いのアドレスはありません。
localhost、Unraid ホスト、リバースプロキシ、tailscale serveからのリクエストも、Web インターフェースにログインパスワードがないときでも、ほかと同じくキーが必要です。 - キーは指紋としてだけ保存され、一度だけ表示され、名前の変更、交換、取り消しができます。有効なキーは最大 10 個で、それぞれに バックアップの開始を許可 のスイッチがあります。
- 作成、交換、権限の変更、取り消しのたびに、通知がオフでない限り、送信元のアドレス付きで通知チャネルに通知が送られます。
- アドレスごとに 1 分間 5 回の誤ったキーで
429。キーごとに 1 分あたり 120 リクエスト、1 時間あたり 12 回の開始。これに上記の待ち時間と保持ガードが加わります。 - 別のオリジンのブラウザーページからのリクエストは拒否されます。
- ログインパスワードが設定されていない間は、公開されているように見えるホスト名からキーを作成できません。
- アシスタントが開始したすべてのバックアップと、それに伴う prune とオフサイトの実行には、アクティビティログ、エラーパネル、バックアップ通知でキー名とともに「MCP 経由」と表示されます。
- ツールの呼び出しはすべて、キーの ID と末尾 4 文字 (名前は決して含まない) とともにコンテナのログに書かれ、
/metricsで数えられます (bombvault_mcp_requests_total、bombvault_mcp_tool_calls_total、bombvault_mcp_active_keys)。 - 設定のバックアップを復元すると、すべてのキーが取り消されます。復元したデータベースには、保存後に取り消したキーが含まれているかもしれないからです。その後に新しいキーを作成してください。
APP_KEYが変わると (再インストールや別のコンテナへの復元) キーは機能しなくなります。カードがそれを検出してキーに印を付け、キーを交換 で再び有効なシークレットが得られます。- キーはパスワードと同じように扱ってください。環境変数、入力画面、キーファイルのいずれからもキーを読めないクライアントは、設定や設定画面にキーを平文で保存し、そのダイアログにもそう書かれます。信頼度の低いコンピューターでは、読み取り専用のキーを使ってください。
マシンの外に出るもの¶
アシスタントが読んだものはすべて、その背後にある AI プロバイダーに送られます: 項目名、スケジュール、エラーメッセージを含む実行履歴、復元ポイントの ID と日時、データベースエンジンの名前とダンプのサイズ、実行中のアクティビティ、ストレージの数値、カバレッジと状態。BombVault は、何かが外に出る前に、ホストのパス、リポジトリの場所、ホスト名、認証情報、フックのコマンド、キーを取り除きます。
トラブルシューティング¶
| 表示されるもの | 意味 |
|---|---|
404 |
有効なキーがなく OAuth によるサインインがオフ、または /api/mcp のようにパスが違います。エンドポイントは /mcp です。 |
401 |
キーがない、打ち間違い、取り消し済み、または交換済みです。プロキシが Authorization ヘッダーを落としているのかもしれません (X-API-Key を試してください)。カードがキーを無効と表示している場合は APP_KEY が変わっています。キーを交換してください。 |
403 |
別のオリジンのブラウザーページからのリクエストです。デスクトップかコマンドラインのクライアントを使ってください。 |
GET で 405 |
正常です。エンドポイントは POST しか受け付けません。 |
400 "Accept must contain both 'application/json' and 'text/event-stream'" |
クライアントが Streamable HTTP には古すぎます。更新してください。 |
400 "batch requests are not accepted" |
クライアントが JSON-RPC のバッチを送っています。1 リクエストにメッセージを 1 つにしてください。 |
429 |
このアドレスからの誤ったキーが多すぎるか、1 つのキーで 1 分に 120 を超えるリクエストがありました。1 分待ち、アシスタントがループにはまっていないか確認してください。 |
| "certificate"、"self-signed"、"unable to verify" を含むエラー | クライアントが BombVault の証明書を信頼していません。TLS と証明書 を参照してください。 |
busy |
別のバックアップかメンテナンス作業がそのドメインを使用中です。終わってからもう一度試してください。 |
cooldown |
この項目、このドメイン、または全体バックアップは 15 分以内にウェブ画面の外から開始されています。 |
retention_guard |
MCP のバックアップをもう 1 回行うと「最新 N 個を保持」の範囲に MCP 由来の復元ポイントしか残らなくなるか、その項目が直近 24 時間ですでに MCP 経由のバックアップを 4 回受けています (失敗や中止も数えます)。前者の場合は次の予定バックアップで空きができ、後者の場合はそのうち最も古いバックアップから 24 時間後に再び開始できます。Web インターフェースからはいつでも開始できます。 |
rate_limited |
このキーはこの 1 時間の 12 回の開始を使い切りました。 |
開始時の not_permitted |
キーは読み取り専用です。カードで バックアップの開始を許可 をオンにしてください。再接続は不要です。キャンセル時の場合は、その実行をこのキーが開始していないことを意味します。 |
domain_off |
その種類のバックアップは設定でオフになっています。 |
not_found |
BombVault はその項目を保護していません。まず Web インターフェースで追加してください。MCP が設定を作ることはありません。 |
| クライアントが認可サーバーを見つけられない | OAuth によるサインインがオフ、ログインパスワードが未設定、またはプロキシが /.well-known/ を BombVault まで通していません。 |
| 同意ページに、戻り先アドレスが登録されていないと表示される | クライアントが登録していない戻り先アドレスを送りました。クライアントでコネクターを削除し、追加し直してください。 |
サインイン済みのクライアントが 401 を受け取る |
許可が失効した、30 日間使われず期限切れになった、または公開アドレスが変わりました。クライアントはサインインし直します。 |
コンテナに環境変数 MCPGODEBUG を設定しないでください。MCP ライブラリの動作を変え、不正な値があると BombVault はログを 1 行も書かないうちに起動時に停止します。