密钥管理插件

一个为Claude Code和MCP客户端设计的密钥管理插件,提供用户批准的密钥注入、自动脱敏和密钥捕获功能。

  • by henghonglee
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 henghonglee/mcp-secrets

使用说明

克劳德秘密

用于Claude Code和MCP客户端的安全秘密管理插件。使AI助手能够通过用户批准、自动编辑和从命令输出中捕获秘密来安全地处理凭据。

特性

  • 秘密注射 -使用 {{SECRET_NAME}} 用于注入机密的命令中的占位符
  • 基于会话的权限 -用户批准每个会话的秘密访问,并基于时间到期
  • 输出纠正 -从输出中自动编辑已知的秘密和常见模式
  • 秘密抓捕 -从命令输出中提取秘密(例如AWS会话令牌)并存储以备将来使用
  • LLM友好元数据 -描述有助于未来的LLM发现和使用正确的秘密
  • MacOS菜单栏应用程序 -用于秘密请求的本地通知和对话框
  • 加密保险库 -使用Fernet加密存储的秘密

安装

单线安装(推荐)

curl -sSL https://raw.githubusercontent.com/henghonglee/claude-secrets/main/install.sh | bash

这会自动:

  • 通过pipx安装软件包
  • 创建加密保管库
  • 安装Claude Code插件
  • 启动菜单栏应用程序
  • 登录时启用自动启动

手动安装

pipx install git+https://github.com/henghonglee/claude-secrets.git
ccs init

来源

git clone https://github.com/henghonglee/claude-secrets.git
cd claude-secrets
pip install -e .
ccs init

快速开始

# Initialize vault + start menubar + enable auto-start on login
ccs init

# Add a secret with description (helps LLMs understand what it's for)
ccs add AWS_ACCESS_KEY

# Check status
ccs status

这 init 命令自动执行:

  • 创建加密保管库
  • 安装Claude Code插件(通过市场)
  • 启动菜单栏应用程序
  • 启用登录时自动启动(macOS)

仅安装插件(如果已安装claude secrets)

claude plugin marketplace add henghonglee/claude-secrets
claude plugin install claude-secrets@henghonglee-claude-secrets

Claude代码命令

当作为插件安装时:

命令 描述
/claude-secrets:list 列出所有可用的秘密
/claude-secrets:add [NAME] 添加新密码
/claude-secrets:run <command> 运行带有秘密注入的命令

MCP配置(非插件)

对于Claude Desktop或其他MCP客户端,请在配置中添加:

{
  "mcpServers": {
    "secrets": {
      "command": "ccs",
      "args": ["serve"]
    }
  }
}

MCP工具

run_command

执行带有秘密注入和输出编校的CLI命令。

{
  "command": "aws s3 ls --profile {{AWS_PROFILE}}",
  "timeout": 60,
  "capture": [
    {
      "path": "$.Credentials.SecretAccessKey",
      "name": "AWS_SESSION_SECRET",
      "description": "Temporary AWS secret key from STS. Use with AWS_SESSION_KEY_ID and AWS_SESSION_TOKEN.",
      "expires_at": "2024-01-24T12:00:00Z"
    }
  ]
}

参数:

  • command -命令与 {{SECRET_NAME}} 占位符
  • timeout -超时时间(秒)(默认值:60)
  • capture -从JSON输出中提取秘密:
    • path -JSONPath表达式(例如。, $.Credentials.SecretAccessKey)
    • name -已捕获秘密的名称
    • description -LLM友好描述
    • expires_at -ISO 8601过期时间戳
  • redact_patterns -要编辑的其他正则表达式模式
  • skip_builtin_patterns -跳过内置的编校模式

list_secrets

列出可用的秘密及其描述。

{
  "tag": "aws"
}

退货:

{
  "secrets": [
    {
      "name": "AWS_ACCESS_KEY",
      "description": "AWS access key for production account",
      "expires_at": null
    }
  ]
}

request_secret

通过菜单栏应用程序请求用户添加缺少的秘密。

{
  "name": "GITHUB_TOKEN",
  "description": "Personal access token for GitHub API. Needs repo and workflow scopes."
}

菜单栏应用程序将显示一个本地macOS对话框,提示用户输入密码值。

get_permissions

获取机密的当前会话权限状态。

运作原理

  1. 客户端LLM调用 list_secrets 发现可用的秘密
  2. LLM构造命令 和 {{SECRET_NAME}} 占位符
  3. 用户批准 提示时进行秘密访问(缓存用于会话)
  4. 服务器注入机密 并执行命令
  5. 输出已编辑 回到LLM之前
  6. 捕获的秘密 与LLM提供的描述一起存储,以备将来使用

菜单栏应用程序(macOS)

菜单栏应用程序提供:

  • 服务器状态指示器
  • 带有过期时间的存储机密列表
  • 用于秘密请求的本地对话框
  • 机密被捕获或过期时的通知

从以下内容开始:

claude-secrets-menubar

安全模型

  • 加密存储 -使用Fernet加密的保险库(AES-128-CBC)
  • 权限提示 -用户必须批准每个秘密的使用
  • 会话到期 -权限自动过期(默认值:1小时)
  • 输出编辑 -从命令输出中自动删除机密
  • 审核日志记录 -所有秘密访问记录到 ~/.claude-secrets/audit.log

卸载

单行卸载

curl -sSL https://raw.githubusercontent.com/henghonglee/claude-secrets/main/uninstall.sh | bash

手动卸载

ccs uninstall      # Stops menubar, removes plugin, keeps secrets
pipx uninstall claude-secrets

删除所有内容(包括机密)

ccs uninstall --delete-vault
pipx uninstall claude-secrets

默认情况下,您的机密将保留在 ~/.claude-secrets/ 因此,您可以稍后重新安装而不会丢失它们。

插件结构

claude-secrets/
├── .claude-plugin/
│   ├── plugin.json          # Plugin manifest
│   └── marketplace.json     # Marketplace manifest (for plugin distribution)
├── .mcp.json                 # MCP server configuration
├── skills/
│   └── secrets/
│       └── SKILL.md         # Teaches Claude when/how to use secrets
├── commands/
│   ├── list.md              # /claude-secrets:list command
│   ├── add.md               # /claude-secrets:add command
│   └── run.md               # /claude-secrets:run command
└── src/
    └── claude_secrets/      # Python package

配置

配置存储在 ~/.claude-secrets/config.json:

{
  "session_timeout": 3600
}

使用以下参数设置值:

ccs config set session_timeout 7200

发展

# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Run with coverage
pytest --cov=claude_secrets

# Test plugin locally
claude --plugin-dir ./

许可证

麻省理工学院