claude-background-control
Supports interacting with Electron app content using real mouse clicks (CoreGraphics) when accessibility-based control is insufficient.
Provides control of the macOS GUI through accessibility APIs and fallback real input, enabling UI inspection, clicking, setting values, typing, keyboard shortcuts, menu navigation, scrolling, dragging, screenshots, and app activation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@claude-background-controlfill the subject in Mail with 'Meeting notes'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
claude-background-control
An MCP server that lets Claude Code use your Mac's GUI: read what's on
screen, click things, and type. It uses only built-in macOS tools
(osascript, screencapture, sips), so there are no native npm
dependencies to break on install.
It goes through the accessibility tree first. That way it can press buttons and fill in text fields in background apps without moving your mouse or taking focus away from what you're doing. Real mouse and keyboard events are only the fallback.
Install
claude mcp add computer-control -- npx -y claude-background-controlRequires macOS and Node 20+ (development needs 22.18+ to run the TypeScript tests directly).
Related MCP server: Desktop Pilot MCP
Permissions (first run)
macOS has to allow the app that runs Claude Code (Terminal, iTerm, the Claude app, …):
System Settings → Privacy & Security → Accessibility: turn it on for that app. Every tool except
screenshotneeds this.System Settings → Privacy & Security → Screen & System Audio Recording: turn it on for that app. Needed for
screenshot.Restart that app.
If a permission is missing, the error names the exact app and path
macOS expects. That isn't always the app you see. Claude Code inside the
Claude desktop app, for example, needs the grant on
~/Library/Application Support/Claude/claude-code/<version>/claude.app,
which you add with + and Cmd+Shift+G. Because that path includes the
version number, a Claude Code update can require granting it again.
Tools
Tool | What it does |
| Lists UI elements of the app's windows with an id, role, label, value, and frame. Start here. |
| Presses a button or focuses a field via accessibility, with no mouse movement. Falls back to a real click. |
| Sets a text field's value directly. Works in background apps and with any language. |
| Types into the focused field by pasting, so Korean and other IME input comes through correctly. The whole clipboard (images, files, rich text) is restored afterwards. |
| Sends key codes like |
| Waits until a matching element appears, or disappears with |
| Real mouse click (CoreGraphics) for canvas or Electron content. |
| Walks the menu bar by item names, e.g. |
| Mouse-wheel scroll by lines, at a point or wherever the cursor is. |
| Left-button drag: select text, move things, resize. |
| PNG of the main screen, a region, or one app's front window, even if other windows cover it. Image pixels equal screen points. For a window, add the reported origin to get click coordinates. |
| Launches an app or brings it to the front. |
app is the process name (e.g. "TextEdit"). If you leave it out, the
frontmost app is used. When a label or role matches in several windows,
the frontmost window wins. If it's still ambiguous, you get a list of
ids to choose from.
Develop
npm install
npm test # pure-logic unit tests
npm run buildAfter changing src/mac.ts, run the manual GUI checklist in
scripts/smoke-test.md.
Limits
Main display only.
inspectdoesn't descend into leaf-like roles such as buttons and static text.With Stage Manager on, a background app's window is only a side-strip thumbnail, so
screenshot(app)warns and suggestsactivate_appfirst.
Design notes: docs/superpowers/specs/2026-09-30-computer-control-mcp-design.md
This server cannot be deployed
Maintenance
Related MCP Connectors
Use your own Mac from ChatGPT, Claude or Codex: files, commands, documents, and a browser.
Deploy sims to any screen. Control your displays with Claude.
- SimSenseOAuthai.simsense
Deploy sims to any screen. Control your displays with Claude.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables Claude to see and interact with any macOS application using natural language commands. Perfect for testing Mac applications, UI automation, and app development with AI assistance.33MIT
- AlicenseNot gradedqualityDmaintenanceEnables high-speed native macOS automation for Claude by interacting directly with the Accessibility API, AppleScript, and UI trees instead of using screenshots. It allows users to read app states, click elements, and type text semantically across any macOS application.7 npm11MIT
- AlicenseAqualityCmaintenanceEnables Claude to inspect and drive native macOS app UIs during development via an in-process view tree and screenshot renderer, without requiring screen recording permission.7MIT
- FlicenseNot gradedqualityCmaintenanceEnables macOS computer-use automation through public Apple APIs, supporting app and window discovery, clicking, typing, scrolling, and field setting via accessibility controls.4-