mcpField
W
Wundervault MCP

Wundervault MCP

ローカル
wundervault.com開発ツール21 日前に更新

Wundervault MCP について

Wundervault MCPは、秘密情報の平文をエージェントのコンテキストに渡さずに、AIエージェントからVaultを操作できるようにします。ローカルデーモンが復号した秘密情報をサブプロセスに注入し、出力を除去して返します。

主な機能

  1. 01値を含めずVault項目を一覧表示
  2. 02秘密情報をコマンド環境に注入
  3. 03許可された設定ファイルに秘密情報を書き込み
  4. 04Vaultの鍵でSSHコマンドとrsyncを実行
  5. 05アクセス階層と人による承認

活用シーン

  1. 01Vault内の認証情報でデプロイを実行
  2. 02認証情報をプロジェクト設定に書き込み
  3. 03SSH経由でリモートホスト上のコマンドを実行
  4. 04Vault内のSSH鍵でディレクトリを同期

MCP 対応

stdio MCPサーバーは、Vaultの一覧、取得、注入、実行、転送ツールをMCPクライアントに提供します。ローカルデーモンが秘密情報を復号して受け渡し、平文はエージェントに返しません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"wundervault": {
"command": "npx",
"args": [
"-y",
"@wundervault/mcp-server"
],
"env": {
"WUNDERVAULT_AGENT_NAME": "<WUNDERVAULT_AGENT_NAME>",
"WUNDERVAULT_AGENT_TOKEN": "<WUNDERVAULT_AGENT_TOKEN>"
}
}
}
}
起動コマンドnpx -y @wundervault/mcp-server
設定が必要な環境変数
WUNDERVAULT_AGENT_NAMEThe agent's name, as added in your vault and enrolled on this computer with wundervault-agent --enrol.
WUNDERVAULT_AGENT_TOKENシークレットOptional. Overrides the token that wundervault-agent --enrol saved for this agent.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@wundervault/mcp-server2.1.0

ツール

1

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

@wundervault/mcp-server

npm version MCP Registry License: AGPL-3.0 Follow @wundervault1

AI エージェントのためのゼロ知識シークレット保管庫です。 エージェントとのチャットや .env ファイルに貼り付けた API キーは、すべてコンテキストウィンドウ、トランスクリプト、プロバイダーログに残ります。Wundervault の解決策は、エージェントにシークレットを一切渡さないことです。エージェントは「キーを注入してこのデプロイを実行して」のように、作業を依頼します。するとローカルデーモンがシークレットを復号し、サブプロセスの環境に注入して、バッファをゼロ化し、エージェントに出力が渡る前にその内容を消去します。

このリポジトリは、あらゆる Model Context Protocol クライアント(Claude Code、Cursor、Cline など)にこのワークフローを提供する MCP サーバーです。

主張を鵜呑みにせず、テストしてください。 ゼロ知識の特性は、ご自身のネットワーク境界で約 5 分あれば独立して検証できます(ブラウザーの DevTools または mitmproxy のカナリアテストを利用)。ガイドと当方のテストトランスクリプトはこちらです:wundervault.com/verify。

仕組み

┌──────────────┐  MCP (stdio)  ┌───────────────────┐  ciphertext only  ┌───────────────────┐
│   AI agent   │──────────────▶│  wundervault-mcp  │◀─────────────────▶│  wundervault.com  │
│ (Claude, …)  │◀──────────────│  + local daemon   │                   │ stores encrypted  │
└──────────────┘ "burned" ack  │  decrypts HERE    │                   │ blobs, no keys    │
                               └─────────┬─────────┘                   └───────────────────┘
                                         │  secret → subprocess env
                                         │  (buffer zeroed after spawn)
                                         ▼
                               ┌───────────────────┐
                               │   your command    │ stdout/stderr scrubbed
                               │ (deploy, API, …)  │ before the agent sees it
                               └───────────────────┘

シークレットはアップロード前にクライアント側で Web Crypto を介して AES-256-GCM で暗号化されます。ホスト型サービスに保存されるのは暗号文のみで、鍵、パスフレーズ、平文を導き出すことはできません。

インストール

npm install -g @wundervault/mcp-server

クイックスタート

{
  "mcpServers": {
    "wundervault": {
      "command": "wundervault-mcp",
      "env": {
        "WUNDERVAULT_AGENT_NAME": "<agent-name>"
      }
    }
  }
}

キーが MCP 設定に記載されることはありません。サーバーはエージェント名を指定し、そのエージェントの認証情報をローカルの wundervault-agent デーモンに Unix ソケット経由で要求します。 onboard.py はエージェントを登録し、デーモンを起動します。

新規アカウントを作成しますか?wundervault.com では、この設定を生成する 90 秒のエージェントオンボーディングフローを利用できます。

対応プラットフォーム

検証済みのプラットフォームは Linux です。 macOS ではシークレットを受け渡せますが、Windows は対応していません。

受け渡しは設計上 POSIX 専用です。sudo のレシピでは /bin/sh を介してパイプ処理し、git/ssh-passphrase のレシピでは mkfifo と setsid が必要です。Windows では、これらの仕組みは深い箇所で失敗するのではなく、明確な「未対応」エラーを返します。

単一インスタンスロックには 2 つの実装があります。Linux ではカーネルが保持する抽象ソケットを使用し、それ以外ではループバックポートを使用します。テストでカバーされているのは Linux の実装のみです。macOS で未検証の内容とその理由については、HANDOFF-lock-on-non-linux.md を参照してください。CI では両方のプラットフォームで実行しますが、ロックのテストスイートは Linux で実行します。

セキュリティモデル

  • ゼロ知識: 暗号化キーは MCP サーバーのプロセス内にのみ存在します。Wundervault サーバーがキーを参照することはありません。
  • 読み取り後に消去: 平文のシークレットが呼び出し元のエージェントに返されることはありません。復号後、エージェントに返されるのは "Secret retrieved and burned." のみです。
  • 実行時の出力消去: コマンドの stdout/stderr は、返される前に平文を含まないよう消去されます。シェルのエスケープパターン($()、バッククォート、sh -c、eval)およびシークレットをファイルにリダイレクトする処理は、復号前に拒否されます。
  • ディレクティブの完全性: サーバー側のディレクティブ署名(PBKDF2-HMAC-SHA256、600k 回の反復)は、シークレットを解放する前に検証されます。
  • タイミングセーフ: HMAC の比較には crypto.timingSafeEqual を使用します。
  • 階層型アクセス: エントリごとのアクセス階層はサーバー側で適用されます。高階層のシークレットをエージェントが使用するには、事前に人間の承認が必要です。
誠実にお伝えする制限事項
  • このプラットフォームはオープンコアです。この MCP サーバーとブラウザー暗号化ライブラリは AGPL-3.0 で公開されているため、秘密情報に触れるすべての部分を監査できますが、ホスト型サービス自体はオープンソースではありません。
  • エージェントのそばでローカルデーモンを実行する必要があります。完全なエアギャップ環境には対応していません。
  • 設計上、エージェントが秘密情報の値を読み取ることは決してできません。ワークフローでモデルに秘密情報そのものについて推論させる必要がある場合、この設計は適していません。

ツール

vault_entries_list

このエージェントが利用できるすべての保管庫エントリを一覧表示します。エントリ ID と秘密情報の名前を返します。値は返しません。

Input: {}
Output: "Vault entries (N):\n  [entry_id]  secret_name  (tier: read)"
vault_entry_get

保管庫の秘密情報を取得して復号します。任意で、その秘密情報を使ってコマンドを実行できます。

Input:
  entry_id: string          # from vault_entries_list
  purpose: string           # audit log reason
  exec?: string             # optional shell command

Output: "Secret retrieved and burned." (plaintext NEVER returned)

セキュアな実行パターン(sudo の例):

sudo -S systemctl restart nginx <<< "$WUNDERVault_SECRET"

echo $WUNDERVault_SECRET | sudo -S は使用しないでください。プロセスログに秘密情報が露出します。

vault_exec

保管庫の秘密情報を環境変数として注入して、ローカルまたは SSH 経由のリモートホストでシェルコマンドを実行します。秘密情報はサブプロセスに注入され、起動直後にバッファーがゼロクリアされます。復号前にエスケープパターンは拒否されます。

Input:
  purpose: string           # audit log reason
  command: string           # full shell command (no escape patterns)
  entry_id?: string         # secret to inject (omit for SSH-key-only remote exec)
  working_dir?: string
  inject_as?: { env_key, pre_command?, post_command? }   # override entry's exec_config
  remote_host?: { host, user, ssh_key_entry_id? | ssh_key? }

remote_host.ssh_key_entry_id を指定すると、SSH キーは保管庫から取得され、ディスクに書き込まれることなく使用されます。

vault_entry_inject_env

エージェントを経由して平文が渡ることなく、保管庫の秘密情報を設定ファイル(~/.npmrc、~/.netrc、~/.docker/config.json、またはプロジェクトの .env)に直接書き込みます。

Input:
  entry_id: string
  purpose: string
  file_path: string         # allowed config file paths only
  env_key: string           # variable name to set
vault_rsync

SSH 経由で rsync を使用して、ローカルディレクトリをリモートホストに同期します。SSH キーは保管庫から取得されます(一時キーファイルは転送直後に削除されます)。

vault_entry_forget

ローカルの参照を破棄します。サーバー上では何もしません。

Input: { entry_id: string }
Output: "Reference [id] discarded from local context."

認証情報

MCP サーバーは独自のキーを保持せず、コマンドラインからキーを受け取ることもありません。最初のツール呼び出し時に、次のように認証情報を解決します。

  1. WUNDERVAULT_AGENT_NAME(必須)で、このプロセスがどの登録済みエージェントであるかを指定します。
  2. エージェントトークンは WUNDERVAULT_AGENT_TOKEN から読み取られるか、~/.wundervault/agents/<name>.token から読み取られます。
  3. トークンは ~/.wundervault/agents/<name>.sock 経由でローカルデーモンに提示され、デーモンから API キー、暗号化キー、保管庫の URL が返されます。

デーモンが実行されていない場合、より安全性の低い情報源にフォールバックせず、ツール呼び出しは手順を示すメッセージとともに失敗します。onboard.py を実行してエージェントを登録し、デーモンを起動してください。

CLI オプション

wundervault-mcp [options]

  --url <url>   API base URL override (default: supplied by the daemon)
  --help        Show help

--api-key、--enc-key、--credentials フラグはありません。不明なオプションは拒否されます。

エージェントのウォレット(x402)

x402 の支払いは単なる署名であり、ウォレットキーは他の秘密情報と同様、保管庫に保存できます。キーをtier 2に保存し、エージェントに vault_exec 経由で支払いペイロードに署名させると、キーはローカルの署名用サブプロセスに注入されます。モデルのコンテキストに入ることはなく、使用するたびに所有者の承認が必要です(エージェントによる拒否された呼び出しにはリクエスト ID が含まれます。承認はそのエージェントと秘密情報に限定され、1 回のみ、または 15 分/60 分間有効です)。Base Sepolia でエンドツーエンドの動作を確認済みです。検証済みの実行内容は wundervault.com/agent-wallets で公開されています。支払い固有のポリシー(支出上限、支払先の許可リスト)はまだ実装されていません。互換性はありますが、製品化はされていません。

サンドボックス/デモモード

WUNDERVAULT_MOCK=1 を設定すると、wundervault-agent デーモンや認証情報なしでサーバーを実行できます。このモードでは、すべてのツール呼び出しが保管庫に接続する代わりに、[DEMO MODE] と明記された代表的な応答を返します。実際の秘密情報が使われることは一切ありません。これは、アカウントなしでツールのインターフェースを試せるようにするため、また MCP ディレクトリのスキャナーや CI(例:Glama)がサーバーを起動して各ツールを実行し、実際の保管庫を使わずにビルドを検証できるようにするためのモードです。デフォルトでは無効であり、本番環境で有効になることはありません。

"env": { "WUNDERVAULT_MOCK": "1" }   // demo/CI only — returns fake, labelled output

ソースからビルドする

git clone https://github.com/wundervault/wundervault-mcp.git
cd wundervault-mcp
npm install
npm run build   # compiles TypeScript to dist/
npm test        # run the test suite

最新情報

リリース情報、セキュリティに関するお知らせ、製品に関する投稿は、X の @wundervault1 で公開しています。リリース履歴の全文は、wundervault.com/changelogをご覧ください。

ライセンス

GNU Affero General Public License v3.0 or later(AGPL-3.0-or-later)のもとでライセンスされています。LICENSEをご覧ください。

Wundervault はオープンコアです。この MCP サーバーとクライアントはオープンソースで、wundervault.comのホステッドサービスは商用サービスです。商用利用やホスティングに関するお問い合わせは、wundervault.com/contactからご連絡ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。