关于 Bitwarden
Bitwarden MCP 服务为 AI Agent 提供独立的 Bitwarden 账户,用于管理登录信息、密码、2FA 代码、安全笔记和通行密钥。它还可执行 WebAuthn 签名,并支持检查密码是否出现在 Have I Been Pwned 泄露列表中。
主要功能
- 01搜索和管理登录信息
- 02生成并提供密码及 2FA 代码
- 03在安全笔记中保存秘密
- 04注册、导入和使用通行密钥
- 05检查密码泄露情况
适用场景
- 01为 Agent 创建网站登录凭据
- 02在登录时获取当前 2FA 代码
- 03保存 API 令牌或密钥文件
- 04用保险库中的通行密钥完成登录
MCP 相关
向 MCP 客户端提供 Bitwarden 保险库的读取、写入和通行密钥工具;每次调用都通过 Bitwarden CLI 执行。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @foreverworks/mcp-bitwardenBITWARDEN_CLIENT_ID_FILEPath of a file holding the account's API key client id.BITWARDEN_CLIENT_SECRET_FILE密钥Path of a file holding the API key's client secret.BITWARDEN_MASTER_PASSWORD_FILE密钥Path of a file holding the master password that unlocks the vault.BITWARDEN_SERVERA self-hosted or EU server, e.g. https://vault.bitwarden.eu. Leave empty for bitwarden.com.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
17收录的工具列表 · 更新于 2 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rp_id | string | 是 | RP ID:通行密钥绑定到的网站域名,例如 example.com 或 login.example.com。 |
| credential_id | string | 否 | 要用于签名的通行密钥,来自先前响应中的候选项或 list_passkeys。 |
| user_verified | boolean | 否 | 此请求是否已验证用户;这会设置 UV 标志。仅当调用方已验证用户时才为 true:例如 Agent 以自身身份登录,或用户已批准此请求。 |
| client_data_hash | string | 是 | 浏览器(或代替程序)为此请求构建的客户端数据 JSON 的 SHA-256,采用 base64url 编码(43 个字符)。 |
| allow_credentials | array | 否 | 请求的 allowCredentials ID;可发现请求时为空。 |
详细介绍
Bitwarden MCP 服务
为你的 AI 助手准备一个专属的 Bitwarden 账户,用于注册和登录。它可以查找、创建和更新登录项,生成密码并仅在输入时提供密码,计算 2FA 验证码,将其他秘密(如 API 令牌、密钥文件)保存在安全备注中,在组织的集合间移动项目,并检查密码是否出现在 Have I Been Pwned 泄露记录中。它也是一款通行密钥验证器:可以注册通行密钥,并使用这些密钥签署 WebAuthn 登录;通行密钥的存储方式与 Bitwarden 自家应用相同,因此两者可以互用。create_login、update_login、create_note、move_item、create_passkey 和 import_passkeys 会写入数据;delete_passkey 会从其登录项中移除一个通行密钥,除此之外没有其他工具会删除数据。没有工具会导出数据或更改设置,也没有工具涉及资金。
你需要为 Agent 单独准备一个 Bitwarden 账户,而不是使用你的个人保管库(任何套餐均可,无需 Premium),并将该账户的个人 API 密钥和主密码分别存入文件。每次调用都会运行 Bitwarden CLI,因此工具需要几秒钟,而非几毫秒。此账户用于存放 Agent 自己的身份凭据:你自己的通行密钥应保存在自己的设备上。
你可以这样提问
- “为 example.com 创建一个登录项,用户名为 [email protected],密码长度为 32 个字符且不含符号。”
- “我们为 example.com 保存了哪些登录项?”
- “Example Shop 登录项当前的 2FA 验证码是什么?”
- “为 Example Shop 登录项生成一个新密码,并保留旧密码,以防网站拒绝更改。”
- “我们的 Example Cloud 登录项中,有没有密码出现在已知泄露事件中?”
- “将 example-key.json 中的密钥保存为安全备注,标题为‘Example Cloud deploy key’。”
- “将 Example Shop 登录项移至 Shared 集合。”
- “保管库中有哪些适用于 example.com 的通行密钥?”
- “导入 example-export.json 中的通行密钥,然后删除该文件。”
安装
使用 Claude Code:
claude mcp add bitwarden -e BITWARDEN_CLIENT_ID_FILE="<path to API key client id file>" -e BITWARDEN_CLIENT_SECRET_FILE="<path to API key client secret file>" -e BITWARDEN_MASTER_PASSWORD_FILE="<path to Master password file>" -- npx -y @foreverworks/mcp-bitwarden
Claude Desktop(Settings、Developer、Edit Config)和大多数其他客户端都以 JSON 格式读取相同的命令:
{
"mcpServers": {
"bitwarden": {
"command": "npx",
"args": ["-y", "@foreverworks/mcp-bitwarden"],
"env": {
"BITWARDEN_CLIENT_ID_FILE": "<path to API key client id file>",
"BITWARDEN_CLIENT_SECRET_FILE": "<path to API key client secret file>",
"BITWARDEN_MASTER_PASSWORD_FILE": "<path to Master password file>"
}
}
}
}
每种方式都会在 Node 22.19 或更高版本上运行已发布的软件包。VS Code 和 Claude Desktop 安装包会在添加服务时询问每项设置;可选项留空即可。Cursor 则从环境变量中读取各项设置(${env:BITWARDEN_CLIENT_ID_FILE} 等),因此请在启动 Cursor 前设置好这些变量。上述命令只设置必需项;其余设置请参阅配置。
从克隆版本安装
git clone https://github.com/foreverworks/mcps.git && cd mcps
npm ci && npm run build
claude mcp add bitwarden -e BITWARDEN_CLIENT_ID_FILE="<path to API key client id file>" -e BITWARDEN_CLIENT_SECRET_FILE="<path to API key client secret file>" -e BITWARDEN_MASTER_PASSWORD_FILE="<path to Master password file>" -- node "$PWD/servers/bitwarden/dist/index.js"
在 JSON 配置中,命令为 node,唯一参数是 servers/bitwarden/dist/index.js 的完整路径。如需通过 HTTP 在多个客户端之间共享同一个运行实例,请参阅 docs/deploying.md。
官方 CLI @bitwarden/cli(固定为 2026.10.0)是该软件包的依赖项:npx 和 npm ci 会将其与服务一同安装;服务使用其自带的 Node 运行 CLI,绝不会使用 PATH 中的 bw。
配置
| 变量 | 必填 | 含义 |
|---|---|---|
BITWARDEN_CLIENT_ID_FILE | 是 | 存放 API 密钥 client_id 的文件(本地运行时使用 BITWARDEN_CLIENT_ID)。 |
BITWARDEN_CLIENT_SECRET_FILE | 是 | 存放 API 密钥 client_secret 的文件(本地运行时使用 BITWARDEN_CLIENT_SECRET)。 |
BITWARDEN_MASTER_PASSWORD_FILE | 是 | 存放主密码的文件,用于解锁密码库(本地运行时使用 BITWARDEN_MASTER_PASSWORD)。 |
BITWARDEN_SERVER | 否 | 自托管或欧盟服务器,例如 https://vault.bitwarden.eu。未设置时使用 bitwarden.com。 |
BITWARDEN_DEFAULT_COLLECTION | 否 | 调用未指定集合时,新登录信息或笔记要存入的集合,可使用名称或 ID。未设置,或指定的集合不属于该账号时,内容会存入账号自己的密码库,不属于任何集合。 |
BITWARDEN_STATE_DIR | 否 | CLI 的数据文件夹(包含其 data.json),创建时权限为 0700;默认位置见 docs/configuration.md。 |
NODE_EXTRA_CA_CERTS | 否 | 对于证书由你自己的证书颁发机构签署的自托管服务器,填写该机构的证书(PEM)。服务器会将证书提供给 CLI,而 CLI 只会通过 HTTPS 与服务器通信。 |
仅当对应的 _FILE 变量未设置时,才会读取
BITWARDEN_CLIENT_ID、BITWARDEN_CLIENT_SECRET 和
BITWARDEN_MASTER_PASSWORD。
优先使用文件:同一用户的所有进程都能看到变量。指定的文件若不存在或为空,会报 config 错误,绝不会回退到变量。
即使没有这些密钥,服务器仍会启动并列出其工具;每次调用都会返回 config 错误,指出缺少的内容。
password_file、笔记字段的 file 和导出 import_passkeys 参数
从 MCP_FILE_ROOTS 读取;该变量以及其他服务器共用的变量见
docs/configuration.md。
获取 API 密钥和主密码
- 为 Agent 创建一个 Bitwarden 账号,套餐不限,并设置强主密码。妥善保存一份,以便有人能找回。
- 在 Web 密码库中,打开“设置”“安全”“密钥”,然后选择“查看 API 密钥”。
- 将
client_id(格式类似user.<uuid>)写入第一个文件,将client_secret写入第二个文件,并将主密码写入第三个文件;每个文件都只能由服务器用户读取。 - 可选:创建一个免费组织,并为 Agent 创建一个用于存放登录信息的集合;将
BITWARDEN_DEFAULT_COLLECTION设为该集合,并邀请你自己的账号。这样你就能看到 Agent 保存的内容,也可以将登录信息放入第二个集合,供 Agent 使用。
首次运行
- 请助手运行 Bitwarden 的
health检查。它会返回账号邮箱、服务器、上次同步时间、密码库中的登录信息数量,以及可用于存放内容的组织和集合。启动后的首次调用会登录、解锁并同步,因此耗时最长。若 API 密钥或主密码遭拒,会在此处显示为auth。 - 要在某处注册时,助手会先调用
create_login,在网站看到密码前将其存入密码库,然后调用get_password输入密码。 - 通行密钥需要由一个程序代替浏览器处理:负责处理网站 WebAuthn 请求的程序(浏览器扩展、自动化驱动)会构建客户端数据,检查网站 RP ID 是否与页面来源相符,并携带客户端数据的哈希调用
create_passkey或assert_passkey。返回结果就是浏览器交给页面的内容。
工具
读取不会更改密码库;写入会添加条目或更改条目。
只有 delete_passkey 会移除内容:它只删除一个通行密钥,登录信息仍会保留。
登录项和笔记
| 工具 | 访问权限 | 功能 |
|---|---|---|
health | 读取 | 是否已解锁、以谁的身份登录、上次同步时间、组织和集合。 |
find_logins | 读取 | 按关键词搜索登录项和安全笔记,或按网站 URL 搜索登录项;返回 ID 和用户名,不返回机密信息。 |
get_login | 读取 | 获取一个登录项或安全笔记,不包含密码或身份验证器密钥:包含笔记,隐藏的自定义字段仅返回字段名称。 |
get_password | 读取 | 获取用于在网站上输入的密码;使用 previous 时,返回被替换的密码。 |
get_field | 读取 | 获取登录项或安全笔记中的一个自定义字段值,包括隐藏字段;例如许可证密钥或令牌,可用于输入或管道传递。 |
totp | 读取 | 获取当前 2FA 验证码及其剩余有效秒数;在此处计算。 |
check_exposed | 读取 | 检查登录项的密码是否出现在 Have I Been Pwned 的泄露列表中,以及出现次数;只有其 SHA-1 的前五个字符会离开服务端。 |
sync | 读取 | 立即拉取保险库内容。每次读取前都会先同步,除非上次同步距今不超过 30 秒。 |
create_login | 写入 | 创建一个新登录项;除非提供密码、输入密码或从文件读取密码,否则会在此处生成密码(默认含符号,共 24 个字符)。 |
update_login | 写入 | 修改指定内容:rotate_password 会生成新密码,append_notes 会将内容追加到笔记中,replace_totp 允许替换为不同的密钥。 |
create_note | 写入 | 创建一条用于存放非登录类机密信息的新安全笔记;每项内容都存放在隐藏字段中,可输入内容或从文件完整读取;结果会返回长度和文件的 SHA-256,不会返回任何内容值。 |
move_item | 写入 | 按名称或 ID,将登录项或安全笔记放入其所属组织中的一个集合;结果会返回移动前后的集合。 |
通行密钥
| 工具 | 访问权限 | 功能 |
|---|---|---|
list_passkeys | 读取 | 列出所有通行密钥及其网站、账户、凭据 ID、计数器、登录项和集合,并说明是否由其他人共享给此账户;不返回密钥。 |
assert_passkey | 读取 | 使用保险库中的通行密钥为网站签署 WebAuthn 登录请求:生成身份验证器数据,以及对该数据和客户端数据哈希的 ES256 签名。若有多个候选项,会以 several 作答,供调用方选择。 |
create_passkey | 写入 | 注册新的通行密钥:在此处生成 ES256 密钥对,将私钥存入登录项,并以 none 格式的证明及公钥作为响应。 |
import_passkeys | 写入 | 从 Bitwarden JSON 导出文件(未加密)或单个已导出的项目中导入包含通行密钥的登录项,并跳过保险库中已有的通行密钥。 |
delete_passkey | 写入 | 从登录项中移除一个通行密钥;登录项及其密码会保留。 |
get_password、get_field 和 totp 会返回机密信息,但仍属于 read:
此账户保存的是专为 Agent 创建、供其无需询问即可使用的登录项
(src/mcp/policy.ts)。返回的内容仅用于在目标位置输入或通过管道传递,
绝不可写入文件、提交内容、消息或回复。请将自己的密码保存在此账户无法
访问的保险库中,并通过共享集合借给它使用。
assert_passkey 在相同条件下也属于 read:它会提供签名,就像
get_password 会提供密码一样,并且只会写入一个已大于 0 的计数器。没有任何
工具会返回通行密钥的私钥。
故障排除
config。 缺少密钥,或者密钥文件缺失或为空。请按照配置中的说明设置
BITWARDEN_CLIENT_ID_FILE、BITWARDEN_CLIENT_SECRET_FILE 和
BITWARDEN_MASTER_PASSWORD_FILE。
auth:「bw login --apikey: ...」或「bw unlock: ...」。 Bitwarden 拒绝了
API 密钥或主密码。如果其中任何一项在 Web 保管库中发生了更改,请更新服务读取相应信息的文件。
not_found。 没有具有该 ID 的条目。find_logins 会列出已有条目及其他工具所需的 ID。
input。 无法将参数转换为请求,因此没有发送任何内容;错误消息会说明原因。最常见的情况包括:登录项已有不同的验证器密钥(传入 replace_totp: true,旧密钥会保留)、Steam 密钥(不是标准 TOTP)、账户不具备的集合(health 会列出可用集合)、编辑安全备注(备注永远不会被编辑),或 move_item 会将条目移出其所属组织或账户自己的保管库(错误消息会说明应采取的操作)。
cli。 CLI 已运行,但返回了错误:网络故障、编辑遭拒,或调用超过 90 秒。请重试一次;如果问题仍然存在,请运行 health 并查看服务日志。如果 create_note 失败,但没有说明备注是否已保存,请先用 find_logins 查找,再重试。
unavailable。 无法读取 Have I Been Pwned,保管库未发生更改。请一分钟后重试;限制可访问主机的部署必须允许访问
api.pwnedpasswords.com。
no_credential。 保管库中没有可用于响应此次登录的通行密钥:没有对应 RP ID 的密钥、没有网站允许列表中指定的密钥,或者请求未指定通行密钥且没有可发现的密钥。list_passkeys 会显示保管库中已有的密钥。
several。 有多个通行密钥可用于响应未指定密钥的请求。错误中的 candidates 会列出这些密钥,但不包含密钥本身;请将 credential_id 设置为目标账户对应的 ID 后再次调用。
excluded。 网站的排除列表中包含保管库持有的通行密钥:此保管库中已存在该账户的密钥。请改用该密钥登录。
unsupported。 网站不接受 ES256 密钥(这是此保管库唯一能生成的密钥类型,与 Bitwarden 的应用相同),或者已存储的通行密钥无法签名。
cli:「Insecure URL not allowed. All URLs must use HTTPS.」 CLI 只能通过 HTTPS 与服务通信。请通过 HTTPS 提供自托管的 Bitwarden 或 Vaultwarden;如果证书由你自己的证书颁发机构签署,请设置 NODE_EXTRA_CA_CERTS。
似乎未采用 BITWARDEN_SERVER。 该变量仅在 CLI 首次登录时生效,而已登录其他服务器的状态文件夹会继续使用原服务器。请从空的 BITWARDEN_STATE_DIR 开始切换。
工作原理
CLI。 调用会逐个运行官方 CLI,因为每次运行都会读取和写入同一个 data.json。进程只保留 bw unlock 返回的会话密钥;重启后,下次调用会重新登录并解锁。没有可用密钥时到达的调用会共用一次解锁:每次 bw unlock 都会用新的会话密钥保存保管库的密钥,之前的密钥随即无法再打开保管库,因此同时进行两次解锁会导致其中一个调用持有过期密钥。密钥通过环境变量或标准输入传给 CLI,绝不会通过参数传递,因为所有本地用户都能读取参数。CLI 作为子进程运行,不受 MCP_EGRESS_ALLOW 限制(docs/configuration.md)。
双重身份验证代码在 src/domain/totp.ts 中计算,因为 Bitwarden 将 bw get totp 保留给 Premium 用户。新密钥会经过严格检查(base32,至少 16 个字符),并在你确认网站上的双重身份验证之前存储;返回结果会携带根据已存储密钥计算出的当前代码:如果网站接受该代码,就说明存储的密钥完全正确。只有使用 replace_totp 才会替换登录项中已有的不同密钥,并将旧密钥保存在隐藏字段(totp replaced <date>)中,这样误操作也不会导致账户被锁定。
密码的输入。 生成的密码不会经过模型:
create_login 会存储密码且不返回密码,get_password 会将密码交给你,以便输入到网站中。现有密码可作为 password 传入,也可作为 password_file 传入(通过 MCP_FILE_ROOTS 内的路径,或通过脚本提供的 content_base64 和对应的 sha256),这样就不必重新输入长密钥;结果会给出 passwordLength,而不会返回密码。生成的密码长度为 12 至 128 个字符。
其他机密。 create_note 会将每项机密存入安全笔记的自定义字段中,除非调用中另有说明,否则这些字段会被隐藏。读取自文件的字段会完整、原样读取(保留每一行、末尾换行符和字节顺序标记),并会读取保险库中存储的内容,与发送的内容进行比较;删除源文件前,请将结果中的 SHA-256 和大小与源文件进行比较。Bitwarden 拒绝超过 5,000 个字符的字段,以及加密后超过 10,000 个字符的笔记文本;这分别相当于 3,695 和 7,439 字节的纯 UTF-8 文本(src/domain/note.ts)。服务账号的 JSON 密钥或 4,096 位 PEM 密钥都能放入;更长的值或二进制文件会在发送前被拒绝(请先编码,使用 base64 -w0)。笔记的纯文本 notes 应说明机密是什么以及用途,因为任何人都能通过 get_login 查看这些内容。
编辑不会丢失任何内容。 轮换后的密码会立即存储,因此即使会话在网站更新前结束,密码也不会丢失;被替换的密码仍保留在 Bitwarden 的密码历史中:如果网站拒绝新密码,可通过 get_password 并设置 previous: true 来读取旧密码。append_notes 会在笔记中追加一行(用于恢复代码、答案等),而 notes 会替换笔记内容。
在集合之间移动。 move_item 会通过 bw edit item-collections 将项目的集合替换为指定集合。如果项目已属于且仅属于该集合,调用会原样返回,且不会发送任何内容,因此可以安全地重复调用。移动后,服务端会同步并重新读取项目,返回的内容以 Bitwarden 中保存的内容为准,而非 CLI 打印的内容。项目只能移入其所属组织内的集合:参见限制。
通行密钥。 保险库会像身份验证器一样响应 WebAuthn 请求:它会获取 RP ID、客户端数据的哈希,以及网站指定的凭据 ID,但不会获取页面本身;随后返回身份验证器数据和签名,或证明对象。代替浏览器运行的程序会构建客户端数据,根据页面来源检查 RP ID,并组装页面收到的凭据。存储格式和响应均遵循 Bitwarden 自身身份验证器的实现,因此在此创建的通行密钥可用于登录 Bitwarden 的应用,而 Bitwarden 创建的通行密钥也可在此使用。Bitwarden 说明了用户可见的内容:一个登录项只能保存一个通行密钥,通行密钥也会包含在其 JSON 导出文件中。相关字段位于其源代码 bitwarden/clients 的 cli-v2026.10.0 标签(提交 b449ac1d255784380d75ef026343198891286be7)中:
libs/common/src/platform/services/fido2/fido2-authenticator.service.ts、
credential-id-utils.ts、guid-utils.ts 和
libs/common/src/models/export/fido2-credential.export.ts。简而言之:
- 通行密钥保存在登录项的
fido2Credentials中,每个登录项一个,keyType为public-key,keyAlgorithm为ECDSA,keyCurve为P-256,keyValue则是以 base64url 编码的 PKCS#8 私钥。CLI 的 JSON 会将counter和discoverable写为文本("0"、"true");如果写成 JSON 布尔值,则会存储为 false。 - 凭据 ID 是随机 GUID,网站通过其 16 个字节识别它;来自其他提供商的 ID 会以
b64.加上其 base64url 编码的形式存储。 - AAGUID 使用 Bitwarden 的值
d548826e-79b4-db40-a3d8-11116f7e8349,因为通行密钥保存在 Bitwarden 保管库中。标志表示用户在场、符合备份条件且已备份;只有在调用方如此指定时,才表示用户已验证。 - 计数器从 0 开始,且 0 永远不会递增,因此使用此处或 Bitwarden 应用创建的通行密钥签名时,不会向保管库写入任何内容。使用大于 0 的计数器导入的通行密钥会递增,并在签名前从最新同步结果中存储。
- 新通行密钥会存入
item_id指定的登录项;否则,若该网站存在唯一一个用户名相同且没有通行密钥的登录项,则存入该项,这样同一身份的密码、双重身份验证密钥和通行密钥就能保存在一个条目中;否则会新建一个登录项。
bw edit item 会用提供的内容替换登录项,因此,如果编辑时遗漏 fido2Credentials,通行密钥就会丢失:这里的每次编辑都会从读取到的条目开始;scripts/integration.ts 证明 create_login、update_login 和通行密钥工具通过固定版本的 CLI 操作时,都会保留通行密钥。它会在本地 Vaultwarden 上使用临时账户运行构建后的服务,并通过独立验证器(@simplewebauthn/server)检查每次注册和签名;脚本头部说明了运行方法。
密码泄露检查。 check_exposed 使用 Have I Been Pwned 的免密钥范围 API:会发送密码 SHA-1 哈希的前五个十六进制字符,并在此处搜索响应(该范围内的所有哈希后缀及其计数,填充了干扰项)。密码、完整哈希和后缀都不会离开服务器。这是服务器自行发出的唯一请求。
npx tsx scripts/smoke.ts 会使用真实账户对构建后的服务进行测试;除非传入 --write,否则只读。传入该参数会创建名为 "mcp smoke test" 的登录项和名为 "mcp smoke test note" 的安全备注。此处不会删除它们,因此请之后在 Web 保管库中将其移除。
限制
- 不支持导出、设置、附件、Send,也不支持删除(删除单个通行密钥除外):只提供 Agent 注册和登录所需的功能,不提供其他可能导致数据丢失的操作。
- 通行密钥仅支持 ES256,与 Bitwarden 应用一致,并使用格式为 none 的证明。不会响应任何扩展(PRF、大型 Blob):程序会代替浏览器,根据
discoverable自行响应credProps。 - 导入功能可读取 Bitwarden 的 JSON 导出文件(未加密)或单个已导出的条目。目前尚不支持读取 FIDO Alliance 的 Credential Exchange Format。
- 条目只能在同一组织内移动。 Bitwarden 使用组织密钥加密组织条目,因此将条目移出账户自己的保管库会将其交给组织,而 Bitwarden 不支持在组织之间移动条目。
move_item会拒绝这两种操作,并说明如何改在 Web 保管库中操作。 - 仅支持登录项和安全备注;不会读取卡片和身份信息。安全备注可以创建和读取,但不能编辑:更改后的密钥需要保存为新备注。
- 不支持 Steam 验证器代码,因为它不是标准 TOTP。
- 耗时以秒计,而非毫秒。 每次调用都要等待 CLI 完成:启动后的首次调用会登录、解锁并同步;需要多次运行 CLI 的工具会耗时数秒。
Bitwarden 的其他服务
检索于 2026-10-15。Bitwarden 发布了一个服务和一套独立协议;其中有一个社区服务格外突出:
@bitwarden/mcp-server,Bitwarden 自有服务:仅支持 stdio,并且根据其自身警告,绝不可托管。它会从环境变量中的会话密钥解锁保险库,或通过拒绝在无头模式下运行的原生密码对话框解锁。它管理整个保险库和组织,包括删除项目、发送内容、附件和设备审批,并将机密交给模型:get会以文本形式返回项目或其密码,generate会返回新密码,而create_item会将密码作为参数接收。- Bitwarden 的 Agent Access,一种处于早期预览阶段的协议和 CLI,而非 MCP 服务:它每次从配对的保险库中获取一个凭据,并可将其注入进程的环境,使模型无法看到该凭据,但无法创建或更新登录信息。
- npm 上的
@icoretech/warden-mcp,最活跃的社区服务:支持 stdio 或 HTTP,通过环境变量(或每个 HTTP 请求的标头)传入 API 密钥和主密码,自身没有身份验证。除非调用请求reveal,否则它会对机密进行脱敏;在读取时也始终可以脱敏,比本服务更严格;但生成的密码必须先显示出来才能存储,而且其 2FA 代码来自 CLI,在 bitwarden.com 上使用需要 Premium。
本服务提供了 Agent 注册和登录所需的精简功能。create_login 和 rotate_password 会生成并存储密码,但不会返回密码,因此密码在传入时不会经过模型;只有 get_password、get_field 和 totp 会返回机密,用于输入。它的 2FA 代码可在免费账户上使用,而且会验证、存储新的身份验证器密钥,并通过当前代码证明其有效。它也是一个 WebAuthn 身份验证器,其私钥绝不会离开本服务。它不会导出任何内容,唯一的删除操作针对单个通行密钥,并且它作为独立服务通过 HTTP 运行,从文件中保存的机密解锁自身。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。