sql-explain
分析SQL查询执行计划并提供优化建议,支持PostgreSQL/MySQL/SQLite。
下载 518
防止API密钥被发送到Claude服务器的本地MCP安全插件。
openclaw skills install @domjeff/key-guard命令、参数、文件名以原文为准
一个安全技能,确保 API 密钥保留在本地,绝不会发送给 Claude。
当用户想要进行以下操作时激活:
.env、*.key、secrets.* 或任何凭据文件.sh、.bash、curl 命令、配置文件).env 或密钥文件** —— 不要使用 bash 的 cat .env 或文件读取工具读取任何包含密钥的文件read_file_maskedkey-guard MCP 服务器** 处理任何与密钥相关的事务key-guard MCP 服务器提供五个工具:
list_keys列出所有可用的密钥名称 —— 绝不显示值。
调用:list_keys()
返回:{ keys: ["KEY_A", "KEY_B", "KEY_C"] }validate_key检查密钥是否已配置,但不直接看到它。
调用:validate_key({ key_name: "OPENAI_API_KEY" })
返回:{ exists: true, length: 51, preview: "sk-a****", message: "Key is set" }call_api在本地发出经过身份验证的 HTTP 请求。密钥由 MCP 服务器注入 —— Claude 只看到 API 响应。
调用:call_api({
key_name: "OPENAI_API_KEY",
url: "https://api.openai.com/v1/models",
method: "GET"
})
返回:{ status: 200, data: { ... API 响应 ... } }read_file_masked读取脚本或配置文件,所有密钥值替换为 {{KEY_NAME}} 占位符。使用此工具代替直接读取文件。
调用:read_file_masked({ file_path: "./call.sh" })
返回:{
content: "curl -H 'Authorization: Bearer {{OPENAI_API_KEY}}' https://..."
}现在你可以安全查看非密钥部分并提出修改建议。
write_file_with_keys编辑后写回文件,其中的 {{KEY_NAME}} 占位符在本地替换为真实的密钥值。
调用:write_file_with_keys({
file_path: "./call.sh",
content: "curl -H 'Authorization: Bearer {{OPENAI_API_KEY}}' https://api.openai.com/v1/chat/completions ..."
})
返回:{ success: true, message: "File written with keys substituted locally" }如果 MCP 服务器尚未注册:
# 克隆仓库
git clone https://github.com/your-username/key-guard.git
# 复制 .env.example 为 .env 并填入你的密钥
cp .env.example .env
# 注册 MCP 服务器(仅需运行一次)— 将路径替换为你实际的克隆位置
/mcp add key-guard node /path/to/key-guard/key-guard.js
# 或者直接添加到 ~/.copilot/mcp-config.json 以便重启后自动加载:
# {
# "mcpServers": {
# "key-guard": {
# "command": "node",
# "args": ["/path/to/key-guard/key-guard.js"]
# }
# }
# }1. 调用 validate_key({ key_name: "OPENAI_API_KEY" })
2. 报告结果:“您的密钥已设置(51 个字符,以 sk-a**** 开头)”1. 调用 call_api({
key_name: "OPENAI_API_KEY",
url: "https://api.openai.com/v1/chat/completions",
method: "POST",
body: { model: "gpt-4o-mini", messages: [...] }
})
2. 使用返回的响应 —— 绝不使用密钥本身绝对不要直接读取 .env。
改为:对每个预期密钥名称调用 validate_key,然后显示:
- 哪些密钥已配置
- 大致长度(作为合理性检查)
绝不显示实际值。1. 调用 read_file_masked({ file_path: "./call.sh" })
→ Claude 看到 "curl -H 'Authorization: Bearer {{OPENAI_API_KEY}}' ..."
2. 对非密钥部分进行所请求的修改
3. 调用 write_file_with_keys({ file_path: "./call.sh", content: "<编辑后的内容,{{OPENAI_API_KEY}} 仍然保留>" })
→ MCP 在写入磁盘前将占位符替换为真实密钥已收录 1 个 Skill