Holster MCP について
Holster MCPは、MCP対応エージェントにHolster Doctorのセキュリティチェックを提供します。ローカルリポジトリのスキャンや認証情報のローテーション案内に加え、ライセンス制のローカルVault・監査ツールを利用できます。リポジトリ内容はネットワークサービスへ送信されません。
主な機能
- 01リポジトリ内のシークレット検出
- 02.gitignoreの安全パターン確認
- 03認証情報のローテーション手順
- 04Vaultへのシークレット追加と更新
- 05Vaultの監査イベント確認
活用シーン
- 01リポジトリ内の認証情報漏えいを発見
- 02シークレットファイルの除外設定を確認
- 03プロバイダー別の認証情報更新手順を参照
- 04ローカルVaultで認証情報を保存・確認
MCP 対応
MCPサーバーは、ローカルのHolster DoctorチェックとHolster CLIによるVault操作を、MCP対応エージェント向けのツールとして公開します。無料ツールはローカルで動作し、リポジトリ内容をネットワークサービスへ送りません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
6掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | はい | |
| depth | integer | いいえ |
詳細
Holster MCP
Holster MCP は、MCP 対応エージェントにローカルの Holster Doctor チェックを提供します。このサーバーはローカル優先です。無料ツールは同梱の holster-doctor バイナリをシェル経由で実行し、リポジトリの内容をネットワークサービスに送信することはありません。
インストール
PyPI からインストールする場合:
pip install holster-mcp
開発用インストール:
cd /path/to/holster/mcp
python3.11 -m pip install -e '.[dev]'
実行コマンド:
holster-mcp
MCP クライアントの設定:
{
"mcpServers": {
"holster": {
"command": "uvx",
"args": ["holster-mcp"]
}
}
}
Vault と holster-cli リリースバイナリのインストールについては、Holster のメイン README を参照してください。
ライセンス:MCP パッケージは MIT ライセンスです。
バイナリの解決
サーバーは次の順序で holster-doctor を検索します。
HOLSTER_DOCTOR_BIN- パッケージ化された wheel のバイナリ
holster_mcp/bin/holster-doctor PATH上のholster-doctor- リポジトリ内の
target/release/holster-doctor - リポジトリ内の
target/debug/holster-doctor
無料ツール
holster.scan_repo
入力:
{"path": "/absolute/repo/path", "depth": 3}
出力:
{
"ok": true,
"scanned_files": 15,
"findings": [
{
"file": "src/main.py",
"line": 12,
"secret_kind": "openai_api_key",
"severity": "error",
"suggestion": "Rotate this key and move it into a local vault."
}
]
}
holster.check_gitignore
入力:
{"path": "/absolute/repo/path"}
出力:
{
"ok": true,
"missing_patterns": [".env.local"],
"existing_safe": [".env"],
"existing_unsafe": [],
"suggested_append": ".env.local\n*.pem"
}
holster.rotation_playbook
入力:
{"provider": "github"}
出力:
{
"ok": true,
"provider": "github",
"steps": ["Create a replacement token...", "Update local consumers...", "Revoke the old token..."],
"estimated_minutes": 15,
"warnings": ["Do not revoke the old credential until the replacement has been verified."]
}
プラットフォーム別 Wheel
Day 1 の wheel は次のプラットフォーム向けにビルドされています。
- macOS ARM(
aarch64-apple-darwin) - Linux x86_64(
x86_64-unknown-linux-gnu)
wheel には各プラットフォーム向けの holster-doctor バイナリがバンドルされており、ユニバーサル対応にはなっていません。
有料ツール
有料ツールは holster-cli のローカル専用ラッパーで、Holster ライセンスによって使用が制限されます。
ライセンス設定
ライセンスの検索順序:
- 有料 MCP ツールに渡された
license_key引数 HOLSTER_LICENSE_KEY~/.holster/config.toml
サポートされている config.toml の形式:
license_key = "holster_live_ABCDEFGHIJKLMNOPQRSTUVWX"
vault_path = "/absolute/path/to/holster-vault.db"
または:
[license]
key = "holster_live_ABCDEFGHIJKLMNOPQRSTUVWX"
[vault]
path = "/absolute/path/to/holster-vault.db"
ライセンスキャッシュ:
~/.holster/licenses.db
ライセンスが設定されていない場合、最初の有料ツール呼び出し時に、プレフィックスが holster_trial_ のローカル 7 日間トライアルキーが作成されます。
Vault の設定
Vault パスの検索順序:
- 対応している場合は、ツールに明示的に渡された引数
HOLSTER_VAULT_PATH~/.holster/config.toml
holster.vault_add
入力:
{
"provider": "github",
"account": "nauta-ai",
"secret": "user-pasted-secret",
"label": "primary"
}
出力:
{"ok": true, "vault_entry_id": "123e4567-e89b-12d3-a456-426614174000", "error": null}
シークレットの値が CLI の argv、ログ、構造化エラー出力に含まれることはありません。
holster.vault_rotate
Day 2 では github と stripe をサポートしています。
new_secret が指定されていない場合、ツールはプロバイダーのプレイブックを返し、人間が置き換え用の値をローテーションして貼り付けるのを待ちます。
{
"provider": "github",
"account": "nauta-ai",
"vault_entry_id": "old-id"
}
new_secret が指定されている場合、置き換え用の値がローカル Vault に追加され、インストール済みの CLI がそのコマンドをサポートしていれば、古いエントリーは置き換え済みとしてマークされます。
holster.audit_log
入力:
{"provider": "github", "account": "nauta-ai", "since_days": 30}
出力:
{"ok": true, "events": [{"ts": "...", "action": "add", "provider": "github", "account": "nauta-ai", "ok": true}]}
ライセンスアーキテクチャ
flowchart TD
A["Paid MCP tool call"] --> B["Resolve license key from arg/env/config"]
B --> C{"Key present?"}
C -- "No" --> D["Create local 7-day trial in ~/.holster/licenses.db"]
C -- "Yes" --> E["Read ~/.holster/licenses.db"]
D --> F{"Trial valid?"}
E --> G{"Cached license valid?"}
G -- "Valid" --> H["Dispatch paid tool"]
G -- "Expired but within 7-day grace" --> I["Dispatch with license_warning"]
G -- "Missing/stale live key" --> J["Stripe refresh: Customer.retrieve + Subscription.list"]
J -- "Active" --> K["Update cache valid_until + last_checked"]
J -- "Inactive/error/no API key" --> L["Return license_required_or_expired"]
F -- "Valid" --> H
F -- "Expired" --> L
K --> H
I --> H
H --> M["Local holster-cli subprocess"]
バックグラウンドポーラーは、有料ツールによる検証後、キャッシュされた有効なライセンスを 10 分ごとに更新します。Day 2 には Webhook レシーバーはなく、V1 ではテレメトリーもありません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。