用 Vaultwarden + MCP 让 AI 自己登录网站:密码与 TOTP 全自动

举报
yd_274788088 发表于 2026/10/23 20:31:21 2026/10/23
【摘要】 结论:让 AI 代理自己登录网站,不需要把密码写在提示词里,也不需要人工干预——把凭据交给本地密码库,让 MCP 服务(warden-mcp)在 agent 发起登录时按需解锁、按需取码,是当前最省事且可核实的一条路。我实测用它登录了华为云(密码 + 6 位 TOTP),全程无人工。一、为什么不用官方 Bitwarden MCP官方 @bitwarden/mcp-server 在自建 Vau...

结论:让 AI 代理自己登录网站,不需要把密码写在提示词里,也不需要人工干预——把凭据交给本地密码库,让 MCP 服务(warden-mcp)在 agent 发起登录时按需解锁、按需取码,是当前最省事且可核实的一条路。我实测用它登录了华为云(密码 + 6 位 TOTP),全程无人工。

一、为什么不用官方 Bitwarden MCP

官方 @bitwarden/mcp-server 在自建 Vaultwarden 上有两个硬伤:一是 unlock 依赖原生桌面弹窗输主密码,服务器没有桌面就等于不可用;二是组织管理接口写死了 scope=api.organization,而 Vaultwarden 只接受 api,请求直接 400。

换成 @icoretech/warden-mcp 就绕开了:它全部走 bw CLI,并且自带一份打了补丁的 CLI,绕过了新版 CLI 在解锁时向 /accounts/keys 回填 key id 的 404 报错。

二、关键一步:补丁必须真的打上

warden-mcp 的 postinstall 就是给 bw.js 打 Vaultwarden 兼容补丁的。但 npm 默认拦截 install script,装完看着正常,解锁却依然失败。必须显式允许。

三、变量名有三套,必须映射

环境文件里习惯写 BW_SERVER、BW_CLIENT_ID、BW_CLIENT_SECRET,但 warden-mcp 读的是 BW_HOST、BW_CLIENTID、BW_CLIENTSECRET。不映射的话服务能起来,但连不上库。用一个 wrapper 脚本统一映射,凭据放 600 权限的文件里,不进数据库。

四、实测踩到的三个坑

  1. 搜索参数叫 text 不是 query。传错不报错,而是静默按字母序返回前若干条,看着像搜到了,实际全是无关条目。
  2. TOTP 的 30 秒周期和取码延迟打架。取码链路要两三秒,拿到只剩十来秒的码基本白拿。做法是:先看 timeLeft,剩不到 15 秒就等下一周期;取到码后在同一个动作里完成填码和提交。
  3. 分格验证码不能整串填。六个独立输入框,整串塞进去只会全进第一格;只改 value 又会丢字符。必须逐格聚焦、赋值、并补发键盘事件。

五、安全边界要说清

开了 READONLY=true 之后,所有写操作(新建、修改、删除条目)在服务端被直接拒绝,只能读。密码仍会在填表那一刻进入 agent 的上下文——这一点无法回避,任何声称零暴露的说法都不成立。能接受这个前提,再用它换不必手输密码的便利。

如果连这一点都不接受,只剩一条路:让浏览器扩展自己读密码库,agent 只发指令不接触明文。那是另一个工程。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。