使用说明
mcp安全运行
在不到一分钟的时间内为集成IDE的MCP服务器提供安全、零泄漏的秘密。
mcp安全运行允许您使用从未在shell、进程列表或版本控制中公开的秘密来启动AI驱动的IDE(如Cursor、Windsurf或Claude Desktop)的模型上下文协议(mcp)服务器。将机密持久地存储在操作系统密钥链或隐藏文件中,在IDE配置中安全地引用它们,并一键启动服务器——不再复制粘贴令牌或冒意外泄漏的风险。
快速开始
- 安装:
npm install -g mcp-safe-run - 创建secrets目录:
mkdir -p ./secrets echo "/secrets/*" >> .gitignore - 添加您的密码:
echo "ghp_...TOKEN..." > ./secrets/github_token.txt chmod 600 ./secrets/github_token.txt - 配置IDE: 将以下内容添加到IDE的MCP服务器设置中(例如。,
mcp_settings.json):{ "mcpServers": { "github": { "command": "mcp-safe-run", "args": [ "--target-env", "{\"GITHUB_TOKEN\": \"file:./secrets/github_token.txt\"}", "--", "npx", "-y", "@modelcontextprotocol/server-github" ], "env": {} } } } - 从IDE启动服务器。
IDE设置(光标、风帆、克劳德桌面)
要将此项目与支持模型上下文协议的IDE(如Cursor、Windsurf或Claude Desktop)一起使用,请添加 mcpServers 将部分添加到您的设置中(例如 mcp_settings.json).这使得IDE能够以安全的环境分辨率启动MCP服务器。
配置示例:
{
"mcpServers": {
"github": {
"command": "mcp-safe-run",
"args": [
"--target-env",
"{\"GITHUB_TOKEN\": \"keyring:mcp-github:personal-pat\"}",
"--",
"npx",
"-y",
"@modelcontextprotocol/server-github"
],
"env": {}
}
}
}
为IDE集成设置秘密
选项1:使用密钥文件(file:)
- 为你的秘密创建一个隐藏目录(如果它不存在):
mkdir -p ./secrets - 添加a
.gitignore将机密排除在版本控制之外的规则:# .gitignore /secrets/* - 创建您的机密文件,例如。
./secrets/github_token.txt,并将您的令牌或秘密值粘贴到其中。 - 保护文件,以便只有您的用户可以读取它:
chmod 600 ./secrets/github_token.txt - 在您的配置中,使用
file:占位符,例如:{ "GITHUB_TOKEN": "file:./secrets/github_token.txt" }
选项2:使用操作系统钥匙链(keyring:在macOS
- 打开 钥匙串访问 应用程序(应用程序>实用程序>钥匙链访问)。
- 点击
+按钮添加新密码项。 - 设置 钥匙扣项目名称 (服务)和 账户名称 (account)匹配您的占位符,例如:
- 服务:
mcp-github - 账户
personal-pat
- 服务:
- 将您的秘密/令牌粘贴到“密码”字段并保存。
- 或者,您可以使用
keytarNode.js CLI或API以编程方式添加机密:// Example using keytar in Node.js const keytar = require('keytar'); keytar.setPassword('mcp-github', 'personal-pat', 'ghp_...your_token...'); - 在您的配置中,使用
keyring:占位符,例如:{ "GITHUB_TOKEN": "keyring:mcp-github:personal-pat" }
笔记:
- 这
GITHUB_TOKEN将使用keyring:占位符。 - 您可能需要使用以下工具将密钥添加到密钥链中
keytar或者操作系统的秘密管理器。 - 此模式适用于任何MCP服务器;只需根据用例的需要调整命令和参数。
- 在这些IDE中,
env:占位符通常不受支持(IDE不通过您的shell环境),因此更喜欢keyring:或file:占位符。
安装
npm install -g mcp-safe-run
注: 此CLI使用 肩背式键盘 用于操作系统钥匙链支持。在macOS上,安装Xcode命令行工具。在Linux上,安装
libsecret-1-dev和build-essential(或等效的构建工具)。在Windows上,安装Visual Studio生成工具(npm install --global --production windows-build-tools).
用法
mcp-safe-run [options] <targetCommand> [targetArgs...]
选项
-V, --version输出当前版本。-c, --config <path>自定义配置文件(.yml或.yml)的路径。-p, --profile <name>配置文件中要使用的配置文件的名称。--target-env <jsonString>目标环境变量的JSON映射。 覆盖配置文件配置文件设置。-v, --verbose启用详细日志记录(输出诊断详细信息)。-h, --help显示帮助信息。
占位符语法
占位符可用于 --target-env JSON字符串或 target-env 配置文件配置文件的一部分。
env:VAR_NAME使用环境变量的值VAR_NAME.file:/path/to/file读取并修剪指定文件的内容(支持~主目录)。keyring:service:account使用指定的密钥从操作系统密钥链中检索密钥service和account.- 文字值 任何其他字符串都将原封不动地传递。
配置文件
为了管理多个配置,您可以使用YAML配置文件(例如。, .mcp-saferun.yaml 或 .mcp-saferun.yml).当您需要频繁地在不同的环境变量集之间切换时,这尤其有用,例如对于不同的部署环境(开发、测试、生产)或不同的操作上下文。
使用环境说明: 对于更简单的场景,例如在IDE集成中配置单个MCP服务器(例如,通过 mcp.json),使用 --target-env 直接标记可能比管理单独的配置文件更简单。配置文件的主要好处在于管理多个不同的配置(配置文件) 相同 目标命令。
搜索顺序:
- 指定的路径
-c, --config <path>. .mcp-saferun.yaml或.mcp-saferun.yml在当前工作目录中。config.yaml或config.yml内部~/.config/mcp-safe-run/(如果目录不存在,则创建该目录)。
格式:
# Example .mcp-saferun.yaml
profiles:
# Profile name (used with -p dev)
dev:
target-env:
API_KEY: "env:DEV_API_KEY"
SECRET: "keyring:my-service:dev-user"
DB_URL: "postgresql://localhost/dev_db"
staging:
target-env:
API_KEY: "file:./staging-key.txt"
SECRET: "keyring:my-service:staging-user"
DB_URL: "env:STAGING_DB_URL"
# Global settings can be added here if needed in the future
# global:
# setting: value
优先:
- 通过提供的环境变量
--target-env(最高优先级)。 - 所选配置文件中定义的环境变量(
-p <name>)从配置文件中。 - 从shell继承的环境变量
mcp-safe-run执行(最低优先级)。
例子
-
使用
--target-env(仅限CLI):export GH_TOKEN_FOR_MCP=ghp_...TOKEN... mcp-safe-run --target-env '{"GITHUB_TOKEN":"env:GH_TOKEN_FOR_MCP", "OTHER_VAR":"literal_value"}' \ npx -y @modelcontextprotocol/server-github --port 8080 -
使用配置文件配置文件:
创建
.mcp-saferun.yaml在您的项目中:profiles: github_server: target-env: GITHUB_TOKEN: "keyring:mcp:github" PORT: "8080"使用配置文件运行:
# Make sure the keychain entry exists: # keytar set mcp github ghp_...TOKEN... mcp-safe-run -p github_server npx -y @modelcontextprotocol/server-github # The target command will receive GITHUB_TOKEN and PORT in its environment -
使用特定的配置文件:
mcp-safe-run -c ~/configs/mcp-servers.yaml -p prod_server node my_server.js -
使用覆盖配置文件
--target-env:假设
.mcp-saferun.yaml存在于github_server示例2中的配置文件。# Temporarily override the PORT defined in the profile mcp-safe-run -p github_server --target-env '{"PORT":"9000"}' \ npx -y @modelcontextprotocol/server-github # GITHUB_TOKEN comes from the profile (keyring), but PORT is set to 9000 by the CLI flag. -
详细模式:
mcp-safe-run -v -p github_server npx -y @modelcontextprotocol/server-github # Shows config loading, resolved values (if verbose), final environment, etc.
故障排除
-
未找到配置文件: 检查搜索路径和文件名(
.mcp-saferun.yaml/.yml).确保路径正确-c。检查权限。 -
未找到配置文件: 验证与一起使用的配置文件名称
-p已加载的配置文件中存在。 -
YAML错误: 确保配置文件是有效的YAML。如果不确定,请使用在线验证器。
-
占位符错误: (
env:,file:,keyring:)env::检查环境变量是否实际设置(echo $VAR_NAME).file::检查文件路径(包括~扩展),权限(ls -l),和内容(cat).keyring::验证密码是否存在于操作系统密钥链中(使用操作系统工具或keytarCLI(如果已安装)。确保keytar前提条件已满足。
-
keytar构建/运行时问题: 检查下面的平台注释,并确保安装了必要的构建工具/库。 -
JSON无效(
--target-env): 确保正确引用,尤其是在shell中使用时。 -
不支持的占位符(
env:)在某些客户端(Cursor、Windsurf、Claude Desktop)中: 这些环境不会将shell环境变量传递给mcp-safe-run,所以env:占位符无法解析。file:和keyring:占位符仍然有效。例如:mcp-safe-run --target-env '{"API_KEY":"file:./api_key.txt","SECRET":"keyring:my-service:account","DB_URL":"file:./db_url.txt"}' <targetCommand> [args...]
平台说明
- macOS: 需要Xcode命令行工具。
- Linux: 需要
libsecret-1-dev并构建以下工具build-essential. - 窗户: 需要Visual Studio生成工具(可以通过安装
npm install --global --production windows-build-tools).
IDE设置(光标、风帆、克劳德桌面)
要将此项目与支持模型上下文协议的IDE(如Cursor、Windsurf或Claude Desktop)一起使用,请添加 mcpServers 将部分添加到您的设置中(例如 mcp_settings.json).这使得IDE能够以安全的环境分辨率启动MCP服务器。
配置示例:
{
"mcpServers": {
"github": {
"command": "mcp-safe-run",
"args": [
"--target-env",
"{\"GITHUB_TOKEN\": \"keyring:mcp-github:personal-pat\"}",
"--",
"npx",
"-y",
"@modelcontextprotocol/server-github"
],
"env": {}
}
}
}
为IDE集成设置秘密
选项1:使用密钥文件(file:)
- 为你的秘密创建一个隐藏目录(如果它不存在):
mkdir -p ./secrets - 添加a
.gitignore将机密排除在版本控制之外的规则:# .gitignore /secrets/* - 创建您的机密文件,例如。
./secrets/github_token.txt,并将您的令牌或秘密值粘贴到其中。 - 保护文件,以便只有您的用户可以读取它:
chmod 600 ./secrets/github_token.txt - 在您的配置中,使用
file:占位符,例如:{ "GITHUB_TOKEN": "file:./secrets/github_token.txt" }
选项2:使用操作系统钥匙链(keyring:在macOS
- 打开 钥匙串访问 应用程序(应用程序>实用程序>钥匙链访问)。
- 点击
+按钮添加新密码项。 - 设置 钥匙扣项目名称 (服务)和 账户名称 (account)匹配您的占位符,例如:
- 服务:
mcp-github - 账户
personal-pat
- 服务:
- 将您的秘密/令牌粘贴到“密码”字段并保存。
- 或者,您可以使用
keytarNode.js CLI或API以编程方式添加机密:// Example using keytar in Node.js const keytar = require('keytar'); keytar.setPassword('mcp-github', 'personal-pat', 'ghp_...your_token...'); - 在您的配置中,使用
keyring:占位符,例如:{ "GITHUB_TOKEN": "keyring:mcp-github:personal-pat" }
笔记:
- 这
GITHUB_TOKEN将使用keyring:占位符。 - 您可能需要使用以下工具将密钥添加到密钥链中
keytar或者操作系统的秘密管理器。 - 此模式适用于任何MCP服务器;只需根据用例的需要调整命令和参数。
- 在这些IDE中,
env:占位符通常不受支持(IDE不通过您的shell环境),因此更喜欢keyring:或file:占位符。
