Holster MCP

com.nautaai由 nautaai.com 發布v0.1.1更新於 Oct 24, 2026

Local-first secret scanning, rotation, vault, and audit-log tools for AI agents.

已驗證STDIO僅桌面開發者工具安全與監控

概覽

AI 產生的概覽

本地優先的 MCP 伺服器,讓 AI 助理掃描程式碼庫中的密鑰、檢查 gitignore 覆蓋、取得輪換手冊並管理本機憑證庫。

可以做什麼
掃描指定儲存庫路徑中外洩的密鑰,回報檔案、行號、密鑰類型與嚴重程度,並可限制掃描深度。檢查儲存庫 gitignore 中缺少或不安全的樣式,並提供建議追加內容。取得依服務商區分的憑證輪換手冊,包含步驟、預估時間與警告。將密鑰加入本機保險庫,並為支援的服務商輪換保險庫項目,舊項目會標記為已取代。依服務商、帳號與時間範圍查詢本機保險庫操作的稽核日誌。
適用情境
適合讓助理在提交或發布前稽核程式碼庫中外洩的憑證、收緊 gitignore 規則,或在密鑰外洩後依步驟完成輪換,同時把密鑰保存在本機保險庫而非聊天記錄或命令歷史中。
執行需求
以本機程序在使用者機器上執行,從 PyPI 安裝 holster-mcp,並以 holster-mcp 指令或透過 uvx 啟動。需要隨套件附帶或可找到的 holster-doctor 二進位檔;平台 wheel 僅提供 macOS ARM 與 Linux x86_64。付費的保險庫與稽核工具需要 Holster 授權,並透過參數、HOLSTER_VAULT_PATH 或設定檔指定本機保險庫。
安裝前請注意
保險庫工具以工具輸入形式接收密鑰值,貼上的憑證會經過助理對話;README 稱密鑰值不會進入命令列參數、日誌或結構化錯誤輸出,但使用前請自行確認。保險庫與稽核工具為付費功能,需要授權。保險庫操作會寫入並取代本機保險庫中的項目。免費掃描工具據稱僅在本機執行,不會把儲存庫內容傳送到網路服務。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Holster MCP,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Holster MCP

Holster MCP exposes local Holster Doctor checks to MCP-compatible agents. The server is local-first: free tools shell out to the bundled holster-doctor binary and never send repository contents to a network service.

Install

From PyPI:

bash
pip install holster-mcp

Development install:

bash
cd /path/to/holster/mcppython3.11 -m pip install -e '.[dev]'

Runtime command:

bash
holster-mcp

MCP client config:

json
{  "mcpServers": {    "holster": {      "command": "uvx",      "args": ["holster-mcp"]    }  }}

See the main Holster README for vault and holster-cli release binary installation.

License: MIT for the MCP package.

Binary Resolution

The server locates holster-doctor in this order:

  1. HOLSTER_DOCTOR_BIN
  2. Packaged wheel binary at holster_mcp/bin/holster-doctor
  3. holster-doctor on PATH
  4. Repo-local target/release/holster-doctor
  5. Repo-local target/debug/holster-doctor

Free Tools

holster.scan_repo

Input:

json
{"path": "/absolute/repo/path", "depth": 3}

Output:

json
{  "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

Input:

json
{"path": "/absolute/repo/path"}

Output:

json
{  "ok": true,  "missing_patterns": [".env.local"],  "existing_safe": [".env"],  "existing_unsafe": [],  "suggested_append": ".env.local\n*.pem"}

holster.rotation_playbook

Input:

json
{"provider": "github"}

Output:

json
{  "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."]}

Platform Wheels

Day 1 wheels are built for:

  • macOS ARM (aarch64-apple-darwin)
  • Linux x86_64 (x86_64-unknown-linux-gnu)

The wheels bundle the platform's holster-doctor binary and are intentionally not universal.

Paid Tools

Paid tools are local-only wrappers around holster-cli and are gated by a Holster license.

License Configuration

License lookup order:

  1. license_key argument passed to a paid MCP tool
  2. HOLSTER_LICENSE_KEY
  3. ~/.holster/config.toml

Supported config.toml shapes:

toml
license_key = "holster_live_ABCDEFGHIJKLMNOPQRSTUVWX"vault_path = "/absolute/path/to/holster-vault.db"

or:

toml
[license]key = "holster_live_ABCDEFGHIJKLMNOPQRSTUVWX"
[vault]path = "/absolute/path/to/holster-vault.db"

License cache:

text
~/.holster/licenses.db

If no license is configured, the first paid-tool call creates a local 7-day trial key with prefix holster_trial_.

Vault Configuration

Vault path lookup order:

  1. explicit tool argument where supported
  2. HOLSTER_VAULT_PATH
  3. ~/.holster/config.toml

holster.vault_add

Input:

json
{  "provider": "github",  "account": "nauta-ai",  "secret": "user-pasted-secret",  "label": "primary"}

Output:

json
{"ok": true, "vault_entry_id": "123e4567-e89b-12d3-a456-426614174000", "error": null}

The secret value is never placed in CLI argv, logs, or structured error output.

holster.vault_rotate

Day 2 supports github and stripe.

Without new_secret, the tool returns the provider playbook and waits for the human to rotate/paste the replacement:

json
{  "provider": "github",  "account": "nauta-ai",  "vault_entry_id": "old-id"}

With new_secret, the replacement is added to the local vault and the old entry is marked superseded when the installed CLI supports that command.

holster.audit_log

Input:

json
{"provider": "github", "account": "nauta-ai", "since_days": 30}

Output:

json
{"ok": true, "events": [{"ts": "...", "action": "add", "provider": "github", "account": "nauta-ai", "ok": true}]}

License Architecture

mermaid
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"]

The background poller refreshes cached live licenses every 10 minutes after a paid tool validates. There is no webhook receiver in Day 2 and no telemetry in V1.

來源:mcp/README.md,提交 bd70dbf

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.1最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分