Back to Directory/Security & Auth

io.github.AIWerk/mcp-server-vault

Bitwarden/Vaultwarden for agents: list tagged items, TOTP codes, one-time Sends, save new secrets.

Security & AuthTypeScriptv0.2.1

@aiwerk/mcp-server-vault

Bitwarden / Vaultwarden MCP server — BYOK vault access for AI agents.

Exposes 6 tools over stdio. Secret values are never sent in plaintext through list_vault_items or get_vault_metadata — secrets are delivered only through Bitwarden Sends (E2E-encrypted one-time URLs).

Install

npx -y @aiwerk/mcp-server-vault

Configure

VariableRequiredDefaultDescription
VAULT_API_BASE✅—Base URL of your Bitwarden/Vaultwarden instance (no trailing slash), e.g. https://pass.aiwerk.ch
VAULT_CLIENT_ID✅—Personal API key client_id (e.g. user.abc-def-1234)
VAULT_CLIENT_SECRET✅—Personal API key client_secret
VAULT_MASTER_PASSWORD✅—Vault master password (used for E2E decryption key derivation)
VAULT_EXPOSED_COLLECTION—mcp-exposedName of the collection visible to agents
VAULT_AGENT_CREATED_COLLECTION—mcp-agent-createdName of the collection for agent-created secrets
VAULT_API_TIMEOUT_MS—15000HTTP timeout in milliseconds
DRY_RUN—0Set 1 to log write operations without executing them
READ_ONLY—0Set 1 to block all write operations (Send creation and save)

Auth — Personal API Key

  1. Log in to your Bitwarden/Vaultwarden instance
  2. Go to Account Settings → Security → Keys → API Key
  3. Note the client_id and client_secret
  4. Reference: https://bitwarden.com/help/personal-api-key/

Vault Setup

Before using this server, create two collections in your Vaultwarden organization:

  • mcp-exposed — items you want to expose to agents (your existing secrets: API keys, passwords, etc.)
  • mcp-agent-created — items written by agents via save_generated_secret

Add items to mcp-exposed via the Vaultwarden web UI.

Custom fields

Optionally add these custom fields to items in mcp-exposed for fine-grained control:

FieldTypePurpose
mcp-scopetextComma-separated glob list of tool/server names allowed to use this item (e.g. stripe.*,openai)
mcp-chat-reveal-allowedtext"true" to allow chat delivery of the Send URL
mcp-delivery-channeltext"chat" (default), "telegram", or "email"

Tools

ToolDescription
list_vault_itemsList items from mcp-exposed and mcp-agent-created. Returns metadata only — no secret values.
get_vault_metadataGet full metadata for a named item (name, type, username, URIs, custom fields, expiry). No password/secret.
reveal_secret_via_sendReveal a secret via a Bitwarden Send (E2E-encrypted one-time URL with configurable TTL and max-views).
get_totp_codeGet the current TOTP code for a login item, including remaining seconds in the period.
save_generated_secretSave an agent-generated secret (password / api-key) into mcp-agent-created as a secure note. CREATE-only — no overwrite.
save_login_itemSave sign-in credentials (username + password + optional URL + TOTP seed) into mcp-agent-created as a real login item. CREATE-only — no overwrite.
health_checkCheck connectivity: auth status, API version, collection visibility, item counts, latency.

Security model

  • Opt-in exposure: only items in mcp-exposed or mcp-agent-created are accessible; all other items return item_not_visible
  • Read-only existing items: no update_*, delete_*, or change_* tools exist
  • Secret value delivery via Send only: list_vault_items and get_vault_metadata never return passwords, TOTP seeds, or api-key values
  • E2E encryption preserved: the server decrypts vault data locally (master password stays in env vars, never sent over the wire)
  • Constrained agent writes: save_generated_secret and save_login_item are CREATE-only into the dedicated mcp-agent-created collection

Note: Actual {{vault:NAME}} placeholder resolution in tool call arguments happens in the AIWerk hosted bridge, not in this server. The bridge's resolution uses the same BYOC credentials. See the bridge-patch companion document for details.

License

MIT — AIWerk kontakt@aiwerk.ch

Homepage: https://aiwerkmcp.com

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
npx -y @aiwerk/mcp-server-vault

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-aiwerk-mcp-server-vault": {
      "command": "npx",
      "args": [
        "-y",
        "@aiwerk/mcp-server-vault"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

@aiwerk/mcp-server-vaultnpm

Compatible MCP Clients

io.github.AIWerk/mcp-server-vault works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More