返回 MCP 目录
public公开dns本地运行

Command Executor

MCP命令执行服务器是一个基于MCP协议的安全系统命令执行工具,通过白名单机制确保命令执行的安全性。

article

README

🚀 MCP 命令执行器

MCP 命令执行器是一个基于 MCP 协议实现的服务器,它允许安全地执行系统命令。该服务器通过仅执行注册在允许列表中的命令,来保障系统的安全性。

🚀 快速开始

MCP 命令执行器可让你安全地通过 MCP 协议执行系统命令。下面为你介绍它的安装、配置和使用方法。

✨ 主要特性

  • MCP 协议命令执行:支持通过 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

📚 详细文档

配置

服务器通过 YAML 文件(默认:config.yml)进行配置,示例如下:

# 日志配置
log: 'log/mcp-command-exec.log'
debug: false

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'

你还可以通过环境变量覆盖配置:

  • LOG_PATH:指定日志文件路径
  • DEBUG:启用调试模式(true/false)
  • ALLOWED_COMMANDS:用逗号分隔的允许命令列表(覆盖配置文件)

示例:

ALLOWED_COMMANDS=git,ls,cat,echo mcp-command-exec 服务器

日志记录

日志行为通过配置控制:

  • log 在配置文件中设置,则将日志写入指定文件。
  • log 为空,则不生成日志。
  • 设置 debug: true 可启用更详细的日志记录。

命令行参数

启动服务器时,可指定各种设置:

./bin/mcp-command-exec 服务器 [选项]

选项:

  • --config, -c:指定配置文件路径(默认: "config.yml")。

MCP 工具规范

命令执行器

通过 MCP 协议实现命令执行功能,以下是详细的 API 和使用方法。

配置文件结构

{
  "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",
    "environment": {
      "HOME": "/home/user",
      "GOPATH": "/home/user/go",
      "GOMODCACHE": "/home/user/go/pkg/mod",
      "LANG": "en_US.UTF-8"
    }
  }
}

环境变量

通过配置文件中的 environment 字段设置全局环境变量。

允许的命令列表

allowed_commands 中指定允许执行的具体命令,例如:

"allowed_commands": [
  "git",
  "ls",
  "mkdir",
  "cd",
  "npm",
  "npx",
  "python"
]

工作目录设置

默认工作目录由 default_working_dir 指定,允许的目录列表在 allowed_dirs 中指定。

路径搜索行为

通过 path_behavior 字段控制命令路径搜索的行为,可选值包括:

  • prepend:将自定义路径添加到系统 PATH 的前面。
  • replace:用自定义路径完全替换系统 PATH。
  • append:将自定义路径添加到系统 PATH 的末尾。

安全措施

  1. 命令过滤:仅允许指定的命令通过。
  2. 目录限制:所有命令必须在允许的目录中执行。
  3. 环境隔离:每个命令运行在一个沙盒环境中,防止相互干扰。

开发信息

项目结构

mcp-command-exec/
├── main.go           # 主程序入口
├── config.yml       # 配置文件
└── Makefile         # 构建脚本

编译与运行

make build     # 编译可执行文件
make run      # 运行服务器
make install  # 安装到系统

📄 许可证

本项目采用 MIT 许可证。

作者:cnosuke ( x.com/cnosuke )

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端