Mcp Mac Control

io.github.dockndevai由 GitHub 帳號 dockndevai 發布v0.3.1更新於 Nov 3, 2026

Full macOS control — drive a Mac like a human: shell, AppleScript, files, and human-like GUI.

概覽

AI 產生的概覽

本機 MCP 伺服器,讓 AI 助理完全控制 Mac:執行 shell 指令、AppleScript、操作檔案與程序,並像人一樣用滑鼠鍵盤操作圖形介面。

可以做什麼
  • 感知機器狀態:截圖、讀取螢幕尺寸、列出視窗、應用程式與程序、查看前景應用程式、讀取檔案與目錄、取得系統資訊與剪貼簿。
  • 像人一樣操作桌面:移動、點擊、雙擊、右鍵、拖曳、捲動、輸入文字、按組合鍵、啟用或結束應用程式、開啟項目、設定剪貼簿、發送通知。
  • 執行高權限操作:執行任意指令、執行 AppleScript/JXA、將路徑刪到垃圾桶、終止程序。
  • 寫入檔案,並依截圖、操作、再截圖的循環完成圖形介面自動化。
適用情境
適合讓助理端到端操作一台 Mac,例如自動化只有圖形介面的應用程式、重現桌面工作流程,或在你掌控的機器上結合 shell、AppleScript 與滑鼠鍵盤操作。若只需要唯讀檢視或更安全的預設設定,則不太合適。
執行需求
僅支援 macOS,透過 npx 從 npm 套件在本機執行。主機應用程式需授予螢幕錄製(截圖)、輔助使用(圖形介面輸入、列出視窗)與自動化(AppleScript/應用程式控制)權限。滑鼠控制需透過 Homebrew 安裝 cliclick。AI 風險防護需選用的 laya-guard 守護程序。
安裝前請注意
預設即為完全控制:admin 模式下指令執行、刪除與圖形介面輸入全部開啟,未設定 MACCTL_CONFIRM 時不會要求確認。助理讀取的任何內容都可能夾帶提示注入,從而在你的 Mac 上執行任意程式碼。可用 MACCTL_SAFE_MODE、MACCTL_MODE、路徑與指令白名單、受保護路徑及試執行來收緊權限;稽核日誌預設輸出到 stderr。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Mcp Mac Control,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

mcp-mac-control

[npm] [CI] [licence]

A Model Context Protocol server that gives an AI agent full control of a Mac — like a person sitting at it. Shell, AppleScript, files, processes, and human-like GUI control: move, click, double/right-click, drag, scroll, type, and press key combos — with a screenshot + window/screen-size perception loop.

⚠️ This server is full-control by default. It starts in admin mode with command execution, deletes, and GUI input all enabled. That is powerful and dangerous: anything the agent reads (a web page, an email, a file) could contain a prompt injection that then runs arbitrary code on your Mac. Only connect it to an agent and content you trust. Set MACCTL_SAFE_MODE=true to flip the whole thing to safe-by-default. If you want safe-by-default as the baseline, use the sibling @dockndevai/mcp-macos instead.

Part of the dockndevai MCP server suite.

What it gives an agent (26 tools)

Perceive — screenshot, get_screen_size, list_windows, get_frontmost_app, list_apps, system_info, list_directory, read_file, list_processes, get_clipboard

Operate the desktop like a human — move_mouse, click (left/right/double), drag, scroll, type_text, key_press (with ⌘/⌥/⌃/⇧), activate_app, quit_app, open, set_clipboard, notify, write_file

Full power — run_command (any program, no shell unless you ask for one), run_applescript (AppleScript/JXA — drive any scriptable app), delete_path (→ Trash), kill_process

The classic loop: screenshot → decide → click/type/drag/scroll → screenshot again.

Install

bash
npx -y @dockndevai/mcp-mac-control

macOS only. You'll need to grant the host app (Terminal, your IDE, Claude Desktop, …) macOS permissions the first time each capability is used:

  • Screen Recording → for screenshot
  • Accessibility → for GUI input (click, type_text, drag, scroll, key_press) and list_windows
  • Automation → for AppleScript / app control
  • Mouse control uses cliclick: brew install cliclick

Configure (Claude Code)

bash
claude mcp add mac-control -- npx -y @dockndevai/mcp-mac-control

That's it — it's full-control by default. To scope it down, add env flags (see below). See docs/CLIENTS.md for Claude Desktop / Cursor / Codex / VS Code / Windsurf, and .env.example for every variable.

Dialing the control up or down

Full control needs no configuration. Everything below is about restricting it:

VariableDefaultEffect
MACCTL_SAFE_MODEfalsetrue → read-only, every power gated, confirmations on (safe-by-default)
MACCTL_MODEadminread-only / read-write / admin — caps which tools are registered
MACCTL_ALLOW_EXECtrueshell / AppleScript / kill
MACCTL_ALLOW_DELETEtruedelete to Trash
MACCTL_ALLOW_INPUTtrueGUI input (mouse/keyboard)
MACCTL_CONFIRMfalsetrue → destructive ops pause for human approval via MCP elicitation
MACCTL_PATH_ALLOWLIST(empty = anywhere)confine file ops to these roots
MACCTL_PROTECTED_PATHS(empty)roots readable but never modified/deleted
MACCTL_COMMAND_ALLOWLIST(empty = any)restrict run_command to these programs
MACCTL_DRY_RUNfalsevalidate + log writes without executing
MACCTL_AUDIT_LOGtrueJSON audit line per guarded op, to stderr

The policy engine (src/security.ts) is the same graduated model as the rest of the suite — this server just ships it wide open by default. See SECURITY.md.

AI risk guard (optional)

For an extra layer on top of the static rules, this server can consult a local laya-guard daemon before running a high-risk tool (run_command, run_applescript, delete_path). The guard classifies the actual command — deterministic patterns plus a local decision model — as allow / confirm / block. It runs after the deterministic policy and can only tighten (add a confirm or block), never grant.

VariableDefaultEffect
MACCTL_GUARD_MODEoffmonitor (log what it would do) / enforce (block or require confirm)
MACCTL_GUARD_URLhttp://127.0.0.1:8799the local laya-guard daemon
MACCTL_GUARD_TIMEOUT_MS2000per-check timeout
MACCTL_GUARD_FAIL_CLOSEDconfirmwhen the daemon is unreachable in enforce mode: confirm or allow

Run the daemon with pipx install laya-guard && laya-guard. Start in monitor to see what it catches, then switch to enforce.

Developing

bash
npm installnpm run buildecho '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | node dist/index.js   # list toolsnpm test

Licence

MIT

來源:README.md,提交 ff6e364

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

3
  1. v0.3.1最新Sep 26, 2026
  2. v0.2.1Sep 19, 2026
  3. v0.1.0Sep 17, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分