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 的末尾。
安全措施
- 命令过滤:仅允许指定的命令通过。
- 目录限制:所有命令必须在允许的目录中执行。
- 环境隔离:每个命令运行在一个沙盒环境中,防止相互干扰。
开发信息
项目结构
mcp-command-exec/
├── main.go # 主程序入口
├── config.yml # 配置文件
└── Makefile # 构建脚本
编译与运行
make build # 编译可执行文件
make run # 运行服务器
make install # 安装到系统
📄 许可证
本项目采用 MIT 许可证。
作者:cnosuke ( x.com/cnosuke )
微信扫一扫