](https://mseep.ai/app/cfdude-mac-shell-mcp)
Mac Shell MCP服务器
用于使用ZSH shell执行macOS终端命令的MCP(模型上下文协议)服务器。此服务器提供了一种安全的方式来执行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代码配置
将以下内容添加到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桌面配置
将以下内容添加到您的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 publishRoo代码配置
"mac-shell": {
"command": "npx",
"args": [
"-y",
"mac-shell-mcp"
],
"alwaysAllow": [],
"disabled": false
}Claude桌面配置
"mac-shell": {
"command": "npx",
"args": [
"-y",
"mac-shell-mcp"
],
"alwaysAllow": false,
"disabled": false
}这种方法允许MCP客户端自动启动MCP服务器,而不需要单独的终端窗口或手动干预。
备注: - Roo代码:设置alwaysAllow变为空数组[]出于安全原因,建议使用,因为它会在执行任何命令之前提示批准。如果你想在不提示的情况下允许特定命令,你可以将它们的名称添加到数组中,例如:"alwaysAllow": ["execute_command", "get_whitelist"]. - 克劳德桌面:设置alwaysAllow到false出于安全原因,建议使用。Claude Desktop使用布尔值而不是数组,其中false意味着所有命令都需要批准,以及true意味着所有命令都是允许的,没有提示。 重要:ThealwaysAllow参数由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防止外壳注射 - 指定时,根据允许的模式验证参数
扩大白名单
您可以使用以下命令扩展白名单 add_to_whitelist 工具。例如:
{
"command": "npm",
"securityLevel": "requires_approval",
"description": "Node.js package manager"
}用作npm包
使用Mac Shell MCP服务器 npx 与Brave Search等其他MCP服务器类似,您可以将其发布到npm或直接从GitHub使用。
使用npx进行配置
将以下内容添加到MCP设置配置中:
Roo代码
"mac-shell": {
"command": "npx",
"args": [
"-y",
"github:cfdude/mac-shell-mcp"
],
"alwaysAllow": [],
"disabled": false
}克劳德桌面
"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代码
"mac-shell": {
"command": "npx",
"args": [
"-y",
"mac-shell-mcp"
],
"alwaysAllow": [],
"disabled": false
}克劳德桌面
"mac-shell": {
"command": "npx",
"args": [
"-y",
"mac-shell-mcp"
],
"alwaysAllow": false,
"disabled": false
}许可证
此MCP服务器根据MIT许可证获得许可。这意味着您可以根据MIT许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅项目存储库中的LICENSE文件。
