使用说明

项目简介

MCP命令执行器是一个实现了 Model Context Protocol (MCP) 的服务器,它提供了一个 工具 (Tool),允许授权的 LLM 客户端安全地执行预先配置的系统命令。该服务器通过白名单机制和沙箱环境增强安全性,防止恶意命令执行,为 LLM 应用提供安全可控的系统命令执行能力。

主要功能点

  • 安全命令执行: 仅执行配置在允许列表中的命令,防止未授权命令的执行。
  • 可配置的命令白名单: 通过配置文件或环境变量灵活配置允许执行的命令列表。
  • 工作目录限制: 可以设置默认工作目录和允许访问的目录,限制命令执行的文件系统范围。
  • 环境变量管理: 支持全局和命令级别的环境变量配置,灵活控制命令执行环境。
  • 详细日志记录: 提供可配置的日志记录,方便审计和问题排查。
  • 易于集成: 可以通过标准的 MCP 协议与各种 LLM 客户端集成,例如 Claude Desktop。

安装步骤

  1. 安装 Go 环境: 确保您的系统已安装 Go 1.24 或更高版本。
  2. 安装 MCP命令执行器: 使用 'go install' 命令直接安装:
    go install github.com/cnosuke/mcp-command-exec
    或者,您也可以克隆仓库手动构建:
    git clone https://github.com/cnosuke/mcp-command-exec.git
    cd mcp-command-exec
    make build
    安装成功后,'mcp-command-exec' 可执行文件通常位于 '$GOPATH/bin' 或 '$HOME/go/bin' 目录下。

服务器配置

MCP 客户端需要配置 MCP 服务器的连接信息才能使用命令执行功能。以下是 Claude Desktop 客户端的 'claude_desktop_config.json' 配置文件示例,展示了如何配置 'mcp-command-exec' 服务器:

{
  "mcpServers": {
    "command": {  //  服务器名称,客户端用于标识和引用
      "command": "./bin/mcp-command-exec", // MCP服务器的可执行文件路径,请根据实际安装路径修改
      "args": ["server"], // 启动服务器的命令行参数,这里是 "server" 表示启动服务器模式
      "env": {  // 环境变量配置,可以用来覆盖配置文件中的设置
        "LOG_PATH": "mcp-command-exec.log",  // 日志文件路径
        "DEBUG": "false", // 是否启用Debug模式,true 或 false
        "ALLOWED_COMMANDS": "git,ls,cat,echo,find" // 允许执行的命令列表,逗号分隔
      }
    }
  }
}

配置说明:

  • 'server name' (例: "command"): 您为该 MCP 服务器指定的名称。在客户端中,您将使用此名称来引用此服务器。
  • 'command': 指向 'mcp-command-exec' 服务器可执行文件的路径。请根据您的实际安装位置进行调整。如果 'mcp-command-exec' 位于系统的 PATH 环境变量中,则可以直接使用 'mcp-command-exec'。
  • 'args': 启动服务器所需的命令行参数。对于 'mcp-command-exec',使用 '["server"]' 表示以服务器模式启动。
  • 'env': 一个 JSON 对象,用于设置服务器启动时的环境变量。
    • 'LOG_PATH': 指定日志文件的存储路径。如果为空字符串,则不生成日志。
    • 'DEBUG': 布尔值,设置为 '"true"' 启用 Debug 模式,输出更详细的日志。
    • 'ALLOWED_COMMANDS': 逗号分隔的字符串,列出允许执行的系统命令。此配置会覆盖配置文件中的 'allowed_commands' 设置。您可以根据需要添加或删除命令,例如 '"git,ls,mkdir,cd,npm,npx,python"'。

配置文件 (config.yml):

'mcp-command-exec' 服务器默认从 'config.yml' 文件加载配置。您可以在该文件中配置更详细的服务器行为,例如:

# Logging configuration
log: 'log/mcp-command-exec.log' # 日志文件路径
debug: false # 是否启用Debug模式

command_exec:
  allowed_commands: # 默认允许执行的命令列表
    - git
    - ls
    - mkdir
    - cd
    - npm
    - npx
    - python
  default_working_dir: '/home/user' # 默认工作目录
  allowed_dirs: # 允许访问的目录列表
    - '/home/user/projects'
    - '/tmp'
  search_paths: # 命令搜索路径
    - '/usr/local/bin'
    - '/usr/bin'
  path_behavior: 'prepend' # 路径行为,可选值:prepend, replace, append
  environment: # 全局环境变量
    HOME: '/home/user'
    GOPATH: '/home/user/go'
    GOMODCACHE: '/home/user/go/pkg/mod'
    LANG: 'en_US.UTF-8'

您可以根据需要修改 'config.yml' 文件,或者通过在 'claude_desktop_config.json' 的 'env' 字段中设置环境变量来覆盖配置。

基本使用方法

  1. 启动 MCP 服务器: 确保已按照上述配置正确设置 'claude_desktop_config.json' 或其他 MCP 客户端的配置文件。启动 Claude Desktop 或其他 MCP 客户端,客户端会自动启动并连接到 'mcp-command-exec' 服务器。

  2. 调用 'command_exec' 工具: 在 LLM 客户端中,您可以使用 'command_exec' 工具来执行系统命令。例如,在 JSON-RPC 请求中,您可以构造如下请求来调用 'command_exec' 工具执行 'ls -la' 命令:

    {
      "method": "tool",
      "id": "1",
      "params": {
        "name": "command_exec",
        "input": {
          "command": "ls -la", // 要执行的命令
          "working_dir": "/home/user/project", // 可选:命令执行的工作目录
          "env": { // 可选:命令执行的环境变量
            "DEBUG": "1",
            "LANG": "en_US.UTF-8"
          }
        }
      }
    }

    服务器将执行 'ls -la' 命令,并将命令的输出结果(stdout 和 stderr)作为 JSON-RPC 响应返回给客户端。

安全提示:

请务必仔细配置 'allowed_commands' 和 'allowed_dirs',只允许必要的命令和目录,以确保服务器和系统的安全。

信息

分类

桌面与硬件