项目简介
MCP 安全启动器 (mcp-safe-run) 是一款命令行工具,旨在解决在 MCP 客户端配置文件(如 'mcp.json')中硬编码敏感信息(如 API 密钥)的安全问题。它允许您通过环境变量、本地文件或系统密钥链来管理这些秘密,然后以安全的方式启动您的 MCP 服务器(或任何其他命令行应用),将解析后的秘密作为环境变量传递给子进程,而无需修改原有的服务器或客户端配置文件。
主要功能点
- 秘密的安全管理:支持从环境变量、文件内容或操作系统密钥链(keyring)加载敏感信息。
- 无须修改现有应用:作为一层启动包装器,无需修改您现有的 MCP 服务器程序或其配置。
- 灵活的配置方式:支持通过命令行参数直接指定秘密来源,或使用 YAML 格式的配置文件定义不同启动配置“档案”(profile)。
- 跨平台兼容性:可在 Windows、macOS 和 Linux 系统上运行。
安装步骤
- 安装 Node.js 和 npm: 确保您的系统已安装 Node.js(版本 14 或更高)及配套的 npm 包管理器。您可以访问 Node.js 官网 下载安装包。
- 下载可执行文件: 访问项目的 Releases 页面,下载与您的操作系统对应的最新版本可执行文件。
- 执行安装: 运行下载的可执行文件,完成安装。
- 验证安装: 打开命令行终端,输入 'mcp-safe-run --version',如果显示版本号,则表示安装成功。
服务器配置
MCP 安全启动器本身不是 MCP 服务器,它是用来启动 MCP 服务器的工具。MCP 客户端通常需要知道如何启动它将连接的 MCP 服务器进程。这些配置信息在 MCP 客户端中维护,通常包括服务器的名称、启动命令和所需的参数。
在使用 MCP 安全启动器时,您提供给 MCP 客户端的启动命令 (command) 和参数 (args) 应该指向 'mcp-safe-run' 这个命令本身,并将您的实际 MCP 服务器命令及其参数作为 'mcp-safe-run' 的参数传递。
MCP 安全启动器可以通过以下方式指定秘密配置:
- 命令行直接指定: 使用 '--target-env' 参数,提供一个 JSON 字符串,指定要注入的环境变量名及其值或秘密来源(如 '"API_KEY": "env:MY_API_VAR"' 或 '"TOKEN": "file:~/my_token.txt"' 或 '"SECRET": "keyring:service:account"')。
- 配置文件: 在项目目录或用户配置目录 ('~/.config/mcp-safe-run/') 创建 '.mcp-saferun.yaml' 或 '.mcp-saferun.yml' 文件。文件包含一个 'profiles' 对象,每个 profile 定义一组要注入的环境变量。使用 '-p <profile_name>' 参数选择一个 profile。
示例配置文件 ('.mcp-saferun.yaml'):
profiles: dev: target-env: GITHUB_TOKEN: "env:GH_TOKEN_DEV" # 从环境变量 GH_TOKEN_DEV 获取值 CLAUDE_API_KEY: "keyring:anthropic:my_account" # 从密钥链获取值 prod: target-env: PRODUCTION_SECRET: "file:/etc/secrets/prod_key.txt" # 从文件获取值 ANOTHER_VAR: "literal_value" # 直接使用字面值
基本使用方法
通过 MCP 安全启动器启动您的 MCP 服务器:
# 方法 1: 使用 --target-env 命令行参数指定环境变量注入 # 注意:这里 'npx -y @modelcontextprotocol/server-github' 是您实际的 MCP 服务器启动命令 mcp-safe-run --target-env '{"GITHUB_TOKEN":"env:MY_GITHUB_TOKEN", "ANTHROPIC_KEY":"keyring:anthropic:personal"}' npx -y @modelcontextprotocol/server-github --listen stdio # 方法 2: 使用配置文件中的 profile # 假设您的 .mcp-saferun.yaml 文件中有一个名为 'dev' 的 profile mcp-safe-run -p dev npx -y @modelcontextprotocol/server-github --listen stdio # 如果您的MCP服务器需要监听特定端口 (例如 8080),并且MCP客户端需要连接到这个端口, # 那么您的MCP客户端配置中的 command/args 可能看起来像这样: # Command: mcp-safe-run # Args: ["--target-env", "{\"MY_SECRET\":\"env:ACTUAL_SECRET_VAR\"}", "your_mcp_server_command", "--port", "8080", ...] # 实际的参数取决于您的MCP服务器的启动方式和您希望通过mcp-safe-run注入的环境变量。
在上述命令中,'mcp-safe-run' 会根据 '--target-env' 参数或 '-p dev' 参数中指定的秘密来源,解析出秘密值,并将它们作为环境变量注入到 'npx -y @modelcontextprotocol/server-github' 这个子进程的环境中。您的 MCP 服务器('@modelcontextprotocol/server-github')在其运行时,将能够读取到这些注入的环境变量。
您需要将上述 'mcp-safe-run ... npx -y @modelcontextprotocol/server-github ...' 完整的命令配置到您的 MCP 客户端的服务器启动设置中。
信息
分类
开发者工具