mcp-mac-control について
mcp-mac-controlは、ファイル、シェル、AppleScript、プロセス、GUIを通じてAIエージェントがMacを操作・観察するMCPサーバーです。広範なデスクトップ制御を必要とするエージェント向けで、初期状態はadminモードですが、設定で安全制御を有効にできます。
主な機能
- 01画面キャプチャとウィンドウ確認
- 02マウスとキーボードの操作
- 03ファイルの読み書き
- 04コマンドとAppleScriptの実行
- 05アプリとプロセスの管理
- 06アクセス制限と確認の設定
活用シーン
- 01MacのGUI操作の自動化
- 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
AI エージェントにMac を人が操作しているかのように完全に制御させる、Model Context Protocol サーバーです。シェル、AppleScript、ファイル、プロセス、そして人間のような GUI 操作に対応しています。移動、クリック、ダブルクリック/右クリック、ドラッグ、スクロール、文字入力、キーの組み合わせの押下が可能で、スクリーンショットとウィンドウ/画面サイズを認識するループを備えています。
⚠️ このサーバーはデフォルトで完全な制御権を持ちます。 起動時は
adminモードで、コマンドの実行、削除、GUI 入力がすべて有効になっています。強力である一方、危険でもあります。エージェントが読み取る内容(ウェブページ、メール、ファイルなど)にプロンプトインジェクションが含まれていると、Mac 上で任意のコードが実行される可能性があります。信頼できるエージェントとコンテンツにのみ接続してください。MACCTL_SAFE_MODE=trueを設定すると、すべてをデフォルトでセーフモードに切り替えられます。デフォルトで安全な設定をお望みの場合は、代わりに姉妹プロジェクトの@dockndevai/mcp-macosをお使いください。
dockndevai MCP サーバースイートの一部です。
エージェントが利用できる機能(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(任意のプログラムを実行。シェルは指定しない限り使用しません)、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 | シェル / AppleScript / kill |
MACCTL_ALLOW_DELETE | true | ゴミ箱への削除 |
MACCTL_ALLOW_INPUT | true | GUI 入力(マウス/キーボード) |
MACCTL_CONFIRM | false | true → 破壊的な操作は MCP のエリシテーションを通じて人間の承認を得るまで一時停止します |
MACCTL_PATH_ALLOWLIST | (空 = どこでも) | ファイル操作をこれらのルートに限定します |
MACCTL_PROTECTED_PATHS | (空) | 読み取りはできますが、変更や削除はできないルート |
MACCTL_COMMAND_ALLOWLIST | (空 = 任意) | run_command をこれらのプログラムに限定します |
MACCTL_DRY_RUN | false | 書き込みを実行せずに検証してログに記録します |
MACCTL_AUDIT_LOG | true | 保護対象の操作ごとに JSON 監査行を stderr に出力します |
ポリシーエンジン(src/security.ts)は、スイートのほかの部分と同じ段階的なモデルを採用しています。このサーバーでは、デフォルトで制限がありません。SECURITY.md を参照してください。
AI リスクガード(任意)
静的ルールに加えて、リスクの高いツール(run_command、run_applescript、delete_path)の実行前に、このサーバーはローカルの
laya-guard デーモンに問い合わせることができます。ガードは、実際のコマンドを
決定論的なパターンとローカルの判断モデルで分類し、allow / confirm / block のいずれかを返します。これは決定論的なポリシーの後に実行され、制限を強める(確認の追加またはブロック)ことしかできず、許可を与えることはありません。
| 変数 | デフォルト | 効果 |
|---|---|---|
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 | enforce モードでデーモンに接続できない場合: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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。