Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Full macOS control — drive a Mac like a human: shell, AppleScript, files, and human-like GUI.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
MACCTL_SAFE_MODE, MACCTL_MODE, MACCTL_CONFIRM, MACCTL_PATH_ALLOWLIST, MACCTL_PROTECTED_PATHS必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"mac-control": {
"command": "npx",
"args": [
"-y",
"@dockndevai/mcp-mac-control"
],
"env": {
"MACCTL_SAFE_MODE": "your-value",
"MACCTL_MODE": "your-value",
"MACCTL_CONFIRM": "your-value",
"MACCTL_PATH_ALLOWLIST": "your-value",
"MACCTL_PROTECTED_PATHS": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add mac-control --env MACCTL_SAFE_MODE=your-value --env MACCTL_MODE=your-value --env MACCTL_CONFIRM=your-value --env MACCTL_PATH_ALLOWLIST=your-value --env MACCTL_PROTECTED_PATHS=your-value -- npx -y @dockndevai/mcp-mac-control動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"mac-control": {
"command": "npx",
"args": [
"-y",
"@dockndevai/mcp-mac-control"
],
"env": {
"MACCTL_SAFE_MODE": "your-value",
"MACCTL_MODE": "your-value",
"MACCTL_CONFIRM": "your-value",
"MACCTL_PATH_ALLOWLIST": "your-value",
"MACCTL_PROTECTED_PATHS": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"mac-control": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@dockndevai/mcp-mac-control"
],
"env": {
"MACCTL_SAFE_MODE": "your-value",
"MACCTL_MODE": "your-value",
"MACCTL_CONFIRM": "your-value",
"MACCTL_PATH_ALLOWLIST": "your-value",
"MACCTL_PROTECTED_PATHS": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
MACCTL_SAFE_MODE envMACCTL_MODE envMACCTL_CONFIRM envMACCTL_PATH_ALLOWLIST envMACCTL_PROTECTED_PATHS envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント dockndevai で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.3.1)がレジストリに届いたのは41 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, FactLot
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Cited CRE facts and deterministic calculators for agents: rent, CAM, debt sizing, IRR, parcel IDs.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
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
adminmode 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-macosinstead.
Part of the dockndevai MCP server suite.
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.
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:
screenshotclick, type_text, drag, scroll, key_press) and list_windowsbrew install cliclickclaude 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.
Full control needs no configuration. Everything below is about restricting it:
| Variable | Default | Effect |
|---|---|---|
MACCTL_SAFE_MODE | false | true → read-only, every power gated, confirmations on (safe-by-default) |
MACCTL_MODE | admin | read-only / read-write / admin — caps which tools are registered |
MACCTL_ALLOW_EXEC | true | shell / AppleScript / kill |
MACCTL_ALLOW_DELETE | true | delete to Trash |
MACCTL_ALLOW_INPUT | true | GUI input (mouse/keyboard) |
MACCTL_CONFIRM | false | true → 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_RUN | false | validate + log writes without executing |
MACCTL_AUDIT_LOG | true | JSON 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.
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.
| Variable | Default | Effect |
|---|---|---|
MACCTL_GUARD_MODE | off | monitor (log what it would do) / enforce (block or require confirm) |
MACCTL_GUARD_URL | http://127.0.0.1:8799 | the local laya-guard daemon |
MACCTL_GUARD_TIMEOUT_MS | 2000 | per-check timeout |
MACCTL_GUARD_FAIL_CLOSED | confirm | when 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.
npm install
npm run build echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | node dist/index.js # list tools npm test
MIT