mcp秘密包装
从中提取MCP服务器凭据的薄壳包装器 GCP秘密经理 在运行时——所以没有秘密存在 settings.json, .claude.json, .bashrc,或磁盘上的任何文件。
为什么
克劳德代码MCP服务器配置(in ~/.claude/settings.json 或 ~/.claude.json)需要将凭据作为环境变量传递。最简单的方法是将它们硬编码为内联:
{
"mcpServers": {
"my-service": {
"command": "/usr/local/bin/my-mcp-server",
"env": {
"MY_API_TOKEN": "sk-hardcoded-secret-here" ← bad
}
}
}
}此仓库用一个包装器脚本替换了它,该脚本在启动时从GCP secret Manager获取密钥:
{
"mcpServers": {
"my-service": {
"command": "/home/you/.local/bin/mcp-my-service-wrapper.sh"
}
}
}______________________________________________________________________
包括包装材料
| 包装器 | MCP服务器 | 机密 |
|---|---|---|
wrappers/asana.sh | @roychri/mcp-server-asana | asana-pat |
wrappers/google-workspace.sh | google-workspace-mcp | google-workspace-client-id, google-workspace-client-secret |
______________________________________________________________________
安装
1.克隆仓库
cd ~/Dev/workspaces
git clone mcp-secret-wrappers
cd mcp-secret-wrappers2.将您的秘密存储在GCP秘密管理器中
# Asana Personal Access Token
echo -n "your-asana-pat" | gcloud secrets create asana-pat \
--data-file=- --project=YOUR_PROJECT_ID
# Google Workspace OAuth credentials
echo -n "your-client-id" | gcloud secrets create google-workspace-client-id \
--data-file=- --project=YOUR_PROJECT_ID
echo -n "your-client-secret" | gcloud secrets create google-workspace-client-secret \
--data-file=- --project=YOUR_PROJECT_ID3.更新每个包装器中的GCP项目ID
编辑 wrappers/asana.sh 和 wrappers/google-workspace.sh 并设置:
PROJECT="your-gcp-project-id"4.运行安装程序
chmod +x install.sh && ./install.sh这会将每个包装复制到 ~/.local/bin/mcp--wrapper.sh 随着 700 权限(仅限所有者,其他用户无法读取或执行)。
5.配置克劳德代码
对于 ~/.claude/settings.json (全局用户设置):
{
"mcpServers": {
"asana": {
"command": "/home/you/.local/bin/mcp-asana-wrapper.sh"
}
}
}对于 ~/.claude.json (如果Claude Code在那里存储了MCP配置):
{
"mcpServers": {
"google-workspace": {
"type": "stdio",
"command": "/home/you/.local/bin/mcp-google-workspace-wrapper.sh",
"args": []
}
}
}更新配置后重新启动Claude Code。
______________________________________________________________________
添加新包装
- 复制模板:
cp wrappers/template.sh wrappers/my-service.sh- 编辑
wrappers/my-service.sh--填写PROJECT,MCP_BINARY,MCP_ARGS,以及SECRETS地图。
- 将密钥存储在GCP密钥管理器中:
echo -n "my-secret-value" | gcloud secrets create my-secret-name \
--data-file=- --project=YOUR_PROJECT_ID- 重新运行安装程序:
./install.sh- 将包装器添加到Claude Code的MCP配置中并重新启动。
______________________________________________________________________
安全模型
| 位置 | 有什么 | 风险 |
|---|---|---|
| GCP密钥管理器 | 实际密钥值 | IAM控制,静态加密,审计记录 |
~/.local/bin/*.sh | 包装脚本(无秘密) | 700 --仅限所有者 |
~/.claude/settings.json | 仅限二进制路径 | 提交安全 |
~/.claude.json | 仅限二进制路径 | 安全 |
磁盘/ .bashrc | 无 | 任何地方都没有明文 |
唯一可以获取机密的机器是一台经过GCP身份验证的机器,作为您的帐户(gcloud auth login 或应用程序默认凭据)。在新机器上,运行 gcloud auth login 第一。
______________________________________________________________________
需求
gcloudCLI已安装并经过身份验证(gcloud auth login)- 启用了Secret Manager API的GCP项目
- 单独安装的MCP服务器二进制文件(二进制路径请参见每个包装器)
