Skip to main content
Glama
dceluis

rbw-mcp

by dceluis
README.md
# rbw-mcp

Model Context Protocol (MCP) server that enables interaction with the Bitwarden password manager vault via the `rbw` (Rust Bitwarden) command-line interface. The server allows AI models to securely communicate with a user's Bitwarden vault through defined tool interfaces.

## Prerequisites

- Node.js 22
- `rbw` (Rust Bitwarden CLI) installed and configured.

## Installation

### Option One: Configuration in your AI app

Open up your application configuration, e.g. for Claude Desktop:

```json
{
  "mcpServers": {
    "rbw": {
      "command": "npx",
      "args": ["-y", "rbw-mcp"]
    }
  }
}
```

### Option Two: Local checkout

Requires that this repository be checked out locally. Once that's done:

```bash
npm install
npm run build
```

## Setup

1. **Install `rbw`**:
   Follow the instructions for your platform on the official [rbw repository](https://github.com/doy/rbw). For example, on Debian/Ubuntu:

   ```bash
   sudo apt-get update
   sudo apt-get install rbw
   ```

2. **Configure `rbw`**:
   Configure `rbw` to connect to your Bitwarden account.

   ```bash
   rbw config
   ```

3. **Unlock your vault**:
   Before running the MCP server, you must unlock your vault. This starts the `rbw-agent` and allows subsequent commands to run without prompting for a password.
   ```bash
   rbw unlock
   ```
   The server will check if the vault is unlocked on startup.

## Testing

### Running unit tests

The project includes Jest unit tests.

```bash
# Run all tests
npm test

# Run tests in watch mode
npm run test:watch

# Run tests with coverage
npm test -- --coverage
```

## Inspection and development

### MCP Inspector

Use the MCP Inspector to test the server interactively:

```bash
# Start the inspector
npm run inspect
```

This will:

1. Start the MCP server
2. Launch the inspector UI in your browser
3. Allow you to test all available tools interactively

### Available tools

The server provides the following `rbw` CLI tools:

| Tool       | Description                                                                                     | Required Parameters                                                 | Notes                                                                                        |
| :--------- | :---------------------------------------------------------------------------------------------- | :------------------------------------------------------------------ | :------------------------------------------------------------------------------------------- |
| `lock`     | Lock the vault by clearing cached keys from the agent.                                          | None                                                                | Executes `rbw lock`.                                                                         |
| `unlock`   | Unlock the vault. This will trigger an interactive prompt for your master password if needed.   | None                                                                | Executes `rbw unlock`.                                                                       |
| `sync`     | Sync vault data from the Bitwarden server.                                                      | None                                                                | Executes `rbw sync`.                                                                         |
| `status`   | Check if the vault is unlocked.                                                                 | None                                                                | Executes `rbw unlocked`.                                                                     |
| `list`     | Lists items from the vault. Can be filtered by a search term.                                   | Optional: `search`, `ignoreCase`                                    | Executes `rbw list --fields name,user,id,folder` and filters results in-memory.              |
| `get`      | Get a specific field for an item (defaults to password).                                        | `id` (required). Optional: `field`                                  | Executes `rbw get <id>` or `rbw get --field ...`. **Use `list` to find the exact ID first.** |
| `code`     | Get a TOTP code for an item.                                                                    | `id`                                                                | Executes `rbw code <id>`. **Use `list` to find the exact ID first.**                         |
| `generate` | Generate a secure password or passphrase. By default, generates a strong password with symbols. | Optional: `length`, `diceware`, `noSymbols`                         | Executes `rbw generate`.                                                                     |
| `delete`   | Delete an item from your vault.                                                                 | `id`                                                                | Executes `rbw rm <id>`.                                                                      |
| `create`   | Create a new login item in your vault.                                                          | `name` (required). Optional: `username`, `password`, `notes`, `uri` | Executes `rbw add`. Uses `EDITOR='tee'` for non-interactive input.                           |
| `edit`     | Edit the password and/or notes for an existing item in your vault.                              | `id` (required). Optional: `password`, `notes`                      | Executes `rbw edit`. Uses `EDITOR='tee'` for non-interactive input.                          |

## Security considerations

- **Use `rbw-agent`**: It is highly recommended to use `rbw` with its agent to handle the master password securely.
- **Validate all inputs**: All tool inputs are strictly validated using Zod schemas.

## Troubleshooting

### Common issues

1. **"Vault is locked" error on startup**

   - Run `rbw unlock` in your terminal before starting the server.

2. **`rbw` command not found**

   - Ensure that `rbw` is installed and that its location is in your system's `PATH`.

3. **Tests failing**
   - Ensure all development dependencies are installed with `npm install`.

TDQS

B3.2/5.0

Scored across 11 tools

Disambiguation4/5

Most tools are clearly distinct (status vs unlock vs lock vs sync; create/edit/delete vs list/get). The only minor ambiguity is between 'list' and 'get' — both retrieve vault items, though one returns fields for a specific item and the other enumerates items. The distinction is reasonably clear from descriptions.

Naming Consistency4/5

All tools use short, single-word imperative names (status, create, edit, generate, lock, unlock, sync, list, get, code, delete). The style is consistent, though the names are generic single verbs rather than a verb_noun pattern, which slightly reduces predictability compared to the ideal convention.

Tool Count4/5

With 11 tools for a Bitwarden password manager vault, the surface is appropriately scoped. Each tool maps to a distinct vault operation (locks, item CRUD, sync, TOTP, generation), and none feel redundant. The count is slightly on the higher side but still well within reason.

Completeness4/5

The surface covers vault lifecycle (unlock/lock/status/sync), item CRUD (list/get/create/edit/delete), TOTP retrieval, and password generation. Minor gaps include no ability to manage folders, move items between folders, or handle multiple vaults/collections, but the core password-management workflows are covered with no dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues