Skip to main content
Glama
johnexzy

macos-computer-use

by johnexzy

🍏 macOS Computer Use (MCP Server)

License: MIT Platform Model Context Protocol

Сверхбыстрый нативный Model Context Protocol (MCP)-сервер, который предоставляет LLM и автономным агентам полную визуальную инспекцию и возможности автоматизации рабочего стола в macOS без перехвата вашей физической мыши или фокуса клавиатуры.

Создан на основе скомпилированного ядра Swift с использованием нативных CoreGraphics, Vision OCR (VNRecognizeTextRequest) от Apple и прямой маршрутизации событий на уровне процессов (CGEvent.postToPid).


⚡ Ключевые особенности

  • 🎯 Apple Vision OCR со временем менее 30 мс (find_text / click_text): Никаких слепых угадываний координат $(x, y)$. Агент находит кнопки, надписи и текстовые плейсхолдеры по имени с попиксельной точностью благодаря ускорению Apple Neural Engine.

  • 🛡️ Ненавязчивое фоновое выполнение: Отвязан от глобальных перехватчиков аппаратных событий macOS. Клики, прокрутка и нажатия клавиш могут направляться напрямую в конкретные PID приложений, пока вы продолжаете работать в своей IDE или браузере.

  • 👁️ Оверлей виртуального курсора (mark_cursor): Целевые координаты агента визуально отображаются на кадрах скриншота (голубое целевое кольцо + пульсирующая пурпурная точка) без перемещения вашей физической мыши на экране.

  • ⚡ Реактивная синхронизация интерфейса (wait_for_text): Заменяет слепые таймауты sleep() высокоскоростным циклом опроса OCR, который срабатывает сразу, как только появляются динамические выпадающие списки автодополнения, модальные окна или изменения состояния.

  • 🖼️ Захват экрана с изоляцией окна: Аккуратно захватывает буферы целевого приложения в фоне (screencapture -l <wid> -o -x), не выводя окно на передний план и не захватывая перекрывающиеся окна.


🛠️ Доступные инструменты

Инструмент

Описание

Ключевые параметры

click_text

Находит любую кнопку, надпись или текст интерфейса с помощью Apple Vision OCR и плавно щёлкает по его точному центру.

text, appName (необязательно), windowId (необязательно), button, clickCount, returnScreenshot

find_text

Проверяет текст на экране или в конкретном окне и возвращает точные ограничивающие прямоугольники и логические координаты.

text, appName (необязательно), windowId (необязательно)

wait_for_text

Реактивно опрашивает целевое окно/экран, пока не появится ожидаемый текст (выпадающие списки автодополнения, тосты, модальные окна).

text, appName (необязательно), timeoutSeconds (по умолчанию: 5.0)

screenshot

Захватывает весь дисплей или конкретное фоновое окно приложения с возможной отрисовкой виртуального курсора.

appName, windowId, maxWidth, format (jpeg | png), cursor ({x, y})

list_windows

Перечисляет открытые окна приложений, идентификаторы процессов (pid), заголовки и границы координат в Z-порядке от переднего к заднему.

appName (необязательный фильтр)

mouse_click

Выполняет клик по логическим точкам (x, y) (поддерживает маршрутизацию относительно окна и по PID).

x, y, appName, windowId, relativeCoords, button, clickCount

mouse_move

Плавно перемещает курсор мыши к координатам (x, y).

x, y, appName, relativeCoords, smooth, duration

mouse_drag

Плавно перетаскивает мышь из (startX, startY) в (endX, endY).

startX, startY, endX, endY, duration

type_text

Вводит обычный текст в активные поля ввода (или напрямую в очереди целевого процесса).

text, appName (необязательно), windowId (необязательно)

press_key

Нажимает специальные клавиши или сочетания клавиш с модификаторами.

key (return, space, tab, escape, c и т. д.), modifiers (command, shift, option, control)

scroll

Прокручивает колесо мыши по вертикали и горизонтали.

x, y, deltaY, deltaX, appName, windowId

launch_app

Запускает приложение macOS или выводит его на передний план.

appName (например, Google Chrome, Safari, Finder, Slack, Notes)

get_active_app

Возвращает имя текущего активного приложения и заголовок его окна.

Нет

run_applescript

Выполняет пользовательский AppleScript для глубокого анализа специальных возможностей macOS и иерархии интерфейса.

script


🚀 Установка и настройка

1. Предварительные требования

  • macOS 13.0+ (Apple Silicon или Intel)

  • Node.js 18+

  • Xcode Command Line Tools (для компиляции нативного Swift-бинарного файла):

    xcode-select --install

2. Клонирование и сборка

git clone https://github.com/johnexzy/macos-computer-use.git
cd macos-computer-use
npm install

(Скрипт postinstall автоматически компилирует native_helper.swift в оптимизированный нативный бинарный файл).


🔒 Требуемые разрешения macOS

Чтобы разрешить захват экрана и имитацию ввода, предоставьте вашему приложению-хосту (Terminal, iTerm2, Antigravity, Cursor или VS Code) разрешения в Системных настройках > Конфиденциальность и безопасность:

  1. Запись экрана и системного звука: Требуется для screenshot и визуального OCR.

  2. Специальные возможности: Требуется для mouse_click, type_text и press_key.


🔌 Конфигурация MCP

Добавьте этот сервер в конфигурацию вашего MCP-клиента:

Antigravity / Claude Desktop / Cursor / Windsurf

Добавьте в mcp_config.json / claude_desktop_config.json:

{
  "mcpServers": {
    "macos-computer-use": {
      "command": "node",
      "args": ["/absolute/path/to/macos-computer-use/server.mjs"]
    }
  }
}

🧪 Тестирование нативного Swift-хелпера напрямую

Вы можете протестировать нативный бинарный файл прямо из терминала:

# 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

📄 Лицензия

MIT © John Oba

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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.

View all MCP Connectors

Latest Blog Posts

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