Back to MCP directory
publicPublicdnsLocal runtime

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

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client