🔐 MCP Vaultwarden服务器
](https://www.npmjs.com/package/mcp-vaultwarden-server)  ](https://nodejs.org)
模型上下文协议(MCP)服务器,它公开了一个简单而健壮的接口,用于与实例交互 库房守卫 自托管。它充当Bitwarden官方CLI的包装器(bw),允许人工智能代理或自动化脚本以编程方式管理秘密。
🤔 为什么是这个项目?
VaultWarden是BitWarden的一个流行且轻量级的替代方案,但其自动化可能很复杂。官方CLI(bw)需要手动会话管理(登录、解锁等),这不适合人工智能代理或非交互式脚本使用。
此MCP通过以下方式解决此问题:
- 自动管理会话: 它按需解锁vault并缓存活动会话。
- 展示简单的工具: 提供清晰的功能(
get_secret,list_secrets等)通过MCP协议。 - 防止堵塞: 集成超时和锁定系统,以可靠地管理竞争对手的访问。
✨ 功能
- 自动解锁: vault在第一次请求时解锁,会话密钥被缓存。
- 冲突管理: “锁定”机制可防止多重和并发解锁。
- 完整API: 支持读取、创建、更新和删除机密。
- 秘密模型: 提供JSON模板以轻松创建新元素。
- 安全: 基于CLI
bw所有加密操作的官方。
______________________________________________________________________
⚠️ 先决条件
要使此服务器工作,运行它的机器 必须具有Bitwarden CLI(bw)已安装 并且可在 PATH.
请遵循官方安装说明: 安装程序la CLI Bitwarden.
______________________________________________________________________
📦 安装
方法1:通过NPM(推荐)
这是与MCP客户端一起使用的最简单方法 gemini-cli.
将客户端配置为通过以下方式启动服务器: 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)
- 克隆存储库:
git clone https://github.com/fkom13/mcp-vaultwarden.git
cd mcp-vaultwarden- 安装依赖项:
npm install- 配置并启动:
创建文件 .env 从 .env.example 然后填充它,然后启动服务器。
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存储库中的秘密。 - 对于生产使用,请选择更强大的秘密管理方法,如Orchestrator的秘密(Kubernetes秘密、Docker秘密)或专用服务(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
强制本地vault与远程服务器同步。
{
"tool": "sync",
"arguments": {}
}______________________________________________________________________
🤝 贡献
欢迎捐款!不要犹豫分叉项目并打开拉取请求。
📝 许可证
麻省理工学院
