macos-computer-use
🍏 macOS Computer Use (MCP Server)
Ein ultraschneller, nativer Model Context Protocol (MCP)-Server, der LLMs und autonomen Agenten visuelle Inspektion und Fail-Closed-Desktop-Automatisierung auf macOS bietet.
Gebaut mit einem kompilierten Swift-Kern, der Apples native CoreGraphics, Vision OCR (VNRecognizeTextRequest) und Accessibility-APIs für semantische Hintergrundaktionen nutzt. Ungezielte Eingaben bleiben ein expliziter globaler CoreGraphics-Fallback.
⚡ Wichtige Highlights
🎯 Native Apple Vision OCR (
find_text/click_text): Findet sichtbaren Text mit explizitemexact-,word-,prefix- odersubstring-Abgleich und verweigert mehrdeutige Klicks, sofern kein Vorkommen ausgewählt wird.🛡️ Fail-Closed-Targeting:
windowIdist maßgeblich. Ungültige IDs und App/Fenster-Konflikte geben Fehler zurück, anstatt auf ein anderes Fenster oder den gesamten Bildschirm zurückzufallen.🔐 Standardmäßig sicher: Globale Zeiger-/Tastatureingaben, Aktivierung der Vordergrund-App und benutzerdefiniertes AppleScript sind deaktiviert, es sei denn, der MCP-Prozess startet mit
MACOS_COMPUTER_USE_UNSAFE=1.🩺 Berechtigungs-Preflight:
get_capabilitiesmeldet die Bereitschaft von Accessibility, Bildschirmaufnahme und Ereignissynthese, ohne die macOS-Berechtigungsanfrage-APIs aufzurufen.♿ Hintergrund-Accessibility-Aktionen: Steuerelemente inspizieren, Werte setzen, semantische Aktionen ausführen und bearbeitbare Steuerelemente anvisieren, ohne deren Anwendung zu aktivieren.
⏱️ Semantisches Warten im Hintergrund: Wartet auf das Erscheinen von Accessibility-Steuerelementen, ohne einen Screenshot zu machen oder Bildschirmaufnahme zu benötigen.
🖱️ Live-Agent-Cursor: Klicks und Scrollen gleiten einen markanten, klickdurchlässigen Cursor-Overlay zum Ziel, zeigen Erfolgs- oder Fehlerfeedback und blenden bei Inaktivität aus, ohne den physischen Zeiger zu bewegen.
👁️ Passender Screenshot-Cursor (
mark_cursor): Zurückgegebene Aktions-Screenshots rendern denselben Agent-Cursor an der Zielkoordinate.⚡ Reaktive UI-Synchronisierung (
wait_for_text): Ersetzt blindesleep()-Timeouts durch eine Hochgeschwindigkeits-OCR-Polling-Schleife, die auflöst, sobald dynamische Autocomplete-Dropdowns, Modals oder Zustandsänderungen erscheinen.🖼️ Fensterisolierte Bildschirmaufnahme: Erfasst Zielanwendungs-Puffer sauber im Hintergrund (
screencapture -l <wid> -o -x), ohne das Fenster in den Vordergrund zu bringen oder überlappende Fenster zu erfassen.
Related MCP server: ScreenHand
🛠️ Verfügbare Tools
Tool | Beschreibung | Wichtige Parameter |
| Findet OCR-Text, gleitet den Live-Cursor dorthin, löst Mehrdeutigkeiten auf und ruft das passende Accessibility-Steuerelement auf. |
|
| Untersucht Text auf dem Bildschirm oder in einem bestimmten Fenster und gibt exakte Begrenzungsrahmen und logische Koordinaten zurück. |
|
| Pollt reaktiv das Zielfenster/den Bildschirm, bis erwarteter Text erscheint (Autocomplete-Dropdowns, Toasts, Sheets). |
|
| Erfasst den gesamten Bildschirm oder ein bestimmtes Hintergrund-Anwendungsfenster mit optionaler virtueller Cursor-Rendering. |
|
| Meldet Berechtigungsbereitschaft, Plattformdetails und die aktive sichere/unsichere Richtlinie, ohne Zugriff anzufordern. | Keine |
| Listet offene Anwendungsfenster, Prozess-IDs ( |
|
| Liest semantische Steuerelemente aus einem exakten Hintergrundfenster. Werte sind standardmäßig privat und erfordern |
|
| Wartet auf ein oder mehrere semantische Steuerelemente in einem exakten Hintergrundfenster. |
|
| Setzt einen semantischen Steuerelementwert und prüft dabei, dass das Ziel im Hintergrund blieb. |
|
| Führt |
|
| Gleitet den Live-Cursor zu |
|
| Verwendet verifizierte, anwendungsgezielte Zustellung, wenn ein Ziel und ein semantischer Selektor angegeben sind. |
|
| Sendet unterstützte Tasten an ein semantisches bearbeitbares Steuerelement im Modus |
|
| Gleitet den Live-Cursor zum Ziel und passt eine AX-Scrollleiste an. Ungezieltes globales Scrollen erfordert den unsicheren Modus. |
|
| Startet standardmäßig im Hintergrund. |
|
| Gibt die vorderste Anwendung von | Keine |
| Führt benutzerdefiniertes AppleScript nur aus, wenn der unsichere Modus aktiviert ist; in der Standard-Tool-Liste weggelassen. |
|
🚀 Installation & Einrichtung
Mit npx ausführen
Konfigurieren Sie einen MCP-Client, um das neueste öffentliche Paket herunterzuladen, zu bauen und zu starten:
{
"mcpServers": {
"macos-computer-use": {
"command": "npx",
"args": ["-y", "macos-computer-use-mcp"]
}
}
}Das Paket enthält einen ad-hoc-signierten universellen Swift-Helfer für Apple Silicon und Intel-Macs, sodass npx keinen lokalen Swift-Compiler oder eine Installationsskript-Genehmigung benötigt.
Die Standardkonfiguration stellt semantische Hintergrundautomatisierung und schreibgeschützte Inspektion bereit. Für Workflows, die absichtlich globale Zeiger-/Tastatureingaben, Vordergrundaktivierung oder beliebiges AppleScript benötigen, aktivieren Sie dies explizit:
{
"mcpServers": {
"macos-computer-use": {
"command": "npx",
"args": ["-y", "macos-computer-use-mcp"],
"env": {
"MACOS_COMPUTER_USE_UNSAFE": "1"
}
}
}
}1. Voraussetzungen
macOS 13.0+ (Apple Silicon oder Intel)
Node.js 20+
Xcode Command Line Tools nur beim Bauen aus dem Quellcode:
xcode-select --install
2. Klonen & Bauen
git clone https://github.com/johnexzy/macos-computer-use.git
cd macos-computer-use
npm install
npm run build🔒 Fähigkeitsbasierte macOS-Berechtigungen
Gewähren Sie nur die Berechtigung, die für die von Ihnen verwendeten Tools benötigt wird. macOS weist die Berechtigung der Host-Anwendung zu, die den MCP-Server ausführt (Terminal, OpenCode, Cursor, VS Code usw.):
Accessibility: Erforderlich für semantische Inspektion und Aktionen. Es erfordert keine Bildschirmaufnahme.
Bildschirm- und Systemaudio-Aufnahme: Nur erforderlich für Screenshots und Vision-OCR-Tools wie
screenshot,find_text,click_textundwait_for_text.Ereignissynthese: Globale CoreGraphics-Klicks, Tippen, Tastendrücke und Scrollen im unsicheren Modus erfordern Ereignis-Posting-Zugriff. Semantische Accessibility-Aktionen verwenden diesen globalen Fallback nicht.
Automation: Kann von macOS nur angefordert werden, wenn der unsichere Modus aktiviert ist und
run_applescriptein Ereignis an eine andere Anwendung sendet. Kern-Eingabe- und Hintergrund-Tools verwenden den nativen Helfer anstelle von System Events.
Rufen Sie get_capabilities vor geschützten Operationen auf. Die Berechtigungsprüfung verwendet Apples Preflight-APIs und öffnet keine Berechtigungsaufforderung. Wenn der Zugriff fehlt, geben Screenshot-/OCR- und globale Eingabepfade SCREEN_RECORDING_PERMISSION_REQUIRED oder INPUT_POSTING_PERMISSION_REQUIRED vor der Ausführung zurück. Gewähren Sie den Zugriff manuell in den Systemeinstellungen und verbinden Sie dann den MCP erneut, wenn der Host weiterhin veralteten Datenschutzstatus hält.
macOS kann dennoch einen Neustart der Host-App nach einer neu gewährten Datenschutzberechtigung erfordern. Dies wird von macOS erzwungen; der Server fordert nicht wiederholt oder unzusammenhängende Berechtigungen an.
Hintergrund-UI-Automatisierung ist kooperativ: macOS kann Accessibility-Elemente in einem anderen Prozess adressieren, aber eine Anwendung kann gezielte Tastaturereignisse ignorieren oder ihre Bezeichner in einer späteren Version ändern. Diese Tools geben in solchen Fällen explizite nicht unterstützte/nicht bestätigte Fehler zurück, anstatt die App zu aktivieren oder einen falschen Erfolg zu melden.
🔌 MCP-Konfiguration
Fügen Sie diesen Server zu Ihrer MCP-Client-Konfiguration hinzu:
Antigravity / Claude Desktop / Cursor / Windsurf
Fügen Sie zu Ihrer mcp_config.json / claude_desktop_config.json hinzu:
{
"mcpServers": {
"macos-computer-use": {
"command": "node",
"args": ["/absolute/path/to/macos-computer-use/server.mjs"]
}
}
}🧪 Testen des nativen Swift-Helfers direkt
Sie können die native Binärdatei direkt von Ihrem Terminal aus testen:
# 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.0Führen Sie die automatisierten Fail-Closed- und Matching-Regressionen aus:
npm testVerifizieren Sie die semantische Inspektion gegen ein Hintergrund-Rechnerfenster:
npm run test:background -- CalculatorMit geöffnetem Rechner und Systemeinstellungen führen Sie die Live-Native-App-Smoke-Suite aus. Der Test aktiviert den unsicheren Modus, weil er AppleScript verwendet, um TextEdit-Fixtures zu erstellen und zu bereinigen:
npm run test:liveMutierende Tool-Ergebnisse enthalten ein execution-Objekt mit einem versionierten Vertrag, Zustellungsmethode, Verifizierungsstufe, Vordergrund-Erhaltungszustand und Ziel. Koordinatenbasierte Aktionen behalten status: "delivered_unverified"; verifizieren Sie folgenreiche Nachzustände mit semantischer Inspektion, OCR oder einem Screenshot.
Der MCP-Server startet einen Cursor-Overlay-Prozess verzögert beim ersten Klick oder Scrollen und stoppt ihn, wenn die MCP-Verbindung geschlossen wird. Das Overlay fängt niemals Mauseingaben ab, verbindet alle Spaces und Vollbildfenster und meldet cursorOverlay.status: "unavailable", ohne die angeforderte Aktion zu blockieren, wenn AppKit es nicht anzeigen kann.
📦 Veröffentlichung
Pushes auf main führen den npm-Publishing-Workflow aus. Um eine neue Version zu veröffentlichen, aktualisieren Sie die Version in package.json und package-lock.json vor dem Mergen. Versionen, die bereits auf npm existieren, werden getestet und übersprungen.
📄 Lizenz
MIT © John Oba
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for visual regression testing: triage a PR's UI diffs from your coding agent.
MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent
Melaya is a remote MCP server. It gives an assistant hands on your own Android phone and browser: it reads the screen through the accessibility tree, then taps, types and navigates inside the apps and sites you allow-list, with no per-app API. It also builds, schedules and runs agent pipelines across 6k+ connected tools. OAuth 2.1, nothing to install.
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
1
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceAn experimental MCP server providing full control over the macOS user interface through mouse, keyboard, and window management tools. It enables AI assistants to automate desktop tasks by utilizing native accessibility APIs and OCR for real-time screen comprehension.7Creative Commons Zero v1.0 Universal
- AlicenseNot gradedqualityFmaintenanceAn open-source MCP server for macOS and Windows that provides native desktop control via Accessibility APIs, OCR, and Chrome CDP. It enables AI agents to interact with applications, manage browser sessions, and automate workflows with high-speed native UI actions.91 npm15AGPL 3.0
- AlicenseNot gradedqualityDmaintenanceA production-grade macOS MCP server exposing 33 tools for full desktop automation, including mouse, keyboard, screenshot, clipboard, and window control.1MIT
- FlicenseAqualityDmaintenanceMCP server for macOS desktop automation enabling screenshot, click, type, scroll, and more. Retina-aware, supports CJK text input and multi-monitor, works with any MCP client without API keys.155-