veracrypt-mcp について
veracrypt-mcpは、MCPクライアントでVeraCryptボリュームをマウント、アンマウントし、通常のファイルツールで中のファイルを扱えるようにします。パスワードはstdin経由でVeraCryptに渡してコマンドラインへの露出を避け、OSのキーリングにも対応してモデルのコンテキストから隔離します。
主な機能
- 01コンテナのマウントとアンマウント
- 02マウント済みボリュームの一覧
- 03読み取り専用マウントと任意のマウント先
- 04OSキーリングからのパスワード取得
- 05キーファイルと対話型アンロックコマンド
活用シーン
- 01設定済みのボルトをマウントしてファイルを編集
- 02指定パスにボリュームを読み取り専用でマウント
- 03マウント中のボリュームを確認
- 04キーファイルまたはハードウェアトークン用コマンドでロック解除
MCP 対応
stdio経由で、VeraCryptボリュームのマウント、アンマウント、一覧表示ツールをMCPクライアントに公開します。マウント後のファイルは、クライアントの通常のファイルツールで操作できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
veracrypt-mcp
セキュリティを最優先したパスワード処理を行う、VeraCrypt コンテナのマウントとアンマウント用 MCP(Model Context Protocol)サーバーです。
コンテナをマウントすると、MCP クライアント(例:Claude Code)は通常のファイルツールを使って、その中のファイルを読み取ったり編集したりできます。「保管庫をマウントして」と言ってファイルを操作し、その後「保管庫をアンマウントして」と言うだけです。
mcp-name: io.github.bitterdev/veracrypt-mcp
特長
- mount_container:VeraCrypt コンテナをマウントします(マウントポイント、PIM、読み取り専用、キーファイルを指定可能)
- unmount_container:コンテナパスまたはマウントポイントを指定してアンマウントします
- list_mounted_containers:マウントされている VeraCrypt ボリュームをすべて表示します
- デフォルトの保管庫:環境変数でコンテナを一度設定すれば、「保管庫をマウントして」と言うだけで引数なしで実行できます
セキュリティモデル
ボリュームのパスワードがコマンドライン引数として渡されることはありません。コマンドライン引数はマシン上のすべてのプロセスから参照できるため(ps aux)、このサーバーは常に VeraCrypt の公式オプション --stdin を使い、標準入力経由で VeraCrypt にパスワードを渡します。
パスワードの取得元は 2 つあります。
1. OS キーチェーン(推奨)
OS キーチェーンにパスワードを一度保存します。MCP ツールが受け取るのはキーチェーンのアカウント名のみなので、パスワードが LLM のコンテキスト、チャットログ、文字起こしに入ることはありません。
macOS(キーチェーン):
security add-generic-password -s veracrypt-mcp -a my-container -w
# you will be prompted for the password interactively
Linux(libsecret / GNOME Keyring。libsecret-tools が必要です):
secret-tool store --label="veracrypt-mcp my-container" service veracrypt-mcp account my-container
その後、keychain_account: "my-container" を指定してマウントします。
2. パスワードを直接指定する(代替手段)
password をツールに直接渡すこともできます。この場合も標準入力経由で VeraCrypt に渡されるため、プロセス一覧には表示されませんが、LLM との会話を通過するため、チャットログに保存される可能性があります。可能な限りキーチェーンを使用してください。
3. キーファイルとハードウェアトークン
keyfiles(またはカンマ区切りの VERACRYPT_MCP_KEYFILES)は VeraCrypt の -k に対応し、空のパスワードでも使用できます。キーファイルが見つからない場合、ツールはほかの認証情報を試すのではなく、Key nicht freigegeben と応答します。デフォルトのキーファイルが設定され、キーチェーンアカウントも設定されている場合、キーファイルが見つからなければキーチェーンのパスワードを一度だけ試します(ボリュームがまだ古いパスワードを使用している場合に便利です)。VeraCrypt がそのパスワードを拒否した場合、再び Key nicht freigegeben と応答します。
ユーザーがハードウェアトークン(PIN を使う YubiKey など)をロック解除した後にのみ存在するキーファイルを使う場合は、VERACRYPT_MCP_UNLOCK_COMMAND を設定します。認証情報が渡されていないとき、ツールはこのコマンドを --interaktiv 付きで実行します。このコマンドはユーザーに入力を求め、ボリュームをマウントし、キーが解放されなかった場合はゼロ以外の終了コードを返します。キャッシュは行われないため、マウントのたびにユーザーの入力が必要です。
補足:
- パスワードがログに記録されたり、ツールの結果やエラーメッセージに含まれたりすることはありません。
- Python ではメモリ上の文字列を安全に消去できません。最大限のセキュリティを確保するには、キーチェーンを使い、専用のコンテナパスワードを設定してください。
要件
- Python >= 3.10
- VeraCrypt のコマンドラインバイナリが利用可能であること(
veracryptが PATH 上にある、macOS アプリバンドルを使う、またはVERACRYPT_PATHを設定する) - macOS:VeraCrypt によるマウントに必要な macFUSE
- Linux のキーチェーン利用:
libsecret-tools(secret-tool)
インストール
pip install git+https://github.com/bitterdev/veracrypt-mcp.git
または、ローカルクローンから:
git clone https://github.com/bitterdev/veracrypt-mcp.git
cd veracrypt-mcp
pip install .
設定
Claude Code
claude mcp add veracrypt -- veracrypt-mcp
デフォルトの保管庫を設定する場合(推奨):
claude mcp add veracrypt \
-e VERACRYPT_MCP_CONTAINER="/path/to/vault.hc" \
-e VERACRYPT_MCP_KEYCHAIN_ACCOUNT="my-vault" \
-- veracrypt-mcp
Claude Desktop / 汎用 MCP クライアント
{
"mcpServers": {
"veracrypt": {
"command": "veracrypt-mcp",
"env": {
"VERACRYPT_MCP_CONTAINER": "/path/to/vault.hc",
"VERACRYPT_MCP_KEYCHAIN_ACCOUNT": "my-vault"
}
}
}
}
サーバーは stdio 経由で実行されます。
使用例
デフォルトの保管庫を設定している場合:
保管庫をマウントして
保管庫をアンマウントして
デフォルトを使わずに明示的に指定する場合:
キーチェーンアカウント「my-container」を使って、コンテナ /Users/me/secret.hc をマウントして
特定のマウントポイントに読み取り専用でマウントする場合:
キーチェーンアカウント「my-container」を使って、/Users/me/secret.hc を ~/mnt/secret に読み取り専用でマウントして
環境変数
| 変数 | 説明 |
|---|---|
VERACRYPT_MCP_CONTAINER | container_path が指定されていない場合に使用するデフォルトのコンテナパス |
VERACRYPT_MCP_KEYCHAIN_ACCOUNT | パスワードソースが指定されていない場合に使用するデフォルトのキーチェーンアカウント |
VERACRYPT_MCP_MOUNT_POINT | デフォルトのマウントディレクトリ(指定しない場合、VeraCrypt が自動で選択します) |
VERACRYPT_MCP_KEYFILES | デフォルトのキーファイルパス(カンマまたは改行で区切ります) |
VERACRYPT_MCP_UNLOCK_COMMAND | 対話型のロック解除コマンド。--interaktiv を引数として呼び出します |
VERACRYPT_PATH | VeraCrypt のバイナリが PATH 上にない場合に指定する絶対パス |
テスト
python -m unittest discover -s tests
テストでは一時的なコンテナを作成するため、VeraCrypt CLI が必要です。
ライセンス
MIT。詳細は LICENSE を参照してください。
作者
Fabian Bitter ([email protected])
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。