MCP 服务器¶
BombVault 内置了 Model Context Protocol(MCP)服务器,Claude Code 和 Claude Desktop 等 AI 助手通过这个协议访问外部工具。借助它,助手可以读取你的备份状况,在你允许时还能启动备份或取消它自己启动的备份。在你创建密钥或开启通过 OAuth 登录之前,它处于关闭状态:在此之前,端点 /mcp 对所有请求都返回 404。
助手能做什么,不能做什么¶
| 工具 | 作用 | 类型 |
|---|---|---|
get_health |
版本、实例名称、是否有备份正在运行,以及这个密钥被允许做什么 | 读取 |
get_status |
各个域的保护状态:最近一次成功备份、预期间隔、校验和异地检查、接下来的计划运行、等待应用空闲的备份,容器域还附带最近一次启动测试 | 读取 |
get_coverage |
BombVault 保护了什么、没有保护什么,并给出各自的原因 | 读取 |
list_items |
每个受保护的容器、虚拟机和文件夹集、闪存盘以及应用配置,附带计划、备份时会停止什么、最近一次备份及其耗时;数据库容器还会列出最近一次转储;ZFS 数据集也会列出,并附上次检查的结果;每个项目附带最近一次恢复检查,容器还附带最近一次启动测试或无法测试的原因;在上次备份后以其他设置重新创建的容器会列出更改内容 | 读取 |
list_runs |
运行历史,最新的在前,可按域、项目、状态、类型和时间筛选;因某一样东西而变慢的备份会指出它 | 读取 |
list_restore_points |
一个项目在其主仓库中的还原点;对于容器,还包括它的数据库转储;ZFS 数据集每次备份对应一个还原点,其中包含它下面每个数据集的快照 | 读取 |
get_activity |
此刻正在运行的内容,带阶段和百分比 | 读取 |
get_storage_stats |
某个域主仓库的大小历史及每周增长,以及其每个仓库所在磁盘或远程位置的已用、可用和总空间 | 读取 |
get_size_breakdown |
容器、虚拟机或文件夹集的最新备份中哪些文件夹和文件占用空间,以及上次备份新增了多少 | 读取 |
list_anomalies |
BombVault 在备份中注意到的异常,可按状态、严重程度和域筛选,并附有未处理项的摘要 | 读取 |
get_anomaly |
其中一条,附确认时留下的备注 | 读取 |
start_backup |
立即备份一个项目 | 启动 |
start_domain_backup |
备份一个域中所有受保护的项目 | 启动 |
start_backup_everything |
运行一轮全部备份 | 启动 |
cancel_backup |
取消由这个密钥启动、正在运行的备份 | 取消 |
以下操作只能在网页界面中进行:任何形式的还原(包括下载、保存或导入数据库转储)、删除备份、prune、unlock、检查和演练、异地复制、设置、凭据和 MCP 密钥,以及取消由计划、网页界面或其他密钥启动的备份。确认异常或将其标记为预期同样如此,这些在 异常 页面中完成。原因是:工具的回答中包含来自你服务器的名称和错误信息,其中任何一条都可能夹带专门用来操纵助手的文字。受这类文字蒙骗的助手,最坏也只能在下面的限制范围内启动一次备份,或取消它自己启动的备份。
如果某个项目的主仓库在别处(S3、REST、SFTP、rclone),list_restore_points 会去连接它,调用可能需要一些时间。异地副本无法通过 MCP 列出。 异常检查关注哪些内容,见 功能;ZFS 项目如何为每个数据集保留一个快照,见 ZFS 数据集。
启动的备份会做什么¶
助手启动的备份与网页界面启动的备份完全相同。正在运行的容器会在其备份完成前停止,设置为随它一起停止的容器也会停止。采用 "graceful" 方式的虚拟机会被关机,然后重新启动。ZFS 数据集在拍摄快照期间会停止为其设置的容器。文件夹集、闪存盘和配置会继续运行。之后 BombVault 会执行保留策略,并可能复制到异地仓库。list_items 会告诉助手某个项目会停止什么、最近一次备份用了多久,而工具说明要求它在启动任何操作之前先告诉你。
由于备份会停止服务并把旧的还原点挤出去,通过 MCP 的启动是有限制的:
- 每个密钥每小时最多启动 12 次备份。
- 同一项目、同一个域或全部备份的两次 MCP 启动之间间隔 15 分钟。
- 同一项目在 24 小时内最多 4 次 MCP 启动。
- 保留保护。 当某个域只保留固定数量的还原点(只有"保留最近 N 个",没有按日、按周或按月的规则,无论本地还是异地目标)时,每次新备份都会把最旧的那个挤出去。这时,如果某个项目最近 N-1 次成功备份全部是通过 MCP 启动的,BombVault 会拒绝对它的 MCP 启动。因此,保留下来的集合中始终至少有一个由计划或由你创建的还原点。设置为"保留最近 1 个"时,助手完全无法备份该项目。下一次计划备份会重新腾出空间。只有年度规则时,按"保留最近 1 个"处理,因为它只为当年保留一个还原点。
启动一个域或全部备份时,被某项限制挡下的项目会被跳过,并在回答中列出名称。这些限制都不影响网页界面和计划。每小时的额度保存在内存中,所以重启 BombVault 会将其清零。
通过 API 和从 Home Assistant 的启动与通过 MCP 的启动一起计入每个项目的相同限制,也计入保留保护。
开启¶
- 打开 设置、集成、MCP 服务器,点击你所用客户端的按钮。不在列表中的客户端通过 其他客户端 连接。
- 在 密钥 下保留 新密钥 和建议的名称(即客户端名称),或者输入一个能说明密钥用在哪里的名称,例如“笔记本上的 Claude Code”。每个客户端一个密钥,就能只吊销其中一个而不影响其他。现有密钥 会把你之前创建的密钥交给这个客户端。
- 对需要能启动备份的密钥,打开 允许启动备份;不打开时,密钥只能读取。之后可以在密钥的卡片上修改,改动从助手的下一个请求起生效,无需重新连接。
- 点击 创建密钥。密钥只显示一次。BombVault 只保留它的指纹,无法再次显示,所以请现在复制。如果在客户端使用密钥之前关闭对话框,卡片会一直显示它,直到你确认已经复制。
没有登录密码时,网页界面本身对你网络中的所有人开放,能打开它的人也能创建密钥。卡片上会提示这一点。如果你用一个看起来像公网的名字打开 BombVault(例如反向代理后面的 bombvault.example.com),并且没有设置登录密码,那么从该地址无法创建或更换密钥,这样互联网上的任何网页都无法让你的浏览器去创建密钥。请设置登录密码,或者通过 IP 地址或 tower、tower.local 这样的本地名称打开 BombVault。
你的密钥及其日志¶
每个密钥在卡片上都有自己的磁贴。磁贴显示密钥名称、它能启动备份还是只读、密钥的最后四个字符、创建或最近一次替换的时间、客户端最近一次使用它的时间,以及它今天的调用次数。在磁贴上可以重命名密钥、修改权限、替换或吊销它。吊销的密钥会移到已吊销密钥列表,一旦历史中不再有运行引用它,就可以在那里永久删除。
在名称旁边,卡片会显示创建该密钥时所对应客户端的标志。通过 其他客户端 创建的密钥,或在卡片列出客户端之前创建的密钥,会改为显示一把钥匙。
磁贴上的 日志 会打开该密钥做过的事。最上面是它启动的备份,每条都带有状态和指向仪表盘活动日志中该次运行的链接。下面是它的调用,最新的在前,附带工具和调用结果。被拒绝的调用会说明原因:密钥只能读取、保留保护拦下了备份、已有另一个备份在运行、该项目的备份几分钟前刚从网页界面之外启动过,或者密钥发送的请求过多。取消操作会链接到它涉及的那次运行。
BombVault 为每个密钥保留最长 30 天的记录:最新的 500 次成功的启动和取消,另外还有最新的 200 次其他调用(读取、拒绝和错误)。因此,助手反复查询正在运行的备份,或反复重试被拒绝的调用时,不会把该备份的启动挤出日志。每次调用只保存工具、结果以及取消操作指明的运行。它从不保存助手发送的内容,也不保存密钥或其指纹。诊断包只统计条数,设置导出不包含这些记录。
连接客户端¶
卡片上每个客户端都有一个按钮,位于 在这台电脑上 或 在云端 下面。按钮会打开一个分三步的对话框:密钥;该客户端的配置,包括你打开卡片时所用的地址、复制按钮、配置所在的位置,以及在使用 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。先把密钥单独存进一个文本文件,写成一行:
然后在卡片的命令里填入这个文件的路径,在终端中运行一次。使用你的电脑信任的证书时,它是这样的:
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 只保存密钥文件的路径,所以密钥既不会出现在命令和 shell 历史记录中,也不会出现在进程列表中。把这个文件放在只有你能读取的位置,并且不要放在任何会提交的文件夹里。@latest 让 npx 获取最新的 mcp-remote;否则会改用全局安装的旧版本,而旧版本不支持 --header-file。
不要把 ${BOMBVAULT_MCP_KEY} 写进 Claude Code 的 mcp-remote 参数里。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}"
}
}
}
}
在 Claude Code 启动的环境中设置 BOMBVAULT_MCP_KEY,例如写在 ~/.claude/settings.json 的 "env" 下,或写在 shell 的配置文件里,用文本编辑器写,而不是在命令行中输入。这里使用引用是安全的,因为 Claude Code 不会另外启动一个会拿到密钥的进程。BombVault 自己的证书不能这样用:即使设置了 NODE_EXTRA_CA_CERTS,Claude Code 自己建立的连接也会拒绝它。绝不要提交写有密钥的 .mcp.json。
Claude Desktop¶
Claude Desktop 通过 mcp-remote 连接 BombVault,这需要该电脑上装有 Node.js。先按 Claude Code 一节的说明,把密钥单独保存到一个文本文件中,只占一行。在 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 自己的证书而设。如果证书已被你的电脑信任,请去掉它。- 只有纯
http://地址才会加上--allow-http。 - 在 Windows 上,路径请用正斜杠书写,例如
C:/Users/sam/bombvault-key.txt,因为单个反斜杠不是有效的 JSON。密钥文件的路径不要包含空格:Windows 上的 Claude Desktop 会把带空格的路径拆成两段传给npx。 - 配置里只写了密钥文件,所以密钥既不会出现在配置中,也不会出现在进程列表中。把这个文件放在只有你能读取的位置。
云端客户端¶
ChatGPT、claude.ai 上的 Claude、Grok 和 Le Chat 从各自厂商的服务器调用 BombVault,因此 BombVault 必须能从互联网访问,并使用公开受信任的证书,例如放在反向代理后面;Le Chat 拒绝自签名证书。代理上的登录可以保护网页界面,但 /mcp 必须不经过它直达 BombVault:这些服务无法登录代理,BombVault 会自行检查它们的密钥或令牌。Grok 和 Le Chat 发送固定密钥,它们的按钮会像其他客户端一样完成设置。ChatGPT,以及大多数组织中 claude.ai 上的 Claude,只能通过下文介绍的 OAuth 登录连接。
通过 OAuth 登录¶
对于无法使用密钥的客户端,BombVault 充当它自己的 OAuth 授权服务器。客户端自行注册,把你带到 BombVault 的页面,你在那里用登录密码(如果设置了第二因素,也要用它)登录并允许它。随后客户端获得一个只对这个 BombVault 的 MCP 端点有效的令牌,并自行续期。
- 在设置、安全中设置登录密码。没有密码时,BombVault 完全不提供登录,因为没有人可以给出同意。
- 让 BombVault 能通过 https 从互联网访问,并使用浏览器信任的证书,通常借助反向代理。客户端从自己的服务器调用
/mcp、/oauth/和/.well-known/,所以带有自身登录的代理必须让这三个路径通到 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)的授权码流程,你的回答与你的会话绑定,因此其他网站无法替你发送。访问令牌有效期为一小时。刷新令牌每次使用都会被替换,如果某个已用过的刷新令牌再次出现,BombVault 会吊销授权,因为别人持有它的副本。如果客户端因为没收到响应而在 30 秒内重发上一次刷新,则会改为得到新的令牌。BombVault 不会从互联网获取客户端元数据,因此客户端通过动态客户端注册进行注册。
其他客户端¶
任何支持 Streamable HTTP 的客户端都可以:
- URL:网页界面的地址加上
/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。 - 每个请求一条 JSON-RPC 消息;批量请求(batch)会被拒绝。
- 协议版本: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 在局域网地址上会拒绝它。解决办法按适合大多数 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 的代理之后或你完全信任的网络中使用。它会把整个网页界面切换为纯 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;
}
在代理之后,每个请求都带着代理的地址。于是一个配置错误的客户端发送 5 次错误密钥,就会让该代理后面的所有 MCP 客户端被锁定一分钟。在 TRUSTED_PROXY 中填写代理(见 配置),即可按客户端分别计数。
安全模型¶
- 没有有效密钥且通过 OAuth 登录处于关闭状态时,
/mcp返回404。 - 只有设置了登录密码时才提供通过 OAuth 登录。令牌、授权码和客户端密钥只以指纹形式保存,令牌只对签发它的地址有效。
- 同一地址每小时最多注册 10 次客户端,BombVault 最多保留 100 个无人登录过的已注册客户端,每个保留一天。错误的授权码和刷新令牌与错误的密钥计入同一个锁定。
- 恢复配置备份或
APP_KEY变化时,授权与密钥的处理方式相同:恢复之后每个客户端都必须重新登录。 - 没有任何地址被豁免。来自
localhost、Unraid 主机、反向代理或tailscale serve的请求都和其他请求一样需要密钥,即使网页界面没有登录密码也是如此。 - 密钥只以指纹形式保存,只显示一次,可以重命名、更换和撤销。最多 10 个有效密钥,每个都有自己的 允许启动备份 开关。
- 每次创建、更换、修改权限和撤销,只要通知没有关闭,都会通过你的通知渠道发送通知,并附上请求来源地址。
- 每个地址每分钟 5 次错误密钥后返回
429。每个密钥每分钟 120 个请求、每小时启动 12 次备份,另外还有上文所述的等待时间和保留保护。 - 来自其他来源(origin)的浏览器页面的请求会被拒绝。
- 在没有设置登录密码时,无法从看起来像公网的主机名创建密钥。
- 助手启动的每一次备份,以及由此引发的 prune 和异地运行,都会在活动日志、错误面板和备份通知中标注"通过 MCP"以及密钥名称。
- 每次工具调用都会连同密钥的 ID 和最后四个字符(从不包含名称)写入容器日志,并在
/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 批量请求。每个请求只发一条消息。 |
429 |
该地址的错误密钥过多,或一个密钥每分钟的请求超过 120 个。等一分钟,并检查助手是否陷入了循环。 |
| 含有 "certificate"、"self-signed" 或 "unable to verify" 的错误 | 客户端不信任 BombVault 的证书。见 TLS 与证书。 |
busy |
另一个备份或维护任务正在占用该域。等它结束后再试。 |
cooldown |
这个项目、这个域或全部备份在 15 分钟内已从网页界面之外启动过。 |
retention_guard |
再做一次 MCP 备份,"保留最近 N 个"的窗口里就只剩来自 MCP 的还原点了;或者该项目在过去 24 小时内已经通过 MCP 备份了 4 次,失败和取消的也算在内。第一种情况下,下一次计划备份会腾出空间;第二种情况下,项目在其中最早那次备份的 24 小时后才能再次启动。在网页界面中随时都可以启动它。 |
rate_limited |
该密钥本小时的 12 次启动已用完。 |
启动时出现 not_permitted |
该密钥为只读。在卡片中打开 允许启动备份;无需重新连接。如果出现在取消时,表示该运行不是由这个密钥启动的。 |
domain_off |
这种备份类型在设置中已关闭。 |
not_found |
BombVault 没有保护这个项目。请先在网页界面中添加;MCP 从不创建配置。 |
| 客户端找不到授权服务器 | 通过 OAuth 登录处于关闭状态、没有设置登录密码,或者代理没有让 /.well-known/ 通到 BombVault。 |
| 同意页面提示返回地址未注册 | 客户端发送了它没有注册过的返回地址。在客户端中移除该连接器后重新添加。 |
已登录的客户端收到 401 |
它的授权已被吊销、因 30 天未使用而过期,或者公开地址已更改。客户端会重新登录。 |
不要在容器上设置环境变量 MCPGODEBUG。它会改变 MCP 库的行为,而错误的值会让 BombVault 在启动时、甚至还没写下一行日志时就停止。