项目简介

MCP 安全启动器 (mcp-safe-run) 是一款命令行工具,旨在解决在 MCP 客户端配置文件(如 'mcp.json')中硬编码敏感信息(如 API 密钥)的安全问题。它允许您通过环境变量、本地文件或系统密钥链来管理这些秘密,然后以安全的方式启动您的 MCP 服务器(或任何其他命令行应用),将解析后的秘密作为环境变量传递给子进程,而无需修改原有的服务器或客户端配置文件。

主要功能点

  • 秘密的安全管理:支持从环境变量、文件内容或操作系统密钥链(keyring)加载敏感信息。
  • 无须修改现有应用:作为一层启动包装器,无需修改您现有的 MCP 服务器程序或其配置。
  • 灵活的配置方式:支持通过命令行参数直接指定秘密来源,或使用 YAML 格式的配置文件定义不同启动配置“档案”(profile)。
  • 跨平台兼容性:可在 Windows、macOS 和 Linux 系统上运行。

安装步骤

  1. 安装 Node.js 和 npm: 确保您的系统已安装 Node.js(版本 14 或更高)及配套的 npm 包管理器。您可以访问 Node.js 官网 下载安装包。
  2. 下载可执行文件: 访问项目的 Releases 页面,下载与您的操作系统对应的最新版本可执行文件。
  3. 执行安装: 运行下载的可执行文件,完成安装。
  4. 验证安装: 打开命令行终端,输入 'mcp-safe-run --version',如果显示版本号,则表示安装成功。

服务器配置

MCP 安全启动器本身不是 MCP 服务器,它是用来启动 MCP 服务器的工具。MCP 客户端通常需要知道如何启动它将连接的 MCP 服务器进程。这些配置信息在 MCP 客户端中维护,通常包括服务器的名称、启动命令和所需的参数。

在使用 MCP 安全启动器时,您提供给 MCP 客户端的启动命令 (command) 和参数 (args) 应该指向 'mcp-safe-run' 这个命令本身,并将您的实际 MCP 服务器命令及其参数作为 'mcp-safe-run' 的参数传递。

MCP 安全启动器可以通过以下方式指定秘密配置:

  1. 命令行直接指定: 使用 '--target-env' 参数,提供一个 JSON 字符串,指定要注入的环境变量名及其值或秘密来源(如 '"API_KEY": "env:MY_API_VAR"' 或 '"TOKEN": "file:~/my_token.txt"' 或 '"SECRET": "keyring:service:account"')。
  2. 配置文件: 在项目目录或用户配置目录 ('~/.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 客户端的服务器启动设置中。

信息

分类

开发者工具