Token导航 LogoToken导航TokenDH.com
Cerberus Keyrouter logo
浏览器工具未说明官方级别未说明来源级核验

Cerberus Keyrouter

MCP Server

Cerberus KeyRouter是一款MCP服务器,通过本地Vaultwarden存储密码并使用占位符替换技术,确保AI代理在登录网站时密码不进入LLM上下文,提供安全的浏览器自动化登录解决方案。

工具数

2

提示词数

0

GitHub Stars

5

资源数

0
本地存储TypeScript浏览器自动化

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

DemoJacob

提供方

DemoJacob

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

Cerberus密钥路由器

AI代理的安全登录路由器——你的LLM永远不会看到你的密码。

Cerberus KeyRouter是一个MCP(模型上下文协议)服务器,使AI代理能够安全地登录网站。密码存储在Vaultwarden(自托管Bitwarden)中,代理仅使用 {{placeholder}} 令牌——真正的凭据通过Chrome DevTools协议(CDP)在本地注入,从不进入LLM上下文。

问题

当AI代理自动化浏览器时,它们通常需要在上下文窗口中提供登录凭据。这意味着您的密码是:

  • 发送给云LLM提供商(OpenAI、Anthropic等)
  • 存储在对话日志中
  • 可能通过快速注射攻击暴露

Cerberus KeyRouter通过将凭据保存在本地保险库中并在浏览器级别注入它们来解决这个问题——LLM只能看到 {{email}}{{password}} 占位符。

建筑

┌─ Your Machine ─────────────────────────────────┐
│                                                  │
│  AI Agent (OpenClaw, etc.)                       │
│    │                                             │
│    │ MCP call: secure_login("GitHub",            │
│    │   steps: [                                  │
│    │     {fill, "#email", "{{email}}"},           │
│    │     {fill, "#password", "{{password}}"},     │
│    │     {click, "#submit"}                      │
│    │   ])                                        │
│    │  + Authorization: Bearer      │
│    │                                             │
│    ▼                                             │
│  Login Router (localhost:8899)                   │
│    ├─ Route by bearer token → account            │
│    ├─ Fetch credentials from account's vault     │
│    ├─ Replace {{placeholders}} with real values  │
│    ├─ Execute via Chrome CDP                     │
│    ├─ Clear credentials from memory              │
│    └─ Return { status: "ok" } (no passwords)     │
│                                                  │
│  Admin Panel (localhost:8899/admin)              │
│    └─ Manage accounts, settings, bearer tokens   │
│                                                  │
│  Vaultwarden (Docker, localhost:8443)            │
│    └─ E2E encrypted password storage             │
│                                                  │
│  Chrome (CDP on localhost:18800)                 │
│    └─ Receives fill/click/type commands          │
│                                                  │
└──────────────────────────────────────────────────┘
  • LLM永远看不到明文密码
  • 凭据仅在登录路由器内存中短暂存在
  • 所有通信仅限于本地主机
  • 多个Vaultwarder账户由独立的保险库支持

特性

  • 法学硕士零知识 --密码永远不会进入AI上下文
  • Vaultwarder集成 --自托管、E2E加密密码存储
  • 多账户支持 --管理多个Vaultwarden帐户,每个帐户都有自己的不记名令牌
  • 管理面板 --web用户界面位于 /admin 用于帐户管理,具有基于会话的身份验证和密码保护
  • API密钥自动检索 -只需提供电子邮件+主密码,API密钥将自动提取
  • MCP协议 --可与任何兼容MCP的AI代理配合使用
  • 占位符图案{{email}}, {{password}}, {{totp}}
  • 填充和键入操作fill 对于标准形式, type (逐个键)用于React/SPA网站
  • 智能标签匹配 --通过URL和CSS选择器检测找到正确的浏览器选项卡
  • 双层保护 --标准模式(自动解锁)或高级模式(手动解锁+电报批准)
  • 电报集成 --解锁事件、带有确认码的批准请求和登录执行结果的实时通知
  • 移动友好审批页面/approve 用于在移动中解锁保管库和批准登录请求的页面
  • 加强安保 --速率限制、URL验证、审计日志记录、承载令牌身份验证
  • 审计日志 --web用户界面位于 /audit 查看所有登录尝试(不记录密码)

快速开始

先决条件

  • Docker&Docker编写
  • 启用远程调试的Chrome/Chromium(--remote-debugging-port=18800)
  • MCP兼容的AI代理(例如。, 开爪)

1.克隆和配置

git clone https://github.com/DemoJacob/cerberus-keyrouter.git
cd cerberus-keyrouter
cp .env.example .env

编辑 .env --只需要一个变量:

VW_ADMIN_TOKEN=your-secret-token-here

此令牌用于初始管理员登录和密码重置的回退。

2.启动服务

docker compose up --build -d

这将开始:

  • 保管员https://localhost:8443 --密码保管库
  • 登录路由器http://localhost:8899 --MCP服务器+管理面板

验证: curl http://localhost:8899/health 应返回 {"status":"ok"}

3.创建一个Vaultwarder帐户

打开 https://localhost:8443 在浏览器中(接受自签名证书)。

  1. 点击 创建账户
  2. 设置您的电子邮件和主密码
  3. 登录并为您的网站添加登录项(名称、用户名、密码、URI)

4.设置管理面板

打开 http://localhost:8899/admin:

  1. 首次登录 --输入您的 VW_ADMIN_TOKEN.env
  2. 设置管理员密码 --一个对话框将提示您创建个人密码(最少8个字符)。在此之后, VW_ADMIN_TOKEN 不能再用于管理员登录
  3. 未来的登录将使用您的新密码
忘记密码? 点击登录页面上的“忘记密码?”链接,输入您的 VW_ADMIN_TOKEN 重置。

5.添加您的Vaultwarder帐户

在管理面板中:

  1. (可选)更新 保管员URL 如果使用自定义域
  2. 点击 +添加帐户
  3. 输入您的保管员 电子邮件主密码
  4. 系统将自动:

- 连接到Vaultwarden并获取您的API密钥 - 启动一个专用 bw serve 过程 - 生成唯一 持有者令牌 用于MCP呼叫

  1. 复制承载令牌(单击令牌单元格或使用 主控程序 复制即用型MCP配置的按钮)

6.连接您的AI代理

添加到MCP配置中:

{
  "mcpServers": {
    "cerberus": {
      "url": "http://localhost:8899/mcp",
      "headers": {
        "Authorization": "Bearer "
      }
    }
  }
}

7.测试

# Check health
curl http://localhost:8899/health

# List available logins (no passwords shown)
curl http://localhost:8899/mcp \
  -H "Authorization: Bearer " \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

管理面板

访问地址: http://localhost:8899/admin.

身份验证:

  • 首次登录使用 VW_ADMIN_TOKEN,然后设置个人密码(PBKDF2-SHA256哈希)
  • 会话持续8小时
  • 密码可以随时从设置中更改
  • 忘记密码?重置为 VW_ADMIN_TOKEN 在登录页面上

特征:

  • 设置 --配置默认的Vaultwarden URL、电报通知
  • 账户 --添加、测试、重新启动、禁用或删除Vaultwarden帐户
  • 持有者代币 --每个帐户都有一个唯一的令牌;单击以复制
  • MCP配置 --一键复制即用型MCP JSON配置
  • 保护模式 --标准(自动解锁)或高级(手动解锁+电报批准)
  • 解锁/锁定 --直接从帐户列表中解锁或锁定高级模式帐户
  • bw服务状态 --查看正在运行的帐户

其他页面:

  • /approve --用于解锁高级模式帐户和批准登录请求的移动友好页面
  • /audit --所有登录尝试的可搜索审计日志

保护模式

每个Vaultwarder帐户都可以配置两个保护级别之一:

标准模式(默认)

  • 保险库是 自动解锁 服务器启动时
  • 登录请求立即执行
  • 最适合低风险客户或开发用途

高级模式

  • 保险库保持 锁定 直到通过手动解锁 /approve 页面或管理面板
  • 每个 secure_login 呼叫需要 实时审批 带有4位确认码
  • 批准必须在以下时间内完成 50秒 或者请求被自动拒绝
  • 最适合敏感账户(银行、金融服务等)

电报通知

配置Telegram(设置中的机器人令牌+聊天ID)后,高级模式帐户将收到:

  1. 解锁通知 --当保险库成功解锁时
  2. 申请批复 --当代理人来电时 secure_login,包括保管库项目名称和4位确认码
  3. 执行结果 --批准后登录是成功还是失败

这创建了一个人在循环中的流程:AI代理请求登录,您在手机上验证请求,在 /approve 页面,然后登录继续。

MCP工具

list_vault_items

返回可用的登录项——仅限于站点名称和用户名, 无密码.

secure_login

执行带有占位符替换的登录序列。

参数:

参数类型说明
vaultItemstring要使用的vault项目的名称
stepsarray浏览器操作的有序列表

步骤类型:

操作描述用例
fill设置值+调度输入/更改事件大多数站点的标准表单
type按键输入(50ms延迟)反应控制组件,SPA
click单击元素提交按钮
wait等待导航或选择器页面转换,多步流程
select选择下拉选项选择元素

占位符: {{email}}, {{username}}, {{password}}, {{totp}}

多步登录(SPA)

一些网站有多步登录流程。通过拆分为单独的呼叫来处理这些问题:

// Step 1: Enter username, proceed to password screen
{
  "vaultItem": "MyBank",
  "steps": [
    {"action": "type", "selector": "#username", "value": "{{username}}"},
    {"action": "click", "selector": "#next-btn"},
    {"action": "wait", "selector": "input[type=password]"}
  ]
}

// Step 2: Enter password, submit
{
  "vaultItem": "MyBank",
  "steps": [
    {"action": "type", "selector": "#password", "value": "{{password}}"},
    {"action": "click", "selector": "#login-btn"},
    {"action": "wait", "navigation": true}
  ]
}

安全

设计原则

  • 密码永远不会到达LLM --只有 {{placeholder}} 令牌存在于AI上下文中
  • 使用后清除凭据 --注入后立即将内存清零
  • 仅限本地主机 --MCP服务器绑定到 0.0.0.0:8899 在Docker内部,仅在本地主机上公开
  • Vaultwarder E2E加密 --静止的数据被加密;如果没有主密码,则无法读取
  • AES-256-GCM加密 --存储的主密码使用自动生成的密钥进行加密(独立于管理员令牌)
  • PBKDF2-SHA256管理员密码 --管理面板密码经过310k次迭代,从不以明文形式存储
  • 基于会话的身份验证 -管理员API使用服务器端会话(8小时TTL),而不是原始令牌
  • 指令序列,而非脚本 --只有预定义的操作(填充/键入/单击/等待/选择),没有任意的JS执行
  • 预防占位符注射{{password}} 仅允许填写/键入 value 领域;在选择器中被拒绝

威胁模型

威胁缓解
立即注入以登录钓鱼网站Vaultwarden充当隐式满网者;通过CDP进行URL验证
未经授权的MCP访问每个帐户持有人令牌身份验证
凭证滥用/重复尝试速率限制(3/min,20/hr)+故障后的冷却
未经授权登录敏感帐户高级模式:手动解锁+确认码批准,超时50秒
URL欺骗登录路由器通过CDP读取实际浏览器URL,并与vault URI进行匹配
缺少审计跟踪结构化审计日志记录在 /audit (日志中没有密码)
存储密码泄漏使用AES-256-GCM(自动生成密钥)加密的主密码
管理面板暴力破解PBKDF2-SHA256哈希密码,基于会话的身份验证
未注意到的凭据使用解锁、批准请求和执行结果的电报通知

环境变量

变量必填描述
VW_ADMIN_TOKEN初始管理员登录令牌和密码重置回退

所有其他配置(Vaultwarden URL、帐户、承载令牌、电报、速率限制)均通过管理面板进行管理,或在中具有合理的默认值 docker-compose.yml.

路线图

  • \[\]Cookie缓存(登录一次,重用会话)
  • \[\]支持OpenClaw快照引用ID(以及CSS选择器)
  • \[\]多代理框架支持

许可证

该项目根据 GNU Affero通用公共许可证v3.0(AGPL-3.0)。参见 许可证 全文。

  • 免费供个人使用、测试和自托管
  • 在同一许可证下可以自由修改和分发
  • 如果将修改后的版本作为网络服务运行,则必须发布源代码
  • 如需商业许可,请联系作者

致谢

目录标签

目录标签

本地存储TypeScript浏览器自动化安全登录本地部署AI代理密码管理

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

2

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明token部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP