一个MCP服务器,允许通过Claude或Roo Code安全执行macOS终端命令,并具有内置的安全白名单和审批机制。
595 查看 · 2026-07-07 更新
简介
一个MCP服务器,允许通过Claude或Roo Code安全执行macOS终端命令,并具有内置的安全白名单和审批机制。
简介
一个MCP服务器,允许通过Claude或Roo Code安全执行macOS终端命令,并具有内置的安全白名单和审批机制。
Mac Shell MCP 服务器
一个用于通过 ZSH shell 执行 macOS 终端命令的 MCP(Model Context Protocol)服务器。此服务器提供了一种安全的方式来执行 shell 命令,并内置了白名单和审批机制。
功能
- 通过 MCP 执行 macOS 终端命令
- 带有安全级别的命令白名单:
- 安全:无需批准即可执行的命令
- 需要批准:在执行前需要明确批准的命令
- 禁止:被明确阻止的命令
- 预配置的常见安全命令白名单
- 潜在危险命令的审批工作流
- 全面的命令管理工具
安装
# Clone the repository git clone https://github.com/cfdude/mac-shell-mcp.git cd mac-shell-mcp # Install dependencies npm install # Build the project 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
- 更新 package.json 以包含您的详细信息
- 发布到 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": "Run Python 3 scripts" }
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": "This command is potentially dangerous" }
默认白名单命令
安全命令(无需审批)
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 package manager" }
作为 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:
- 更新 package.json 中的详细信息
- 在 package.json 中添加 "bin" 字段:
"bin": { "mac-shell-mcp": "./build/index.js" } - 发布到 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文件。
来源
- 来源:github
- 链接:https://github.com/cfdude/mac-shell-mcp