返回市场
mac壳MCP服务器

mac壳MCP服务器

作者:cfdude15 星标更新:2025-07-26

项目介绍

Mac Shell MCP Server

一个用于执行macOS终端命令的MCP(模型上下文协议)服务器,使用ZSH shell。该服务器提供了一种安全的方式来执行shell命令,并内置了白名单和审批机制。

<a href="https://glama.ai/mcp/servers/@cfdude/mac-shell-mcp"> <img width="380" height="200" src="https://gips2.baidu.com/it/u=4090833994,1424897033&fm=3081&app=3081&f=PNG?w=760&h=400" alt="Mac Shell Server MCP server" /> </a>

特性

  • 通过MCP执行macOS终端命令
  • 带有安全级别的命令白名单:
    • 安全:无需批准即可执行的命令
    • 需要批准:在执行前需要明确批准的命令
    • 禁止:明确阻止的命令
  • 预配置的常见安全命令白名单
  • 对潜在危险命令的审批工作流
  • 全面的命令管理工具

安装

# 克隆仓库
git clone https://github.com/cfdude/mac-shell-mcp.git
cd mac-shell-mcp

# 安装依赖
npm install

# 构建项目
npm run build

使用

启动服务器

npm start

或者直接:

node build/index.js

在Roo Code和Claude Desktop中配置

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

使用本地安装

Roo Code配置

在您的Roo Code MCP设置配置文件(位于~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json)中添加以下内容:

"mac-shell": {
  "command": "node",
  "args": [
    "/path/to/mac-shell-mcp/build/index.js"
  ],
  "alwaysAllow": [],
  "disabled": false
}
Claude Desktop配置

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

"mac-shell": {
  "command": "node",
  "args": [
    "/path/to/mac-shell-mcp/build/index.js"
  ],
  "alwaysAllow": false,
  "disabled": false
}

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

使用NPX(推荐)

为了更方便地设置,不需要保持终端窗口打开,您可以将包发布到npm并使用npx:

发布到npm
  1. 更新package.json中的详细信息
  2. 发布到npm:
    npm publish
    
Roo Code配置
"mac-shell": {
  "command": "npx",
  "args": [
    "-y",
    "mac-shell-mcp"
  ],
  "alwaysAllow": [],
  "disabled": false
}
Claude Desktop配置
"mac-shell": {
  "command": "npx",
  "args": [
    "-y",
    "mac-shell-mcp"
  ],
  "alwaysAllow": false,
  "disabled": false
}

这种方法允许MCP客户端自动启动MCP服务器,而不需要单独的终端窗口或手动干预。

注意

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

重要alwaysAllow参数由MCP客户端(Roo Code或Claude Desktop)处理,而不是由Mac Shell MCP服务器本身处理。无论哪种格式,服务器都能正常工作,因为客户端会在发送请求给服务器之前处理批准过程。

可用工具

服务器暴露了以下MCP工具:

execute_command

在macOS上执行shell命令。

{
  "command": "ls",
  "args": ["-la"]
}

get_whitelist

获取白名单命令列表。

{}

add_to_whitelist

将命令添加到白名单。

{
  "command": "python3",
  "securityLevel": "safe",
  "description": "运行Python 3脚本"
}

update_security_level

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

{
  "command": "python3",
  "securityLevel": "requires_approval"
}

remove_from_whitelist

从白名单中移除命令。

{
  "command": "python3"
}

get_pending_commands

获取待批准命令列表。

{}

approve_command

批准待批准命令。

{
  "commandId": "command-uuid-here"
}

deny_command

拒绝待批准命令。

{
  "commandId": "command-uuid-here",
  "reason": "此命令可能具有危险性"
}

默认白名单命令

安全命令(无需批准)

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

需要批准的命令

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

禁止命令

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

安全考虑

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

扩展白名单

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

{
  "command": "npm",
  "securityLevel": "requires_approval",
  "description": "Node.js包管理器"
}

作为npm包使用

要像其他MCP服务器(如Brave Search)一样使用npx来使用Mac Shell MCP服务器,您可以将其发布到npm或直接从GitHub使用。

使用npx配置

在您的MCP设置配置中添加以下内容:

Roo Code

"mac-shell": {
  "command": "npx",
  "args": [
    "-y",
    "github:cfdude/mac-shell-mcp"
  ],
  "alwaysAllow": [],
  "disabled": false
}

Claude Desktop

"mac-shell": {
  "command": "npx",
  "args": [
    "-y",
    "github:cfdude/mac-shell-mcp"
  ],
  "alwaysAllow": false,
  "disabled": false
}

这将自动下载并运行服务器,而不需要手动克隆和构建过程。

发布到npm

如果您想将自己的版本发布到npm:

  1. 更新package.json中的详细信息
  2. 在package.json中添加一个"bin"字段:
    "bin": {
      "mac-shell-mcp": "./build/index.js"
    }
    
  3. 发布到npm:
    npm publish
    

然后您可以在您的MCP配置中使用它:

Roo Code

"mac-shell": {
  "command": "npx",
  "args": [
    "-y",
    "mac-shell-mcp"
  ],
  "alwaysAllow": [],
  "disabled": false
}

Claude Desktop

"mac-shell": {
  "command": "npx",
  "args": [
    "-y",
    "mac-shell-mcp"
  ],
  "alwaysAllow": false,
  "disabled": false
}

许可证

此MCP服务器采用MIT许可证。这意味着您可以自由使用、修改和分发软件,但需遵守MIT许可证的条款和条件。更多详情,请参见项目存储库中的LICENSE文件。