Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

Vault Broker

БесплатноНе проверен

MCP server that gives Claude scoped, indirect access to Vaultwarden credentials by listing non-secret metadata and performing logins without exposing plaintext

GitHubEmbed

Описание

MCP server that gives Claude scoped, indirect access to Vaultwarden credentials by listing non-secret metadata and performing logins without exposing plaintext passwords. It brokers actions rather than values, keeping secrets out of the LLM context.

README

Kleine, zelf-gehoste MCP-server die Claude scoped, indirecte toegang geeft tot credentials in Vaultwarden — zonder dat Claude ooit een plaintext wachtwoord in zijn context krijgt.

Waarom deze opzet

Claude mag geen wachtwoorden lezen en zelf in formulieren typen. Deze broker lost dat op door acties aan te bieden in plaats van waardes: Claude kiest welk item gebruikt wordt, de broker is de enige die de waarde ooit ziet.

Tools (v0.2)

Tool Standaard Wat het doet
list_credentials aan Alleen metadata (id, naam, gebruikersnaam, URL's) van login-items in de gedeelde collectie. Nooit een wachtwoord.
create_credential aan Genereert een sterk wachtwoord in de broker en slaat het op als nieuw login-item in de collectie. Geeft het wachtwoord niet terug. Weigert een bestaande naam (geen overschrijven).
inject_secret alleen met PORTAINER_URL, PORTAINER_API_KEY en INJECT_ALLOWED_STACKS Zet het opgeslagen wachtwoord in één variabele van een stack uit de allow-list (herdeployt die stack). Geeft de waarde niet terug. Alleen standalone compose-stacks, geen git-stacks.
login uit (ENABLE_LOGIN=true om aan te zetten) Vult een webformulier in via Playwright en geeft alleen succes/falen terug. Werkt alleen in een image mét Playwright/Chromium; de standaard-image (node:22-bookworm-slim) heeft die niet.

Gemeenschappelijke regels:

  • Alles is beperkt tot één organisatie + één collectie en tot items van het type login. Kaarten, identiteiten en notities worden nooit getoond of gebruikt.
  • Een geheim komt nooit in een tool-antwoord, foutmelding of logregel, en niet in de argumenten van een bw-proces (payload gaat via stdin).
  • Transport is Streamable HTTP, stateless: POST /mcp?key=.... Elk verzoek krijgt een eigen McpServer-instantie (één gedeelde instantie liet de container crashen bij de tweede verbinding). Legacy SSE (/sse, /messages) wordt niet meer geserveerd. De variabele heet nog MCP_SSE_SECRET om bestaande stack-omgevingen niet te breken.

Vaultwarden-kant (handmatig, door Steno)

Dit deel kan Claude niet voor je doen (accounts aanmaken / wachtwoorden instellen is voor Claude verboden terrein, ook met toestemming).

  1. In de bestaande Vaultwarden-instance (container app_a0d7b954_bitwarden, poort 7277 op het hassio-netwerk — waarschijnlijk ontsloten via secure.steno.nl, even checken in NPM): maak een organisatie of hergebruik een bestaande, met een nieuwe collectie, bijv. Gedeeld met Claude.
  2. Maak een aparte login aan voor de agent-identiteit, bijv. [email protected], met een eigen sterk wachtwoord + 2FA.
  3. Nodig die identiteit uit in de organisatie met toegang tot alleen de collectie Gedeeld met Claude.
  4. Zet de items die je wilt delen in die collectie (kopiëren/delen, niet per se verplaatsen).
  5. Maak voor die identiteit een API key aan (Account settings → Security → Keys) — dat is wat de broker gebruikt om in te loggen, niet het master password rechtstreeks.
  6. Geef mij: de vault-URL, de organisatie-ID en de collectie-ID (allemaal niet-geheime waardes, te vinden in de URL/admin-UI). De echte secrets (API key, master password) zet je zelf in .env op de server — die stuur je niet naar mij door.

Broker-kant (dit scaffold)

  • Dockerfile — node:22-bookworm-slim, installeert de Bitwarden CLI (bw), draait als gebruiker node.
  • server.js — MCP-server (SSE), tools: zie tabel hierboven.
  • generate.js / portainer.js — wachtwoordgenerator en Portainer-injectie.
  • test/ — npm test (unit + end-to-end met een nep-bw en nep-Portainer).
  • docker-compose.yml — draait op het gedeelde hassio-netwerk, net als je andere self-hosted MCP-servers. Niet publiek via NPM ontsluiten — dit is een secrets-gateway, alleen intern/via Tailscale bereikbaar houden.

Nog te doen voordat dit bruikbaar is

  • .env invullen (zie .env.example) zodra stap 1–6 hierboven klaar zijn.
  • create_credential (aanmaken in een organisatie-collectie via bw create item) is getest tegen een nep-bw, nog niet tegen de echte Vaultwarden. Eerste echte test: één item aanmaken en in de UI controleren.
  • Testen met één laag-risico item voordat er meer gedeeld wordt.
  • Pas als dit werkt: als Portainer-stack deployen (met jouw akkoord, dit raak ik niet zelf aan zonder te vragen).

Bekende valkuil: bw CLI-versie vs. Vaultwarden-versie

@bitwarden/cli@latest (getest: 2026.7.0) crasht met een WASM-panic ("invalid type: JsValue(Object(...)), expected a string") bij bw list items tegen onze Vaultwarden-instance (versie 2025.12.0, te checken via GET /api/config, publiek/niet-geheim endpoint). Oorzaak: de nieuwste officiële CLI verwacht een response-schema dat deze Vaultwarden-versie nog niet levert.

Fix: CLI-versie dicht bij de serverversie pinnen — getest en werkend met @bitwarden/[email protected]. Dockerfile en test-list-credentials.sh gebruiken deze pin. Bij een Vaultwarden-upgrade: eerst opnieuw testen voordat je de CLI-pin optrekt.

Tweede addertje: bw config server weigert te wijzigen zolang de CLI al ingelogd is ("Logout required before server config update") — het lokale bw-datadir (~/.config/Bitwarden CLI / %APPDATA%\Bitwarden CLI) onthoudt de sessie ook tussen verschillende CLI-versies in. Altijd bw logout (fouten negeren) vóór bw config server in scripts.

Vierde addertje (opgelost in v0.2): de bw-CLI 2025.12.x heeft Node ≥ 20.19 nodig. In de oude playwright:v1.48.0-jammy-image (Node 20.18) crashte elk bw-commando met ERR_REQUIRE_ESM, dus de broker kon nooit inloggen. Daarom nu node:22-bookworm-slim.

Derde addertje (historisch, gold voor de oude image): node:20-alpine als base image laat de build wel slagen, maar Playwright's Chromium draait niet betrouwbaar op musl libc/Alpine, en playwright install --with-deps kent alleen apt, geen apk. Ontdekt pas bij de eerste Portainer-deploy (lokaal getest zonder Docker, dus dit verschil bleef onzichtbaar tot de echte build). Fix: mcr.microsoft.com/playwright:v1.48.0-jammy als base image (zelfde familie als playwright-amazon-mcp/playwright-bol-mcp), Chromium + OS-deps al ingebakken.

Beveiligingsnotities

  • Het MCP-endpoint (/mcp) verwacht het secret als query-param (?key=...), niet als pad-prefix. In NPM staat er bovendien dezelfde sleutelcontrole plus de Anthropic-allowlist voor.
  • list_credentials filtert serverside altijd het login.password-veld eruit, ook als de Bitwarden CLI het teruggeeft — nooit vertrouwen op "de aanroeper vraagt er toch niet om".
  • Container draait met een .env-bestand dat niet in git komt (.gitignore sluit 'm uit).

from github.com/StenoJS/vault-broker-mcp

Установка Vault Broker

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/StenoJS/vault-broker-mcp

FAQ

Vault Broker MCP бесплатный?

Да, Vault Broker MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для Vault Broker?

Нет, Vault Broker работает без API-ключей и переменных окружения.

Vault Broker — hosted или self-hosted?

Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.

Как установить Vault Broker в Claude Desktop, Claude Code или Cursor?

Открой Vault Broker на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Opencode Omniroute Plugin

OpenCode plugin for the OmniRoute AI Gateway. Drives dynamic model discovery, /connect auth flow, and multi-instance OmniRoute providers via the official @openc

GitHub Actionsавтор: GitHub Actions
75

Roblox Studio

Enables AI coding tools to control Roblox Studio for workspace exploration, instance manipulation, and script management. It provides tools for playtesting, sce

paralovавтор: paralov

Antigravity Drawio

MCP server that enables AI assistants to create, parse, render, and validate Draw.io diagrams programmatically.

S-SUJAN-Sавтор: S-SUJAN-S

Fetch

Web content fetching and conversion for efficient LLM usage.

автор: Community

AWS KB Retrieval

Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.

modelcontextprotocolавтор: modelcontextprotocol

Spring AI MCP Server

Provides auto-configuration for setting up an MCP server in Spring Boot applications.

автор: Community

llm-analysis-assistant

A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also

xuzexin-hzавтор: xuzexin-hz

MCP-Agent

A simple, composable framework to build agents using Model Context Protocol by [LastMile AI](https://www.lastmileai.dev)

lastmile-aiавтор: lastmile-ai

Spring AI MCP Client

Provides auto-configuration for MCP client functionality in Spring Boot applications.

автор: Community

mcp.natoma.ai

A Hosted MCP Platform to discover, install, manage and deploy MCP servers by [Natoma Labs](https://www.natoma.ai)

автор: Community

Compare Vault Broker with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории ai