小贴士:按下Ctrl+D 或 ⌘+D,一键收藏本站,方便下次快速访问!
MIT License
2
最近更新:1个月前

超级外壳 MCP

Super Shell MCP 服务器

smithery badge

一个用于跨平台(Windows、macOS、Linux)执行Shell命令的MCP(模型上下文协议)服务器。该服务器提供了一种安全的方式来执行Shell命令,具有内置的白名单和审批机制。

功能特性

  • 通过MCP在Windows、macOS和Linux上执行Shell命令
  • 自动平台检测和Shell选择
  • 支持多种Shell:
    • Windows: cmd.exe、PowerShell
    • macOS: zsh、bash、sh
    • Linux: bash、sh、zsh
  • 具有安全等级的命令白名单:
    • 安全:无需批准即可执行的命令
    • 需要批准:执行前需要显式批准的命令
    • 禁止:明确阻止的命令
  • 平台特定的命令白名单
  • 非阻塞的潜在危险命令审批流程
  • 基于文件的全面日志系统
  • 全面的命令管理工具
  • 用于诊断的平台信息工具

安装

通过Smithery安装

通过Smithery为Claude Desktop自动安装Super Shell MCP服务器:

bash 复制代码
npx -y @smithery/cli install @cfdude/super-shell-mcp --client claude

手动安装

bash 复制代码
# 克隆仓库
git clone https://github.com/cfdude/super-shell-mcp.git
cd super-shell-mcp

# 安装依赖
npm install

# 构建项目
npm run build

使用方法

启动服务器

bash 复制代码
npm start

或直接运行:

bash 复制代码
node build/index.js

在Roo Code和Claude Desktop中配置

Roo Code和Claude Desktop都使用类似的MCP服务器配置格式。以下是设置Super Shell MCP服务器的方法:

选项1:使用NPX(推荐)

使用Super Shell MCP的最简单方法是使用NPX,它会自动从npm安装并运行包,无需手动设置。该包可在NPM上找到:https://www.npmjs.com/package/super-shell-mcp

使用NPX的Roo Code配置
json 复制代码
"super-shell": {
  "command": "npx",
  "args": [
    "-y",
    "super-shell-mcp"
  ],
  "alwaysAllow": [],
  "disabled": false
}
使用NPX的Claude Desktop配置
json 复制代码
"super-shell": {
  "command": "npx",
  "args": [
    "-y",
    "super-shell-mcp"
  ],
  "alwaysAllow": false,
  "disabled": false
}

选项2:使用本地安装

如果希望使用本地安装,请将以下内容添加到Roo Code MCP设置配置文件中(位于~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json):

json 复制代码
"super-shell": {
  "command": "node",
  "args": [
    "/path/to/super-shell-mcp/build/index.js"
  ],
  "alwaysAllow": [],
  "disabled": false
}

您可以选择性地通过添加shell参数指定自定义Shell:

json 复制代码
"super-shell": {
  "command": "node",
  "args": [
    "/path/to/super-shell-mcp/build/index.js",
    "--shell=/usr/bin/bash"
  ],
  "alwaysAllow": [],
  "disabled": false
}

Windows 11示例

json 复制代码
"super-shell": {
      "command": "C:\\Program Files\\nodejs\\node.exe",
      "args": [
        "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npx-cli.js",
        "-y",
        "super-shell-mcp",
        "C:\\Users\\username"
      ],
      "alwaysAllow": [],
      "disabled": false
    }

Claude Desktop配置

将以下内容添加到Claude Desktop配置文件中(位于~/Library/Application Support/Claude/claude_desktop_config.json):

json 复制代码
"super-shell": {
  "command": "node",
  "args": [
    "/path/to/super-shell-mcp/build/index.js"
  ],
  "alwaysAllow": false,
  "disabled": false
}

对于Windows用户,配置文件通常位于%APPDATA%\Claude\claude_desktop_config.json

平台特定配置

Windows

  • 默认Shell:cmd.exe(如果可用则使用PowerShell)
  • 配置路径:
    • Roo Code:%APPDATA%\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\cline_mcp_settings.json
    • Claude Desktop:%APPDATA%\Claude\claude_desktop_config.json
  • Shell路径示例:
    • cmd.exe:C:\\Windows\\System32\\cmd.exe
    • PowerShell:C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe
    • PowerShell Core:C:\\Program Files\\PowerShell\\7\\pwsh.exe

macOS

  • 默认Shell:/bin/zsh
  • 配置路径:
    • Roo Code:~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json
    • Claude Desktop:~/Library/Application Support/Claude/claude_desktop_config.json
  • Shell路径示例:
    • zsh:/bin/zsh
    • bash:/bin/bash
    • sh:/bin/sh

Linux

  • 默认Shell:/bin/bash(或$SHELL环境变量)
  • 配置路径:
    • Roo Code:~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json
    • Claude Desktop:~/.config/Claude/claude_desktop_config.json
  • Shell路径示例:
    • bash:/bin/bash
    • sh:/bin/sh
    • zsh:/usr/bin/zsh

您可以选择性地指定自定义Shell:

json 复制代码
"super-shell": {
  "command": "node",
  "args": [
    "/path/to/super-shell-mcp/build/index.js",
    "--shell=C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
  ],
  "alwaysAllow": false,
  "disabled": false
}

/path/to/super-shell-mcp替换为您克隆仓库的实际路径。

注意

  • 对于Roo Code:出于安全考虑,建议将alwaysAllow设置为空数组[],这样在执行任何命令之前都会提示批准。如果您希望允许特定命令而不提示,可以将它们的名称添加到数组中,例如:"alwaysAllow": ["execute_command", "get_whitelist"]
  • 对于Claude Desktop:出于安全考虑,建议将alwaysAllow设置为false。Claude Desktop使用布尔值而不是数组,其中false表示所有命令都需要批准,true表示所有命令都允许执行而不提示。

重要alwaysAllow参数由MCP客户端(Roo Code或Claude Desktop)处理,而不是由Super Shell MCP服务器本身处理。服务器可以与任一格式正常工作,因为客户端在将请求发送到服务器之前处理批准流程。

可用工具

服务器公开了以下MCP工具:

get_platform_info

获取有关当前平台和Shell的信息。

json 复制代码
{}

execute_command

在当前平台上执行Shell命令。

json 复制代码
{
  "command": "ls",
  "args": ["-la"]
}

get_whitelist

获取白名单中的命令列表。

json 复制代码
{}

add_to_whitelist

将命令添加到白名单。

json 复制代码
{
  "command": "python3",
  "securityLevel": "safe",
  "description": "运行Python 3脚本"
}

update_security_level

更新白名单中命令的安全级别。

json 复制代码
{
  "command": "python3",
  "securityLevel": "requires_approval"
}

remove_from_whitelist

从白名单中移除命令。

json 复制代码
{
  "command": "python3"
}

get_pending_commands

获取待批准命令的列表。

json 复制代码
{}

approve_command

批准待处理的命令。

json 复制代码
{
  "commandId": "command-uuid-here"
}

deny_command

拒绝待处理的命令。

json 复制代码
{
  "commandId": "command-uuid-here",
  "reason": "此命令可能存在危险"
}

默认白名单命令

服务器包含基于检测到的平台自动选择的平台特定命令白名单。

通用安全命令(所有平台)

  • echo - 将文本打印到标准输出

Unix类安全命令(macOS/Linux)

  • ls - 列出目录内容
  • pwd - 打印工作目录
  • echo - 将文本打印到标准输出
  • cat - 连接并打印文件
  • grep - 在文件中搜索模式
  • find - 在目录层次结构中查找文件
  • cd - 更改目录
  • head - 输出文件的第一部分
  • tail - 输出文件的最后部分
  • wc - 打印换行符、单词和字节计数

Windows特定安全命令

  • dir - 列出目录内容
  • type - 显示文本文件内容
  • findstr - 在文件中搜索字符串
  • where - 定位程序
  • whoami - 显示当前用户
  • hostname - 显示计算机名称
  • ver - 显示操作系统版本

需要批准的命令

Windows需要批准的命令

  • copy - 复制文件
  • move - 移动文件
  • mkdir - 创建目录
  • rmdir - 移除目录
  • rename - 重命名文件
  • attrib - 更改文件属性

Unix需要批准的命令

  • mv - 移动(重命名)文件
  • cp - 复制文件和目录
  • mkdir - 创建目录
  • touch - 更改文件时间戳或创建空文件
  • chmod - 更改文件模式位
  • chown - 更改文件所有者和组

禁止的命令

Windows禁止的命令

  • del - 删除文件
  • erase - 删除文件
  • format - 格式化磁盘
  • runas - 以其他用户身份执行程序

Unix禁止的命令

  • rm - 删除文件或目录
  • sudo - 以其他用户身份执行命令

安全考虑

  • 所有命令都以运行MCP服务器的用户权限执行
  • 需要批准的命令会保留在队列中,直到明确批准
  • 禁止的命令永远不会执行
  • 服务器使用Node.js的execFile而不是exec来防止Shell注入
  • 当指定时,参数会根据允许的模式进行验证

扩展白名单

您可以使用add_to_whitelist工具扩展白名单。例如:

json 复制代码
{
  "command": "npm",
  "securityLevel": "requires_approval",
  "description": "Node.js包管理器"
}

NPM包信息

Super Shell MCP作为npm包可在https://www.npmjs.com/package/super-shell-mcp获取。

使用NPX的好处

使用NPX方法(如配置部分选项1所示)具有以下几个优势:

  1. 无需手动设置:无需克隆仓库、安装依赖或构建项目
  2. 自动更新:始终使用最新发布的版本
  3. 跨平台兼容性:在Windows、macOS和Linux上以相同方式工作
  4. 简化配置:无需绝对路径的简短配置
  5. 减少维护:无需管理或更新本地文件

从GitHub使用

如果您希望直接使用GitHub上的最新开发版本:

json 复制代码
"super-shell": {
  "command": "npx",
  "args": [
    "-y",
    "github:cfdude/super-shell-mcp"
  ],
  "alwaysAllow": [],  // 对于Roo Code
  "disabled": false
}

发布您自己的版本

如果您希望发布自己的修改版本到npm:

  1. 使用您的详细信息更新package.json
  2. 确保"bin"字段配置正确:
    json 复制代码
    "bin": {
      "super-shell-mcp": "./build/index.js"
    }
  3. 发布到npm:
    bash 复制代码
    npm publish

NPX最佳实践

为了与使用NPX的MCP客户端实现最佳集成,本项目遵循以下最佳实践:

  1. 可执行入口点:主文件包含shebang行(#!/usr/bin/env node)并在构建期间设置为可执行

  2. 包配置

    • "type": "module" - 确保使用ES模块
    • "bin"字段 - 将命令名称映射到入口点
    • "files"字段 - 指定发布时要包含的文件
    • "prepare"脚本 - 确保在安装时进行编译
  3. TypeScript配置

    • "module": "NodeNext" - 适当的ES模块支持
    • "moduleResolution": "NodeNext" - 与ES模块一致
  4. 自动安装和执行

    • MCP客户端配置使用npx -y自动安装并运行包
    • 由于进程在后台运行,不会占用终端窗口
  5. 发布流程

    bash 复制代码
    # 更新package.json中的版本
    npm version patch  # 或根据需要选择minor/major
    
    # 构建并发布
    npm publish

这些实践确保MCP服务器可以由MCP客户端自动启动,而无需单独的终端窗口,从而提高用户体验和操作效率。

故障排除

跨平台问题

Windows特定问题

  1. PowerShell脚本执行策略

    • 问题:PowerShell可能会阻止脚本执行,并显示错误"Execution of scripts is disabled on this system"
    • 解决方案:以管理员身份运行PowerShell并执行Set-ExecutionPolicy RemoteSigned或在配置Shell时使用-ExecutionPolicy Bypass参数
  2. 路径分隔符

    • 问题:Windows在路径中使用反斜杠(\),在JSON中需要转义
    • 解决方案:在JSON配置文件中使用双反斜杠(\\),例如C:\\Windows\\System32\\cmd.exe
  3. 命令未找到

    • 问题:Windows没有Unix命令如lsgrep
    • 解决方案:使用Windows等效命令(dir代替lsfindstr代替grep

macOS/Linux特定问题

  1. Shell权限

    • 问题:执行命令时权限被拒绝
    • 解决方案:使用chmod +x /path/to/shell确保Shell具有适当的权限
  2. 环境变量

    • 问题:MCP服务器中无法使用环境变量
    • 解决方案:在Shell的配置文件中设置环境变量(.zshrc.bashrc等)

一般故障排除

  1. Shell检测问题

    • 问题:服务器无法检测到正确的Shell
    • 解决方案:在配置中明确指定Shell路径
  2. 命令执行超时

    • 问题:命令执行时间过长并超时
    • 解决方案:在命令服务构造函数中增加超时值

日志系统

服务器包含一个全面的日志系统,将日志写入文件以便于调试和监控:

  1. 日志文件位置

    • 默认:服务器目录中的logs/super-shell-mcp.log
    • 日志目录自动创建并由Git跟踪(使用.gitkeep文件)
    • 日志文件本身通过.gitignore排除在Git之外
    • 包含有关服务器操作、命令执行和审批流程的详细信息
  2. 日志级别

    • INFO:一般操作信息
    • DEBUG:详细的调试信息
    • ERROR:错误条件和异常
  3. 查看日志

    • 使用标准文件查看命令检查日志:
      bash 复制代码
      # 查看完整日志
      cat logs/super-shell-mcp.log
      
      # 实时跟踪日志更新
      tail -f logs/super-shell-mcp.log
  4. 日志内容

    • 服务器启动和配置
    • 命令执行请求和结果
    • 审批流程事件(待处理、已批准、已拒绝)
    • 错误条件和故障排除信息
  5. 白名单管理

    • 问题:需要将自定义命令添加到白名单
    • 解决方案:使用add_to_whitelist工具添加特定于您环境的命令

许可证

本MCP服务器根据MIT许可证授权。这意味着您可以自由使用、修改和分发该软件,但需遵守MIT许可证的条款和条件。有关详细信息,请参阅项目存储库中的LICENSE文件。