内容
# rbw-mcp
Model Context Protocol (MCP) 服务器,能够通过 `rbw`(Rust Bitwarden)命令行界面与Bitwarden密码管理器保险箱进行交互。该服务器允许AI模型通过定义的工具接口安全地与用户的Bitwarden保险箱进行通信。
## 前提条件
- Node.js 22
- 已安装并配置 `rbw`(Rust Bitwarden CLI)。
## 安装
### 选项一:应用程序配置
打开您的应用程序配置,例如适用于Claude Desktop:
```json
{
"mcpServers": {
"rbw": {
"command": "npx",
"args": ["-y", "rbw-mcp"]
}
}
}
```
### 选项二:本地克隆
需要将此仓库克隆到本地。完成后:
```bash
npm install
npm run build
```
## 设置
1. **安装 `rbw`**:
按照官方 [rbw 仓库](https://github.com/doy/rbw) 中的说明,为您的平台安装 `rbw`。例如,在Debian/Ubuntu上:
```bash
sudo apt-get update
sudo apt-get install rbw
```
2. **配置 `rbw`**:
配置 `rbw` 以连接到您的Bitwarden账户。
```bash
rbw config
```
3. **解锁您的保险箱**:
在运行MCP服务器之前,您必须解锁您的保险箱。这将启动 `rbw-agent` 并允许后续命令在不提示输入密码的情况下运行。
```bash
rbw unlock
```
服务器将在启动时检查保险箱是否已解锁。
## 测试
### 运行单元测试
该项目包含Jest单元测试。
```bash
# 运行所有测试
npm test
# 以监视模式运行测试
npm run test:watch
# 运行测试并生成覆盖率报告
npm test -- --coverage
```
## 检查和开发
### MCP 检查器
使用MCP检查器以交互方式测试服务器:
```bash
# 启动检查器
npm run inspect
```
这将:
1. 启动MCP服务器
2. 在您的浏览器中启动检查器UI
3. 允许您交互式地测试所有可用的工具
### 可用工具
服务器提供以下 `rbw` CLI工具:
| 工具 | 描述 | 必需参数 | 备注 |
| :--------- | :---------------------------------------------------------------------------------------------- | :--------------------------------------------------------- | :------------------------------------------------------------------------------------------- |
| `lock` | 通过清除代理中的缓存密钥来锁定保险箱。 | 无 | 执行 `rbw lock`。 |
| `unlock` | 解锁保险箱。如果需要,这将触发一个交互式提示,要求输入主密码。 | 无 | 执行 `rbw unlock`。 |
| `sync` | 从Bitwarden服务器同步保险箱数据。 | 无 | 执行 `rbw sync`。 |
| `status` | 检查保险箱是否已解锁。 | 无 | 执行 `rbw unlocked`。 |
| `list` | 列出保险箱中的项目。可以按搜索词过滤。 | 可选:`search`、`ignoreCase` | 执行 `rbw list --fields name,user,id,folder` 并在内存中过滤结果。 |
| `get` | 获取某个项目的特定字段(默认为密码)。 | `id`(必需)。可选:`field` | 执行 `rbw get <id>` 或 `rbw get --field ...`。**使用 `list` 查找确切的ID**。 |
| `code` | 获取某个项目的TOTP代码。 | `id` | 执行 `rbw code <id>`。**使用 `list` 查找确切的ID**。 |
| `generate` | 生成安全密码或通行短语。默认情况下,生成带有符号的强密码。 | 可选:`length`、`diceware`、`noSymbols` | 执行 `rbw generate`。 |
| `delete` | 从您的保险箱中删除一个项目。 | `id` | 执行 `rbw rm <id>`。 |
| `create` | 在您的保险箱中创建一个新的登录项目。 | `name`(必需)。可选:`username`、`password`、`notes`、`uri` | 执行 `rbw add`。使用 `EDITOR='tee'` 进行非交互式输入。 |
| `edit` | 编辑保险箱中现有项目的密码和/或备注。 | `id`(必需)。可选:`password`、`notes` | 执行 `rbw edit`。使用 `EDITOR='tee'` 进行非交互式输入。 |
## 安全考虑
- **使用 `rbw-agent`**:强烈建议将 `rbw` 与其代理一起使用,以安全地处理主密码。
- **验证所有输入**:所有工具输入都使用Zod模式严格验证。
## 故障排除
### 常见问题
1. **启动时出现"保险箱已锁定"错误**
- 在启动服务器之前,在终端中运行 `rbw unlock`。
2. **`rbw` 命令未找到**
- 确保已安装 `rbw` 并且其位置在系统的 `PATH` 中。
3. **测试失败**
- 确保所有开发依赖项都已使用 `npm install` 安装。