命令执行服务

MCP命令执行器是一个通过MCP协议安全执行系统命令的服务器实现,通过允许列表确保安全性。

  • by cnosuke
  • Go
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 cnosuke/mcp-command-exec

使用说明

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"
      }
    }
  }
}

安全

此服务器通过以下方法确保安全性:

  1. 仅执行包含在列表中的命令
  2. 不使用shell直接执行命令,防止shell注入
  3. 通过前缀验证命令(例如。, ls 是允许的,但 ls;rm -rf 被拒绝)
  4. 环境变量的安全处理和超控控制
  5. 严格的错误处理

发展

建筑

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)