关于 mcp-mac-control
mcp-mac-control 是 MCP 服务,可让 AI Agent 通过文件、Shell、AppleScript、进程和 GUI 操作 Mac。适用于需要广泛桌面控制的 Agent;默认以 admin 模式启动,可通过配置启用安全限制。
主要功能
- 01截取屏幕并查看窗口
- 02控制鼠标和键盘
- 03读写文件
- 04运行命令和 AppleScript
- 05管理应用和进程
- 06配置访问限制与确认
适用场景
- 01自动执行 Mac 图形界面操作
- 02检查屏幕和应用状态
- 03对可脚本化应用运行 AppleScript
- 04限制或审计高风险操作
MCP 相关
它向 MCP 客户端提供 Mac 观察和控制工具。服务通过 stdio 运行,并支持使用 MCP elicitation 请求人工批准。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @dockndevai/mcp-mac-controlMACCTL_SAFE_MODESet true to invert to safe-by-default: read-only, all powers gated, confirmations on. Default false (full control).MACCTL_MODEAccess mode: read-only | read-write | admin. Defaults to admin (or read-only in safe mode).MACCTL_CONFIRMSet true to require human approval (via MCP elicitation) on destructive ops. Default off in full control.MACCTL_PATH_ALLOWLISTComma-separated path roots the agent may touch (empty = anywhere).MACCTL_PROTECTED_PATHSComma-separated path roots that may be read but never modified/deleted (empty by default in full control).本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
mcp-mac-control
一个 Model Context Protocol 服务,可让 AI Agent 像坐在 Mac 前的人一样完全控制 Mac。Shell、AppleScript、文件、进程,以及类人的 GUI 控制:移动、单击、双击/右键单击、拖动、滚动、输入文本和按下组合键,并通过截图以及窗口/屏幕尺寸感知循环来辅助操作。
⚠️ 此服务默认拥有完全控制权限。 它以
admin模式启动,启用命令执行、删除和 GUI 输入。这既强大又危险:Agent 读取的任何内容(网页、电子邮件、文件)都可能包含提示注入,进而在 Mac 上运行任意代码。仅将它连接到你信任的 Agent 和内容。设置MACCTL_SAFE_MODE=true,即可将所有功能切换为默认安全模式。如果你希望默认安全模式作为基础配置,请改用同系列的@dockndevai/mcp-macos。
它为 Agent 提供的功能(26 个工具)
感知 — screenshot、get_screen_size、list_windows、get_frontmost_app、list_apps、system_info、list_directory、read_file、list_processes、get_clipboard
像人一样操作桌面 — move_mouse、click(左键/右键/双击)、drag、scroll、type_text、key_press(支持 ⌘/⌥/⌃/⇧)、activate_app、quit_app、open、set_clipboard、notify、write_file
完全控制 — run_command(运行任意程序,除非你明确要求,否则不使用 Shell)、run_applescript(AppleScript/JXA——驱动任何可编写脚本的应用)、delete_path(→废纸篓)、kill_process
经典操作循环:screenshot → 决策 → click/type/drag/scroll → 再次 screenshot。
安装
npx -y @dockndevai/mcp-mac-control
仅适用于 macOS。首次使用每项功能时,你需要授予宿主应用(Terminal、IDE、Claude Desktop 等)相应的 macOS 权限:
- 屏幕录制 → 用于
screenshot - 辅助功能 → 用于 GUI 输入(
click、type_text、drag、scroll、key_press)和list_windows - 自动化 → 用于 AppleScript/应用控制
- 鼠标控制使用 cliclick:
brew install cliclick
配置(Claude Code)
claude mcp add mac-control -- npx -y @dockndevai/mcp-mac-control
就是这样——默认拥有完全控制权限。若要限制权限,请添加环境变量标志(见下文)。Claude Desktop/Cursor/Codex/VS Code/Windsurf 的配置请参阅 docs/CLIENTS.md,所有变量请参阅 .env.example。
调高或调低控制级别
无需配置即可获得完整控制权。以下所有设置都是关于限制控制权:
| 变量 | 默认值 | 作用 |
|---|---|---|
MACCTL_SAFE_MODE | false | true → 只读,所有高权限操作均受限,并启用确认(默认安全) |
MACCTL_MODE | admin | read-only / read-write / admin — 限制注册的工具 |
MACCTL_ALLOW_EXEC | true | shell / AppleScript / kill |
MACCTL_ALLOW_DELETE | true | 移至废纸篓 |
MACCTL_ALLOW_INPUT | true | GUI 输入(鼠标/键盘) |
MACCTL_CONFIRM | false | true → 破坏性操作会暂停,通过 MCP elicitation 请求人工批准 |
MACCTL_PATH_ALLOWLIST | (为空 = 任意位置) | 将文件操作限制在这些根路径内 |
MACCTL_PROTECTED_PATHS | (为空) | 可读取但永不修改/删除的根路径 |
MACCTL_COMMAND_ALLOWLIST | (为空 = 任意命令) | 将 run_command 限制为这些程序 |
MACCTL_DRY_RUN | false | 验证并记录写入操作,但不执行 |
MACCTL_AUDIT_LOG | true | 每个受保护操作都向 stderr 输出一条 JSON 审计记录 |
策略引擎(src/security.ts)采用与套件其余部分相同的分级模型 — 只是此服务默认完全开放。请参阅 SECURITY.md。
AI 风险防护(可选)
除了静态规则之外,此服务还可以在运行高风险工具(run_command、run_applescript、delete_path)之前,查询本地
laya-guard 守护进程。防护程序会根据实际命令进行分类 —
采用确定性模式匹配和本地决策模型 — 结果为 允许 / 确认 / 阻止。它在确定性策略之后运行,且只能收紧策略(添加确认或阻止),不能放行。
| 变量 | 默认值 | 作用 |
|---|---|---|
MACCTL_GUARD_MODE | off | monitor(记录其会采取的操作) / enforce(阻止操作或要求确认) |
MACCTL_GUARD_URL | http://127.0.0.1:8799 | 本地 laya-guard 守护进程 |
MACCTL_GUARD_TIMEOUT_MS | 2000 | 每次检查的超时时间 |
MACCTL_GUARD_FAIL_CLOSED | confirm | 在强制执行模式下守护进程无法连接时:confirm 或 allow |
使用 pipx install laya-guard && laya-guard 运行守护进程。先启用 monitor,查看它会拦截哪些操作,
然后切换到 enforce。
开发
npm install
npm run build
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | node dist/index.js # list tools
npm test
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。