一个用于执行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># 克隆仓库
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都使用类似的MCP服务器配置格式。以下是设置Mac Shell MCP服务器的方法:
在您的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配置文件(位于~/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替换为您克隆仓库的实际路径。
为了更方便地设置,不需要保持终端窗口打开,您可以将包发布到npm并使用npx:
npm publish
"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客户端自动启动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 - 以其他用户身份执行命令execFile而不是exec来防止shell注入您可以通过使用add_to_whitelist工具来扩展白名单。例如:
{
"command": "npm",
"securityLevel": "requires_approval",
"description": "Node.js包管理器"
}
要像其他MCP服务器(如Brave Search)一样使用npx来使用Mac Shell MCP服务器,您可以将其发布到npm或直接从GitHub使用。
在您的MCP设置配置中添加以下内容:
"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:
"bin": {
"mac-shell-mcp": "./build/index.js"
}
npm publish
然后您可以在您的MCP配置中使用它:
"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文件。