MCP命令执行器
MCP命令执行器是一种服务器实现,允许通过MCP协议安全执行系统命令。此服务器通过仅执行在分配列表中注册的命令来确保安全性。
特性
- 通过MCP协议执行命令
- 使用满列表进行命令过滤
- 可通过环境变量自定义允许的命令
- 命令执行的环境变量支持
- 配置文件中的全局环境变量 - 每个命令的环境变量
- 命令执行结果作为文本输出
需求
- 转到1.24或更高版本
- github/metoro-io/mcp-golang
- 中列出的其他依赖项 go.mod
安装
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)配置的。例如:
# Logging configuration
log: 'log/mcp-command-exec.log'
debug: false
command_exec:
allowed_commands:
- git
- ls
- mkdir
- cd
- npm
- npx
- python
# Working directory settings
default_working_dir: '/home/user'
allowed_dirs:
- '/home/user/projects'
- '/tmp'
# Path search settings
search_paths:
- '/usr/local/bin'
- '/usr/bin'
path_behavior: 'prepend' # prepend, replace, append
# Global environment variables
environment:
HOME: '/home/user'
GOPATH: '/home/user/go'
GOMODCACHE: '/home/user/go/pkg/mod'
LANG: 'en_US.UTF-8'您可以使用环境变量覆盖配置:
LOG_PATH:日志文件的路径DEBUG:启用调试模式(真/假)ALLOWED_COMMANDS:逗号分隔的允许命令列表(覆盖配置文件)
例子:
ALLOWED_COMMANDS=git,ls,cat,echo mcp-command-exec server日志记录
日志行为通过配置进行控制:
- 如果
log在配置文件中设置,日志将写入指定文件 - 如果
log为空,将不会生成日志 - 集
debug: true用于更详细的日志记录
命令行参数
启动服务器时,您可以指定各种设置:
./bin/mcp-command-exec server [options]选项:
--config,-c:配置文件的路径(默认:“config.yml”)。
MCP工具规格
commandexec
执行系统命令。
参数:
command:要执行的命令(字符串)working_dir:命令执行的可选工作目录env:此命令执行的可选环境变量(对象)
- 优先于配置文件中的环境变量 - 例子: {"DEBUG": "1", "LANG": "en_US.UTF-8"}
响应:
- 成功:命令执行结果(stdout/stderr)
- 失败:错误消息
示例(JSON请求):
{
"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"
}
}
}
}安全
此服务器通过以下方法确保安全性:
- 仅执行包含在列表中的命令
- 不使用shell直接执行命令,防止shell注入
- 通过前缀验证命令(例如。,
ls是允许的,但ls;rm -rf被拒绝) - 环境变量的安全处理和超控控制
- 严格的错误处理
发展
建筑
make build测试
make test跑步
make run与Claude Desktop一起使用
要与Claude Desktop集成,请在您的 claude_desktop_config.json 文件:
{
"mcpServers": {
"command": {
"command": "./bin/mcp-command-exec",
"args": ["server"],
"env": {
"LOG_PATH": "mcp-command-exec.log",
"DEBUG": "false",
"ALLOWED_COMMANDS": "git,ls,cat,echo,find"
}
}
}
}致谢
这个项目的灵感来自 命令执行器mcp服务器 Sunwood人工智能实验室。我们感谢他们在命令执行的MCP服务器实现方面的开创性工作。
许可证
麻省理工学院
作者:cnosuke(x.com/cnosuke)
