macos-computer-use
Allows controlling Google Chrome by finding and clicking text, capturing window screenshots, listing windows, and sending input directly to Chrome processes.
Provides full desktop automation on macOS, including screen capture, OCR-based text recognition, and input simulation without moving the physical mouse or keyboard.
Allows launching and controlling Safari, including text-based interaction and screen capture.
Allows launching and controlling Slack, including text-based interaction and screen capture.
Click on "Install 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., "@macos-computer-useFind and click the 'Login' button on the current screen"
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.
๐ macOS Computer Use (MCP Server)
An ultra-fast, native Model Context Protocol (MCP) server that gives LLMs and autonomous agents full visual inspection and desktop automation capabilities on macOS without hijacking your physical hardware mouse or keyboard focus.
Built with a compiled Swift core leveraging Apple's native CoreGraphics, Vision OCR (VNRecognizeTextRequest), and direct process-level event routing (CGEvent.postToPid).
โก Key Highlights
๐ฏ Sub-30ms Apple Vision OCR (
find_text/click_text): No blind $(x, y)$ coordinate guessing. The agent finds buttons, labels, and text placeholders by name with pixel accuracy using Apple Neural Engine acceleration.๐ก๏ธ Non-Intrusive Background Execution: Decoupled from global macOS hardware event taps. Clicks, scrolls, and keystrokes can be targeted directly to specific application PIDs while you continue working in your IDE or browser.
๐๏ธ Virtual Cursor Overlay (
mark_cursor): The agent's target coordinates are visually drawn onto screenshot frames (cyan target ring + magenta pulse dot) without moving your physical mouse on screen.โก Reactive UI Synchronization (
wait_for_text): Replaces blindsleep()timeouts with a high-speed OCR polling loop that resolves the instant dynamic autocomplete dropdowns, modals, or state changes appear.๐ผ๏ธ Window-Isolated Screen Capture: Captures target application buffers cleanly in the background (
screencapture -l <wid> -o -x) without bringing the window to the front or capturing overlapping windows.
๐ ๏ธ Tools Exposed
Tool | Description | Key Parameters |
| Finds any button, label, or UI text via Apple Vision OCR and smoothly clicks its exact center. |
|
| Inspects on-screen or window-specific text and returns exact bounding boxes and logical coordinates. |
|
| Reactively polls the target window/screen until expected text appears (autocomplete dropdowns, toasts, sheets). |
|
| Captures the entire display or a specific background application window with optional virtual cursor rendering. |
|
| Lists open application windows, process IDs ( |
|
| Clicks at logical |
|
| Smoothly glides mouse cursor to |
|
| Smoothly drags mouse from |
|
| Injects plain text into active input fields (or directly into target process queues). |
|
| Presses special keys or keyboard shortcuts with modifiers. |
|
| Scrolls the mouse wheel vertically and horizontally. |
|
| Launches or brings a macOS application to the front. |
|
| Returns the currently active frontmost application name and window title. | None |
| Runs custom AppleScript for deep macOS Accessibility and UI hierarchy inspection. |
|
๐ Installation & Setup
1. Prerequisites
macOS 13.0+ (Apple Silicon or Intel)
Node.js 18+
Xcode Command Line Tools (for compiling the native Swift binary):
xcode-select --install
2. Clone & Build
git clone https://github.com/johnexzy/macos-computer-use.git
cd macos-computer-use
npm install(The postinstall script automatically compiles native_helper.swift into an optimized native binary).
๐ Required macOS Permissions
To allow desktop capture and input simulation, grant your host application (Terminal, iTerm2, Antigravity, Cursor, or VS Code) permissions in System Settings > Privacy & Security:
Screen & System Audio Recording: Required for
screenshotand visual OCR.Accessibility: Required for
mouse_click,type_text, andpress_key.
๐ MCP Configuration
Add this server to your MCP client configuration:
Antigravity / Claude Desktop / Cursor / Windsurf
Add to your mcp_config.json / claude_desktop_config.json:
{
"mcpServers": {
"macos-computer-use": {
"command": "node",
"args": ["/absolute/path/to/macos-computer-use/server.mjs"]
}
}
}๐งช Testing the Native Swift Helper Directly
You can test the native binary directly from your terminal:
# Display resolution and scaling
./native_helper size
# List active Chrome windows in Z-order
./native_helper list_windows "Google Chrome"
# Find a button or text on screen with Apple Vision OCR in ~30ms
./native_helper find_text "Search" "Google Chrome"
# Reactively wait for dynamic text to appear
./native_helper wait_for_text "quantum" "Google Chrome" nil 5.0๐ License
MIT ยฉ John Oba
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent
Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/johnexzy/macos-computer-use'
If you have feedback or need assistance with the MCP directory API, please join our Discord server