mcpField
H
Holster MCP

Holster MCP

本地服务
nautaai.com安全021 周前更新

关于 Holster MCP

Holster MCP 将 Holster Doctor 安全检查提供给兼容 MCP 的 Agent,涵盖本地仓库扫描、凭据轮换指引,以及需授权的本地保险库和审计工具;仓库内容不会发送到网络服务。

主要功能

  1. 01扫描仓库中的密钥
  2. 02检查 .gitignore 安全规则
  3. 03提供凭据轮换步骤
  4. 04添加和轮换保险库密钥
  5. 05读取保险库审计事件

适用场景

  1. 01查找仓库中暴露的凭据
  2. 02检查密钥文件是否已忽略
  3. 03按服务商步骤轮换凭据
  4. 04在本地保险库中保存或审查凭据

MCP 相关

MCP 服务向兼容 MCP 的 Agent 暴露本地 Holster Doctor 检查和基于 Holster CLI 的保险库操作。免费工具在本地运行,不会将仓库内容发送到网络服务。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"com-nautaai-holster": {
"command": "uvx",
"args": [
"holster-mcp"
]
}
}
}
启动命令uvx holster-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiholster-mcp0.1.1

工具

6

收录的工具列表 · 更新于 2 周前

参数类型必填说明
pathstring是
depthinteger否

详细介绍

Holster MCP

Holster MCP 向兼容 MCP 的 Agent 提供本地 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:

  1. HOLSTER_DOCTOR_BIN
  2. 打包在 wheel 中的二进制文件 holster_mcp/bin/holster-doctor
  3. PATH 中的 holster-doctor
  4. 代码库本地的 target/release/holster-doctor
  5. 代码库本地的 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

首日构建的 wheel 适用于:

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

这些 wheel 包含对应平台的 holster-doctor 二进制文件,且有意不构建为通用版本。

付费工具

付费工具是围绕 holster-cli 的本地专用封装,并受 Holster 许可证限制。

许可证配置

许可证查找顺序:

  1. 传递给付费 MCP 工具的 license_key 参数
  2. HOLSTER_LICENSE_KEY
  3. ~/.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

如果未配置许可证,首次调用付费工具时会创建一个有效期为 7 天、前缀为 holster_trial_ 的本地试用密钥。

Vault 配置

Vault 路径查找顺序:

  1. 支持时使用显式工具参数
  2. HOLSTER_VAULT_PATH
  3. ~/.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 参数、日志或结构化错误输出中。

holster.vault_rotate

第 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 分钟刷新一次缓存的有效许可证。第 2 天不提供 webhook 接收器,V1 不含遥测功能。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。