
Vaultwarden Drop Slot
io.github.ip2k由 GitHub 账号 ip2k 发布v0.1.0更新于 Oct 25, 2026
Create-only, age-encrypted deposits of new logins and notes into Vaultwarden, without vault reads.
发布方自己的服务:drop.media
概览
一个本地 MCP 服务器,让助手把新的登录凭据和安全笔记加密存入自建 Vaultwarden 保险库,且不具备任何读取权限。
- 可以做什么
- 存入新的登录凭据或安全笔记:先在本机用 age 加密,再送入加密收件箱,只返回回执而不返回密钥本身。按回执查询投递状态,查看是排队、导入中、已导入还是失败。复用同一请求 ID 可安全重试原始条目,因为客户端保留原始密文。同一软件包还提供基于标准输入的 CLI 和 Node.js 模块,供脚本在不经过模型的情况下生成并存入密钥。
- 适用场景
- 当代理或部署脚本生成新凭据,而你希望它存入 Vaultwarden,又不愿把密钥粘贴到对话中,或给代理一个能读取现有密钥的保险库登录时使用。适合能运行独立可信导入器的自建 Vaultwarden 运维者。
- 运行要求
- 本地进程,需 Node.js 24.2 或更高版本,并以绝对路径指定私有生产者配置文件启动。还需按项目指南搭建运行中的 HTTPS 收件箱,以及持有 age 密钥和专用 Vaultwarden 账户的私有导入器;可选的远程 HTTP 模式需要现成的 OAuth 授权服务器、JWT 令牌及 deposits:write 和 deposits:status 权限范围。
安装
在 SourceWeft 中
- 打开 控制台中的 Vaultwarden Drop Slot,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
vaultwarden-drop-slot-mcp
MCP server, CLI and Node.js module for write-only credential deposits into a self-hosted Vaultwarden (Bitwarden-compatible) vault. AI agents such as Claude Code and Codex, and deployment scripts, can save new logins (passwords) and secure notes, encrypted with age before they reach the inbox, without a vault login that can read existing secrets.
TL;DR
Let an agent save a new password without giving it the keys to your vault.
An agent or deployment script creates a credential. You want it saved in Vaultwarden without pasting it into chat, copying it by hand, or giving that agent a vault login that can read existing passwords. This project provides a deposit-only path: encrypt the new item, hand it to an inbox, and receive a receipt. A separate trusted importer saves it as an ordinary login or secure note that you open with your existing Bitwarden clients.
- For agents: two MCP tools — deposit a secret and check its delivery status.
- For scripts: a stdin-based CLI and a typed Node.js module.
- For operators: portable Docker containers, your own Vaultwarden, and a dedicated importer account. No changes to Vaultwarden are required.
The restriction applies to the producer. The importer has vault access; keep its account and host private. Secrets included in AI tool arguments can still be seen by the AI provider. Use the CLI or Node module directly when a script can generate and deposit a secret without involving the model.
Release 0.1.0. Install from npm (npm install vaultwarden-drop-slot-mcp,
or run npx -y vaultwarden-drop-slot-mcp), from this repository, or from a
locally packed tarball. The MCP server is also listed in the
MCP Registry as
io.github.ip2k/vaultwarden-drop-slot-mcp. Containers are built locally. Original code is Apache-2.0. This is an independent project,
not affiliated with Bitwarden or Vaultwarden. See the
verification record for tested behavior and limits.
Start here: Setup walkthrough · MCP connections · Operations · Security design
From a new credential to your vault
The inbox cannot decrypt the payload. Only the private importer holds the age identity and the dedicated Bitwarden CLI session. The public API has no vault read, search, list, edit, or delete operations. Item URLs are stored as text; the service never fetches them.
How it fits together
The writer capability is create-only. The importer is trusted and can read everything its account can access. Use a dedicated automation account and a separate organization shared with your normal account. A folder or collection is not an independent cryptographic boundary. Personal-vault mode requires an explicit configuration opt-in.
An HTTP MCP adapter sees plaintext, as does an AI provider receiving those tool arguments. For secrets generated by a deployment script, pipe directly into the local CLI or call the Node module. No arbitrary file-path, URL-fetch, shell, read, search, edit, or delete tools exist.
Setup overview
Follow the complete setup walkthrough for copyable commands, file permissions, TLS, owner login, routing and a first test. It assumes a Linux Docker host with Compose v2 and an existing HTTPS Vaultwarden instance; the local client/module needs Node.js 24.2+. Image builds support amd64 and arm64; execution has been verified on amd64.
- Build from source. Clone this repository, run
npm ci --ignore-scripts,npm test, andnpm run build. Build the default runtime and optional importer images. The default image contains no Bitwarden CLI. - Create a private deployment directory. Generate enrollment material and split producer, inbox and importer files. Keep it outside the checkout.
- Configure TLS and start the inbox. Use certificates trusted by the clients and importer. Publish only the HTTPS intake port; the worker port stays private.
- Enroll a dedicated vault account. Create an organization and collection, invite the importer as a User, accept and confirm membership, and explicitly grant collection edit access. Log in from your private terminal.
- Set the destination and start the importer. Map the writer ID to the organization and collection UUIDs in private configuration.
- Test, then connect MCP. Deposit a synthetic item, wait for
imported, and open it in your normal Bitwarden client. Then follow the client-specific MCP instructions.
For a Node application, npm install vaultwarden-drop-slot-mcp. To use a
local build instead, run npm pack here and install the resulting .tgz with
npm install /absolute/path/vaultwarden-drop-slot-mcp-0.1.0.tgz.
What a receipt means
queued means accepted by the inbox; imported means privately verified in the
vault. A locked importer leaves work queued. Failures and ambiguous creates use
bounded retries and private reconciliation; see delivery limits.
Local MCP
After completing setup, configure your MCP client to launch the executable with a private producer config file. Use absolute paths; the paths below are examples. See MCP connections for Claude Code, Codex, desktop clients, Docker stdio and remote HTTP instructions:
Exactly two tools are available:
deposit_secret({request_id, payload}): queue a new login or secure note.deposit_status({receipt}): returnqueued,importing,imported, orfailed.
Use a fresh UUID for each new item. Reuse it only to retry the original item. The client retains the original encrypted envelope in its private spool; changed arguments with the same request ID do not create or overwrite anything. Retrying after a timeout therefore uses exactly the same ciphertext. Keep the spool until retries are no longer needed; it is bounded at 10,000 entries.
Tools return receipts only. Keep tokens in host configuration; never put them in prompts, tool arguments, or checked-in MCP settings.
CLI and Node module
The deposit command reads {request_id,payload} JSON from stdin. A secret
generator can pipe to it without putting the secret in shell arguments or a file:
The npm module exports a typed DepositClient, seal, fingerprint, validation
schemas, and protocol types. Example inside your own deployment program:
prepare() writes a ciphertext-only spool entry; submit() sends that exact
envelope. These are available separately for applications with their own retry
logic. URLs in payloads are stored as data and are never fetched.
Remote MCP
mcp-http remote.json serves stateless Streamable HTTP at /mcp over native
HTTPS. It requires an existing OAuth authorization server, audience-bound JWT
access tokens, expiry, client_id and sub claims, and both deposits:write and
deposits:status scopes. Configure issuer, JWKS URL, algorithm and approved
subject/client mappings; discovery is exposed at
/.well-known/oauth-protected-resource/mcp. No authorization server is built here.
See remote setup. Hosted assistants also need a reachable HTTPS endpoint and an OAuth provider/client-registration configuration they support. End-to-end hosted Claude/ChatGPT enrollment remains a separate check.
Delivery and operational limits
The queue and importer ledger use transactional SQLite in WAL mode with full synchronization. One logical importer/ledger per installation is supported. Idempotency is namespaced by writer and request UUID. Delivery is marked imported only after private verification in the vault.
There is no cross-system atomic transaction with Vaultwarden. A durable creation intent permits at most one automatic create attempt; ambiguous results are reconciled by a private encrypted marker. If the process dies between recording intent and sending the create, operator recovery is required. This deliberately prefers a visible failed/queued submission to silent duplicate creation. Do not claim universal exactly-once delivery.
Defaults: 100 new deposits per writer per UTC day, 100 pending per writer, 100,000 receipt tombstones per installation, five bounded delivery attempts, seven-day undelivered-ciphertext retention, and immediate ciphertext deletion after verified import. Locked vaults stay queued without consuming the retry budget, until retention expires. Token expiry/revocation takes effect on the next request. Successful receipts remain as compact idempotency tombstones.
Read the threat model, operations guide, OpenAPI contract, and dependency inventory.
来源:README.md,提交 ed74665
工具
0版本历史
1- v0.1.0最新Oct 15, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分
其他 Drop 集成
drop.media
media.drop官方发布者
在 drop.media 上托管文件与 AI 生成图片,并获取公开或带有效期的私有链接,通过受 OAuth 保护的远程端点使用。

DropTrax
由 GitHub 账号 liamsloane 发布
在DropTrax上查找、预览独立音乐人直接出售的歌曲并获取购买链接。AI 翻译

DropPerch domain expiry
由 GitHub 账号 webvoguetech 发布
通过RDAP从注册局实时检查域名到期、生命周期阶段、删除日期和SSL状态。AI 翻译

CrateDrop
由 GitHub 账号 snefhew 发布
按流派、风格、年代和国家随机挖掘 Discogs 唱片,每张都附有可播放的链接。AI 翻译

DROP
由 GitHub 账号 JulesNsenda 发布
DROP 是自托管的 PaaS,其 MCP 服务器让助手从文件或 git 部署应用、查看日志、检查状态并回滚。