mcpField
M
MCP Vaultwarden Connector

MCP Vaultwarden Connector

本地服务
github.com/fkom13安全250 周前更新

关于 MCP Vaultwarden Connector

MCP Vaultwarden Connector 通过 Bitwarden 命令行工具,为脚本和 AI Agent 提供访问自托管 Vaultwarden 密码库的接口。它管理会话,并支持检索、搜索、创建、更新和删除秘密,还通过锁机制协调并发解锁。

主要功能

  1. 01自动解锁并缓存密码库会话
  2. 02搜索和检索秘密
  3. 03创建、更新和删除秘密
  4. 04提供秘密条目的 JSON 模板
  5. 05协调并发解锁请求

适用场景

  1. 01为自动化脚本获取凭据
  2. 02在密码库中搜索数据库秘密
  3. 03以编程方式创建或更新条目
  4. 04让 AI Agent 连接自托管密码库

MCP 相关

该 MCP 服务向 MCP 客户端提供 Vaultwarden 秘密管理工具,包括 get_secret、list_secrets、create_secret、update_secret 和 delete_secret。它封装官方 Bitwarden CLI `bw`。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"vaultwarden": {
"command": "npx",
"args": [
"-y",
"mcp-vaultwarden-server"
],
"env": {
"BITWARDEN_HOST": "<BITWARDEN_HOST>",
"BW_CLIENTID": "<BW_CLIENTID>",
"BW_CLIENTSECRET": "<BW_CLIENTSECRET>",
"BW_MASTER_PASSWORD": "<BW_MASTER_PASSWORD>"
}
}
}
}
启动命令npx -y mcp-vaultwarden-server
需要配置的环境变量
BITWARDEN_HOST
BW_CLIENTID
BW_CLIENTSECRET密钥
BW_MASTER_PASSWORD密钥

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-vaultwarden-server

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

🔐 MCP Vaultwarden 服务端

NPM Version License Node

一个 MCP(模型上下文协议)服务,为与自托管的 Vaultwarden 实例交互提供简单而可靠的接口。它是官方 Bitwarden 命令行工具(bw)的封装,可让 AI Agent 或自动化脚本以编程方式管理机密信息。

🤔 为什么要做这个项目?

Vaultwarden 是 Bitwarden 的热门轻量级替代方案,但其自动化操作可能较为复杂。官方命令行工具(bw)需要手动管理会话(登录、解锁等),不适合由 AI Agent 使用或在非交互式脚本中使用。

这个 MCP 通过以下方式解决了这一问题:

  • 自动管理会话: 按需解锁保险库,并将会话保持在缓存中。
  • 提供简单的工具: 通过 MCP 协议提供清晰的函数(get_secret、list_secrets 等)。
  • 避免阻塞: 集成超时机制和锁定系统,可靠地处理并发访问。

✨ 功能

  • 自动解锁: 首次请求时解锁保险库,并缓存会话密钥。
  • 冲突管理: 通过“锁定”机制避免重复并发解锁。
  • 完整 API: 支持读取、创建、更新和删除机密信息。
  • 机密信息模板: 提供 JSON 模板,方便创建新条目。
  • 安全性: 所有加密操作均依赖官方 bw 命令行工具。

⚠️ 前提条件

要运行此服务,运行它的机器必须安装 Bitwarden 命令行工具(bw),且该工具必须可通过 PATH 访问。

请按照官方安装说明操作:安装 Bitwarden 命令行工具。


📦 安装

方法 1:通过 NPM(推荐)

这是通过 gemini-cli 等 MCP 客户端使用此服务最简单的方法。

配置客户端,通过 npx 启动服务:

{
  "mcpServers": {
    "vaultwarden": {
      "command": "npx",
      "args": [
        "mcp-vaultwarden-server"
      ],
      "env": {
        "BITWARDEN_HOST": "https://votre-instance.vaultwarden.com",
        "BW_CLIENTID": "user.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "BW_CLIENTSECRET": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "BW_MASTER_PASSWORD": "votre-mot-de-passe-maitre"
      }
    }
  }
}
方法 2:从源码安装(Git)
  1. 克隆仓库:

    git clone https://github.com/fkom13/mcp-vaultwarden.git
    cd mcp-vaultwarden
    
  2. 安装依赖:

    npm install
    
  3. 配置并启动: 根据 .env.example 创建 .env 文件并填写内容,然后启动服务。

    cp .env.example .env
    nano .env
    node server.js
    

🔒 配置与安全

通过环境变量进行配置。

  • BITWARDEN_HOST:您的 Vaultwarden 实例 URL。
  • BW_CLIENTID:您的 API 客户端 ID。
  • BW_CLIENTSECRET:您的 API 客户端密钥。
  • BW_MASTER_PASSWORD:您的主密码。

安全警告: BW_MASTER_PASSWORD 的管理至关重要。

  • 切勿将 .env 文件或机密信息提交到 Git 仓库。
  • 在生产环境中,建议使用更稳健的机密信息管理方式,例如编排工具提供的机密信息(Kubernetes Secrets、Docker Secrets)或专用服务(HashiCorp Vault)。
  • 此 MCP 旨在受控且安全的环境中运行。

🧰 工具参考(API)

以下是此 MCP 提供的工具及其调用示例。

get_secret

按名称或 ID 获取机密信息。

{
  "tool": "get_secret",
  "arguments": {
    "name": "API Key - OpenAI"
  }
}
list_secrets

搜索包含指定词语的机密信息。

{
  "tool": "list_secrets",
  "arguments": {
    "search_term": "database"
  }
}
get_secret_template

获取用于创建新机密的 JSON 模板。

{
  "tool": "get_secret_template",
  "arguments": {
    "type": "login"
  }
}

有效类型:login、note、card、identity。

create_secret

创建新条目。请先使用 get_secret_template。

{
  "tool": "create_secret",
  "arguments": {
    "item_json": "{\\\"type\\\":1,\\\"name\\\":\\\"Mon Nouveau Login\\\",\\\"notes\\\":\\\"Ceci est une note secrète.\\\",\\\"favorite\\\":false,\\\"login\\\":{\\\"username\\\":\\\"monuser\\\",\\\"password\\\":\\\"MonP@ssw0rd!\\\",\\\"uris\\\":[{\\\"uri\\\":\\\"https://example.com\\\"}]}}"
  }
}

注意:JSON 必须是经过转义的字符串。

update_secret

根据 ID 更新现有机密。

{
  "tool": "update_secret",
  "arguments": {
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "item_json": "{\\\"name\\\":\\\"Ancien Login (Mis à jour)\\\"}"
  }
}
delete_secret

根据 ID 删除机密。

{
  "tool": "delete_secret",
  "arguments": {
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
  }
}
sync

强制将本地保管库与远程服务同步。

{
  "tool": "sync",
  "arguments": {}
}

🤝 贡献

欢迎贡献!欢迎 fork 此项目并提交 Pull Request。

📝 许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。