Mac Shell MCP Server

Mac Shell MCP Server

一个 MCP 服务器,允许通过 Claude 或 Roo Code 安全地执行 macOS 终端命令,并内置安全白名单和审批机制。

Category
访问服务器

README

Mac Shell MCP 服务器

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

特性

  • 通过 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": "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 包管理器"
}

用作 npm 包

要像 Brave Search 等其他 MCP 服务器一样使用带有 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. 将 "bin" 字段添加到 package.json:
    "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 文件。

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选