MCP server exposing Bitwarden/Vaultwarden vault management via the official bw CLI for credential-aware AI agents.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag โ we're steadily working through the catalog.
๐ก Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Warden MCP.
keychain_statusinspect raw `bw` status
keychain_syncpull latest vault data with `bw sync`
keychain_search_itemsfind items by name, URI, username, folder,
keychain_get_itemread a full item by id, redacted by default
Vaultwarden / Bitwarden MCP server for credential-aware AI agents.
warden-mcp lets MCP clients search, create, update, move, and read
Vaultwarden or Bitwarden vault items through the official Bitwarden CLI (bw).
It is built for agents and automation that need credentials, TOTP codes, secure
notes, attachments, Sends, folders, organizations, and collections without
re-implementing Bitwarden client-side crypto.
Use it when an agent needs to log in to real systems during a browser or admin workflow, but you do not want passwords hardcoded in prompts, config files, or one-off scripts.
Use stdio mode when a local MCP host launches the server directly. It is the simplest and most portable setup for desktop agents.
Prerequisites:
Run the server:
Username login also works:
If the package is useful, star the repository so other agent builders can find it.
Most local hosts should use stdio. The examples below use API-key auth; replace
BW_CLIENTID and BW_CLIENTSECRET with BW_USER if you prefer username login.
Codex TOML config:
startup_timeout_sec = 30 gives npx enough time for a cold first launch.
Common locations:
| Host | Config file |
|---|---|
| Cursor | ~/.cursor/mcp.json or .cursor/mcp.json |
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Codex | ~/.codex/config.toml |
reveal: true and the client explicitly asks for itX-BW-* headersstructuredContentbw auth/session flows, not only mocked SDK behaviorwarden-mcp shells out to bw and keeps profile state under
KEYCHAIN_BW_HOME_ROOT. In HTTP mode, profile selection and credentials come
from request headers. In stdio mode, credentials are loaded from BW_* env vars
when the process starts.
The HTTP server exposes:
| Endpoint | Purpose |
|---|---|
GET /healthz | liveness check; does not validate vault credentials |
GET /metricsz | session and runtime guardrail metrics |
/sse?v=2 | MCP Streamable HTTP endpoint |
HTTP mode is useful when one service should serve multiple clients or multiple vault profiles.
Start the server:
Verify liveness:
MCP tool calls must include these headers unless env fallback is explicitly enabled:
| Header | Meaning |
|---|---|
X-BW-Host | HTTPS origin only, for example https://vaultwarden.example.com |
X-BW-Password | master password used to unlock the vault |
X-BW-ClientId | Bitwarden API key client id |
X-BW-ClientSecret | Bitwarden API key client secret |
X-BW-User or X-BW-Username | username/email alternative to API key login |
X-BW-Unlock-Interval | optional unlock interval in seconds; default 300 |
Example HTTP MCP config for hosts that support custom headers:
Some browser-hosted MCP clients can connect to an HTTP/SSE endpoint but cannot
send custom X-BW-* headers. For those clients, run a single-tenant HTTP server
with env fallback:
Only use KEYCHAIN_ALLOW_ENV_FALLBACK=true behind a trusted network boundary.
Every client that can reach the endpoint inherits the configured vault identity.
For hosted clients that require HTTPS, put a reverse proxy, private tunnel, VPN,
or equivalent protected endpoint in front of warden-mcp, then connect to:
The production image runs as the non-root node user with uid/gid 1000, sets
HOME=/data, and stores Bitwarden profile state under /data/bw-profiles by
default. If you use a bind mount, make it writable by uid/gid 1000.
warden-mcp requires Node.js 22.x and npm 10.x when running from npm or source.
The Docker image includes the supported Node runtime.
The server resolves bw in this order:
BW_BIN, when set@bitwarden/cli dependencybw from PATHThe bundled @bitwarden/cli version is currently 2026.8.0. This project keeps
that version vetted instead of blindly tracking every upstream release, because
auth and unlock behavior can change in ways that break automation.
If bw is missing, install the CLI explicitly or point BW_BIN to a known
binary:
There is no built-in authentication layer in v1. Protect the transport before you expose it.
WARDEN_MCP_HOST=127.0.0.1, Docker
-p 127.0.0.1:3005:3005, a firewall, VPN, or an authenticated reverse proxyX-BW-* headers carry vault credentialsKEYCHAIN_ALLOW_ENV_FALLBACK=true
makes server-side vault credentials available to headerless clientsREADONLY=true or
KEYCHAIN_READONLY=true hides mutating tools and rejects direct write callsNOREVEAL=true or
KEYCHAIN_NOREVEAL=true forces all secret-returning tools to stay redactedKEYCHAIN_DEBUG_BW or
KEYCHAIN_DEBUG_HTTP unless actively troubleshootingKEYCHAIN_BW_HOME_ROOT, which stores
local bw profile state/metricsz if needed - it is unauthenticated for scraper
compatibility and exposes runtime/session countersRedacted fields include login passwords, TOTP seeds/codes, card numbers and codes, identity SSNs/passport/license numbers, hidden custom fields, SSH private keys stored through the secure-note convention, signed attachment URLs, and password history entries.
Factual signals from GitHub, npm, and our automated checks โ not a rating.
No reviews yet โ be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/icoretech-warden-mcp)<a href="https://allmcps.com/mcp/icoretech-warden-mcp"><img src="https://allmcps.com/api/badge/icoretech-warden-mcp?style=directory" alt="Warden MCP on AllMCPs" /></a>