Skip to main content
Glama

desktop-mcp

Десктопное зрение и управление для LLM на Linux, включая Wayland — модель делает скриншот всего экрана и кликает, печатает и прокручивает то, что видит. Обычный MCP через stdio, поэтому работает в Claude Code, Claude Desktop, Cursor или любом другом MCP-клиенте.

Прочтите сначала: возможно, это вам не нужно

Anthropic поставляет computer use нативно, и там, где это работает, лучше использовать его — он лучше интегрирован и реально поддерживается:

  • macOS и Windows: в Claude Desktop есть встроенный computer use, в Cowork и Claude Code. Он управляет вашим реальным рабочим столом. (документация)

  • Создание собственного агента: в Claude API есть первоклассный инструмент computer (GA как набор computer_toolset_20260801). (документация)

Пробел, который заполняет этот проект, — Linux. По состоянию на август 2026 года computer use недоступен в десктопном приложении Linux, а автоматизация рабочего стола на Wayland действительно неудобна так, как никогда не была на X11:

  • Композитор COSMIC не реализует wlr-screencopy, поэтому grim полностью не работает, и каждому инструменту создания скриншотов нужен свой путь для каждого композитора.

  • Нет протокола для запроса позиции курсора и нет способа перечислить окна другого клиента.

  • Ввод должен идти ниже композитора через /dev/uinput, потому что обычно упакованный ydotool предоставляет относительный указатель, чьи длинные прыжки искажаются ускорением указателя.

Если вы на macOS или Windows, этот репозиторий в основном избыточен. Если вы на Linux — особенно на Wayland — это рабочий вариант.

MCP-серверы для автоматизации рабочего стола — не новая категория; существуют тысячи MCP-серверов. Что здесь специфично, так это нативный для Wayland путь ввода через абсолютный uinput, измеренный с точностью до пикселя на COSMIC.

Related MCP server: mcp-linux-desktop

Статус

Написан кроссплатформенно, но реально проверена только одна конфигурация. Остальное — это пути кода, а не доказательства; относитесь к этому соответственно.

Платформа

Скриншот

Ввод

Протестировано

Linux / Wayland

cosmic-screenshot, grim, spectacle, GNOME D-Bus

/dev/uinput

Да — только COSMIC

Linux / X11

maim, ImageMagick import, mss

/dev/uinput, xdotool

Нет

macOS

screencapture

pyautogui

Нет

Windows

mss, PowerShell

pyautogui

Нет

Что было протестировано и как

Проверено end-to-end на:

  • Pop!_OS 24.04 LTS, ядро 7.0.11, COSMIC (cosmic-comp 1.0.0), Wayland, один дисплей 2560x1440, Python 3.13.

Результаты:

Проверка

Метод

Результат

Скриншот

бэкенд cosmic-screenshot

Захвачено 2560x1440, уменьшено до 1400x788

Точность указателя

5 целевых точек, считывание через XWayland

5/5 точно, ошибка 0px

Кнопки и прокрутка

журнал событий xev

ButtonPress/Release для кнопок 1, 3, 4

Перетаскивание

подсчёт движений xev

26 событий MotionNotify между нажатием и отпусканием

Ввод текста

и wtype, и сырые коды клавиш uinput

Текст попал в сфокусированный редактор

Аккорды

ctrl+a в редакторе

Применено

Клик через MCP

Полный цикл stdio против нативного приложения Wayland

Открыта новая вкладка

Не протестировано и стоит знать: многомониторные конфигурации, масштабирование HiDPI, не-US раскладки клавиатуры на пути сырых кодов клавиш (wtype обрабатывает их корректно; коды клавиш uinput предполагают US), и все композиторы, кроме COSMIC.

Отчёты с других платформ приветствуются — desktop_info выводит всё необходимое для диагностики проблемы с бэкендом.

Установка

git clone <this repo> && cd desktop-mcp
uv venv && uv pip install -e .

Для macOS, Windows и Linux/X11 также нужны зависимости для ввода:

uv pip install -e ".[gui]"

Linux: разовая настройка разрешений

Ввод на Wayland означает запись в /dev/uinput, который по умолчанию принадлежит root:

bash scripts/setup-linux.sh   # needs sudo once
# then log out and back in

macOS: разовая настройка разрешений

Предоставьте Запись экрана и Специальные возможности приложению, которое запускает сервер (Terminal, iTerm, Claude Desktop) в Системные настройки → Конфиденциальность и безопасность.

Подключение

Claude Code:

claude mcp add desktop -- /absolute/path/to/desktop-mcp/.venv/bin/python -m desktop_mcp.server

Claude Desktop (claude_desktop_config.json) и Cursor (.cursor/mcp.json) используют ту же форму:

{
  "mcpServers": {
    "desktop": {
      "command": "/absolute/path/to/desktop-mcp/.venv/bin/python",
      "args": ["-m", "desktop_mcp.server"]
    }
  }
}

Инструменты

Инструмент

Назначение

screenshot

Захват рабочего стола

click

Левый/правый/средний клик, одиночный или двойной

move

Перемещение указателя без клика (наведение)

drag

Нажать, переместить, отпустить — выделение, ползунки, перемещение окон

scroll

Прокрутка колесом под точкой

type_text

Ввод текста в сфокусированный элемент

key

Аккорды вроде ctrl+s, alt+tab, cmd+space

cursor_position

Где находится указатель

list_windows

Открытые окна, где это позволяет ОС

wait

Пауза, затем снова посмотреть

desktop_info

Окружение, активные бэкенды, настройки безопасности

Координаты

Скриншоты уменьшаются (по умолчанию длинная сторона 1400px) перед отправкой, поэтому модель работает в пикселях изображения; сервер преобразует их обратно в пиксели экрана при каждом вызове. Передавайте ровно те координаты, которые вы считали со скриншота.

Это деталь, которую большинство самодельных инструментов computer use делают неправильно. Упустите её — и каждый клик будет попадать в постоянную долю от цели.

Почему /dev/uinput вместо ydotool на Linux

Обычно упакованные сборки ydotool предоставляют относительный указатель, поэтому прыжок к (1280, 720) доставляется как одно большое относительное движение — которое композитор пропускает через ускорение указателя. Курсор оказывается рядом с целью, а не на ней, и ошибка растёт с расстоянием. Абсолютное устройство uinput обходит ускорение: измерено 5/5 точно на экране 2560x1440. ydotool остаётся запасным вариантом, когда /dev/uinput недоступен для записи.

Тайминг кликов

Композиторы обрабатывают движение указателя асинхронно, а тулкиты игнорируют нажатие кнопки, которое приходит до того, как они обработали движение, поместившее курсор над виджетом. Измерено на COSMIC: задержка 30 мс между движением и нажатием надёжно подсвечивает кнопку, но никогда не активирует её — состояние наведения доказывает, что координаты верны, что позволяет легко ошибочно принять эту ошибку за проблему с прицеливанием. 250 мс активирует её. Нажатие также должно удерживаться (~90 мс), чтобы зарегистрироваться как реальный клик, а не случайное событие.

Обе задержки настраиваются; уменьшайте их только если ваш рабочий стол это терпит.

Безопасность

Это даёт модели тот же доступ к машине, что и сидящему за ней человеку. Она может читать всё на экране — открытые менеджеры паролей, личные сообщения, токены — и кликать по чему угодно, включая разрушительные кнопки. Относитесь к сессии так, как если бы вы передали кому-то свою клавиатуру.

Переменные окружения:

Переменная

По умолчанию

Эффект

DESKTOP_MCP_READ_ONLY

выкл

Скриншоты разрешены, весь ввод запрещён

DESKTOP_MCP_RATE_LIMIT

240

Максимум действий ввода в минуту

DESKTOP_MCP_BLOCK_KEYS

Дополнительные аккорды через запятую для отказа

DESKTOP_MCP_AUDIT_LOG

Добавлять каждое действие в этот файл

DESKTOP_MCP_MAX_EDGE

1400

Длинная сторона скриншота в пикселях

DESKTOP_MCP_MOVE_SETTLE

0.25

Секунды между перемещением указателя и нажатием

DESKTOP_MCP_PRESS_HOLD

0.09

Секунды удержания кнопки мыши

ctrl+alt+F1F12 всегда заблокированы; переключение виртуальных терминалов может выбить графическую сессию из-под вас.

Настройка для рецензента только для чтения:

DESKTOP_MCP_READ_ONLY=1 python -m desktop_mcp.server

Проверка

.venv/bin/python scripts/mcp_smoke.py   # real stdio MCP round trip
Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Controls a real Linux desktop from any MCP host. Reads accessibility trees, takes screenshots, and drives clicks, scrolls, and keystrokes across GNOME, KDE/KWin, Hyprland, i3, and COSMIC.
    671
    395
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables full Linux desktop control including windows, mouse, keyboard, clipboard, audio, screenshots, OCR, accessibility, and system management through MCP-compatible AI agents.
    1
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that gives a model eyes and hands on a Linux Wayland desktop, enabling screenshot capture, mouse/keyboard control, OCR, and icon detection via OmniParser.
    1
  • A
    license
    A
    quality
    D
    maintenance
    Enables LLM agents to capture screenshots, control mouse/keyboard, and manage windows on desktop platforms, primarily Windows, via an MCP server.
    16
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • OCR, transcription, file extraction, and image generation for AI agents via MCP.

  • A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…

  • MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent

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/Zetakai/desktop-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server