MCP.Market

Macbeth MCP server

by wende·io.github.wende/macbeth·v0.2.4·4 stars

Open-source computer use for macOS agents.

A92/100grade A
What users say
No reviews yet
Be the first
Safety scan
A92/100

full report

Adoption
Growing

4 stars18 downloads/wk

Reviews

Write one

Nobody has reviewed Macbeth yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Macbeth tools (27, 3 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • begin_activity

    Turn on the on-screen interaction indicator before you control the computer through some OTHER tool (a different MCP server, computer-use, a shell script) that Macbeth cannot see. Macbeth's own click/fill/press_key/run_applescript tools already show the indicator, so you do NOT need this for them. Returns a token; you MUST call end_activity with that token when the external work finishes (a crashe

  • click

    Click a UI element. Auto-waits for the element to appear. On Electron/web content, the default 'auto' strategy tries AXPress (and adjacent nodes) then falls back to a synthetic mouse click; override with 'mouse' for canvas-heavy UIs or 'ax' to force a press. Mouse clicks briefly activate the target window, then restore the previous app, window, and cursor.

  • connect_app

    OPTIONAL preflight. Every app-taking tool (query_tree, click, fill, screenshot, ...) connects on its own, so you do NOT need to call this first. Call it to (a) check an app is reachable through Accessibility before driving it, (b) see exactly how a fuzzy name resolved, or (c) warm up an Electron app's accessibility tree with a custom readyTimeoutMs. It returns an app handle ("h_3") that you can pa

  • dump_attributes

    Dump all accessibility attributes for a previously resolved element handle.

  • end_activity

    End an interaction-indicator scope started by begin_activity. Pass the token that begin_activity returned. Safe to skip if the client disconnects; the daemon expires abandoned scopes on its own.

  • extract_text

    Extract text from an app window using OCR (Vision framework). Bridges accessibility gaps in apps with poor AX support. Pass either an app name to capture + OCR, or base64 PNG data to OCR directly.

  • fill

    Set the text value of a field. Auto-waits for the element to appear. On Electron/web content, the default 'auto' strategy writes the AX value then synthesizes keystrokes (so frameworks like React see the input); override with 'keyboard' to force typing or 'ax' to force a direct value write.

  • get_element

    Find a specific UI element and return its properties (role, title, value, enabled, focused).

  • list_apps

    List running macOS apps, split into the ones that are currently reachable through the Accessibility API and the ones that are running but will fail to connect (launchers, helper processes, apps that never implement AX). Blocked entries carry the AX error code, what it means, and what to do instead.

  • list_daemon_methods

    List every JSON-RPC method registered by the daemon. Used to verify that daemon capabilities are exposed through MCP.

  • list_menu_bar

    Return a menu-only Accessibility view. query_tree already includes menus, so use this only when that menu section was omitted, truncated, or a compact menu-only result is needed.

  • list_shortcuts

    List all Apple Shortcuts available on this Mac.

  • list_skills

    List available macbeth skills. Each skill has instructions (SKILL.md) and optional runnable scripts.

  • list_windows

    List open windows across macOS Spaces without touching an accessibility tree.

  • load_skill

    Load a skill by name. Returns the SKILL.md instructions and lists any runnable scripts.

  • pin_handle

    Pin an element handle to prevent it from expiring (default TTL is 5 minutes). Useful for long-running workflows where you need a stable reference to a panel or control.

  • press_key

    WARNING: This tool steals focus — it activates the target app window before sending input. Use as a last resort when click/fill cannot achieve the goal (e.g. keyboard shortcuts, arrow-key navigation). Prefer "fill" for text entry and "click" for buttons. Key names: "return", "tab", "escape", "a"-"z", "1"-"9", "f1"-"f12", "up", "down", "left", "right", "space", "delete". Modifiers: "cmd", "shift",

  • press_keys

    WARNING: This tool steals focus — it activates the target app window before sending input. Use as a last resort when click/fill cannot achieve the goal. Prefer "fill" for text entry and "click" for buttons. Sends a sequence of keyboard inputs in one call. Each step accepts either `key` plus optional `modifiers`, or `text` to type literally, plus optional `delayMs`. Reports the same dispatch outcom

  • query_tree

    Get an app's accessibility tree, including its menu hierarchy. Use this first; it connects automatically, so a separate connect_app or list_menu_bar call is unnecessary. Element handles (h_N) are stable: the same element keeps the same handle across calls, so handles you already have stay valid and you can plan several actions from one tree instead of re-querying between them. A handle that stops

  • read_form

    Read all form-like controls (text fields, sliders, checkboxes, popups, etc.) from a subtree. Returns each control's label, current value, type, editability, and handle. Use this to inspect panel contents without parsing the full tree.

  • run_applescriptwrite action

    Run an AppleScript or JavaScript for Automation (JXA) script. Returns the script's output as text.

  • run_shortcutwrite action

    Run an Apple Shortcut by name. Shortcuts are system-level automations, not tied to any specific app.

  • run_skill_scriptwrite action

    Run a script from a skill's scripts/ directory. Scripts are .mjs files that automate specific workflows using macbeth.

  • screenshot

    Capture the default visible app window, or select a window returned by list_windows. Explicit selection does not activate the window or switch Spaces; some apps may provide blank content for off-Space windows.

  • select_menu_item

    Select a native menu bar item by path (e.g. ["Track", "New Audio Track"]). Uses the Accessibility API directly, accepts a fuzzy app name or PID, and does not steal focus.

  • unpin_handle

    Unpin a previously pinned handle, resuming normal TTL expiry.

  • wait_for

    Wait for a UI condition. Conditions: 'exists' (default, wait for element to appear), 'value_equals' (wait for specific value), 'value_changes' (wait for any value change), 'enabled' (wait for element to become enabled).

Public scan report

scanner v0.1.9 · 2026-09-24 · same rubric, same numbers if you re-run it

no findings
  • Code scan46 source files scanned25/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitylocal package, no credentials required12/15
  • Maintenancelast push 4 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Overall 92/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How Macbeth compares

Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
92/100
higher than 95% of 48,255 servers
Tools
27
the typical server has 7
Tools that change things
11%
typical: 0%. Fewer write tools means less an agent can break
GitHub stars
4
more than 82% of 28,688 servers
Downloads a week
18
more than 5% of 12,191 servers with a package

What its tools let an agent do: 24 read · 3 run or deploy

Install Macbeth in Claude Code, Cursor or VS Code

Runs npx -y macbeth on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add macbeth -- npx -y macbeth
Add to Cursor

What the publisher says

From the Macbeth repository's README, as published. We do not edit it. Read it on GitHub

Macbeth — Open-source Computer Use for macOS

Give the agent you already use hands and eyes on your Mac.

See and operate Mac applications through MCP or TypeScript, including native and Electron interfaces.

Structured UI access when possible. Screenshots and OCR when necessary. Think Playwright for your entire Mac.

Simulated walkthrough of Macbeth's current MCP tool surface: System Settings, Electron interaction, and screenshot/OCR.

Quickstart · Examples · Why Macbeth? · TypeScript · Security · Skills

Quickstart

Give Claude Code access to Macbeth:

claude mcp add macbeth -- npx -y macbeth

Then ask it to verify the connection:

Using Macbeth, list the running applications, connect to Finder, inspect its front window, and summarize the first few controls you can see. Do not perform any other actions.

Macbeth ships with a prebuilt, signed and notarized universal daemon. No Swift toolchain or manual service installation is required. If setup fails, run npx macbeth doctor; it prints a self-contained diagnostic prompt you can paste back into your agent.

Any MCP client that can launch a stdio server can use npx -y macbeth. See MCP setup for generic configuration, updates, and the complete tool list.

Let your agent guide the installation

Add Macbeth as an MCP server using npx -y macbeth. Run npx macbeth doctor, guide me through granting only the permissions I need, and verify the setup by inspecting Finder. Do not take any unrelated actions.

Across your Mac

Work inside Unity, Logic Pro, and other complex tools

“In Logic Pro, set the project tempo to 128 BPM and start playback.”

Macbeth combines structured controls, menus, keyboard input, screenshots, OCR, and application-specific guidance. Logic Pro has a dedicated skill. Applications with thinner accessibility trees, including parts of Unity, can combine structured controls with keyboard, menu, screenshot, and OCR fallbacks.

Automate macOS itself

“Open System Settings, find the firewall controls, and report their current state without changing anything.”

Macbeth can inspect named controls and values, select native menu items, and use keyboard input when a semantic action is unavailable.

Use applications even when they have no API

“Open HEY, find the newest visible thread from the design team, and summarize it without sending or changing anything.”

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Macbeth: common questions

Is Macbeth MCP server safe?
Yes, by our scan: it is graded A (92/100). Read the Macbeth safety report
How do I install Macbeth?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does Macbeth need an API key?
Not as far as the registry entry and our scan can tell: no credentials are declared or required.
Is Macbeth maintained?
The last commit was 45 days ago (2026-09-20). The latest release is v0.2.4.
How does Macbeth compare with other MCP servers?
safety score 92/100 (higher than 95% of 48,255 servers); tools 27 (the typical server has 7); tools that change things 11% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.