Deskwright — MCP-сервер для Claude Code: агент работает с окнами GNOME
Даёт агенту настоящий рабочий стол GNOME Wayland: запуск приложений, клики, ввод текста, окна и запись экрана. Второй виртуальный монитор не отбирает у вас фокус.
claude mcp add --env DESKWRIGHT_SESSION=<DESKWRIGHT_SESSION> --env DESKWRIGHT_INPUT_BACKEND=<DESKWRIGHT_INPUT_BACKEND> --transport stdio deskwright -- uvx deskwrightЧто делает Deskwright
Обычно агент умеет править файлы и запускать команды, но не может открыть GIMP или нажать кнопку в диалоге настроек. Deskwright закрывает этот пробел на GNOME: MCP-сервер вместе с расширением оболочки отдаёт агенту живой рабочий стол. Внутри — запуск приложений, чтение виджетов, клики, набор текста, перетаскивание, управление окнами, OCR и запись экрана.
Клик идёт не по координатам, а через AT-SPI: виджет получает своё действие доступности. Такой клик не промахивается и переживает сдвиг окна. Режим DESKWRIGHT_SESSION=headless поднимает всё это на виртуальном мониторе, которого нет на ваших экранах, поэтому агент не перехватывает мышь и клавиатуру.
Нужен GNOME Shell на Wayland. Установка идёт через pipx с флагом --system-site-packages: PyGObject в PyPI колёс не публикует, и изолированное окружение его не увидит. Без флага сервер стартует, а потом падает на первом клике с input_backend_failed. После deskwright-setup придётся один раз выйти из сессии и войти снова — gnome-shell подхватывает расширение только при старте сессии.
Какие задачи решает
- открыть нативное приложение и нажать кнопку в его диалоге
- прочитать, что показывает чужое окно, без скриншота
- дать агенту отдельный рабочий стол, чтобы он не трогал вашу мышь
- записать экран или распознать текст на нём
- перетащить элемент и переставить окна
Примеры запросов агенту
- Открой GIMP и выбери в меню «Файл» пункт «Создать»
- Запусти headless-сессию и открой в ней настройки GNOME
- Сделай скриншот окна и распознай на нём текст
Как установить Deskwright
Командой платформы
claude mcp add --env DESKWRIGHT_SESSION=<DESKWRIGHT_SESSION> --env DESKWRIGHT_INPUT_BACKEND=<DESKWRIGHT_INPUT_BACKEND> --transport stdio deskwright -- uvx deskwrightВместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from deskwright <команда>
Командой платформы
codex mcp add deskwright --env DESKWRIGHT_SESSION=<DESKWRIGHT_SESSION> --env DESKWRIGHT_INPUT_BACKEND=<DESKWRIGHT_INPUT_BACKEND> -- uvx deskwrightВместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from deskwright <команда>
Файл настроек
{
"mcpServers": {
"deskwright": {
"command": "uvx",
"args": [
"deskwright"
],
"env": {
"DESKWRIGHT_SESSION": "<DESKWRIGHT_SESSION>",
"DESKWRIGHT_INPUT_BACKEND": "<DESKWRIGHT_INPUT_BACKEND>"
}
}
}
}Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from deskwright <команда>
Файл настроек
{
"servers": {
"deskwright": {
"type": "stdio",
"command": "uvx",
"args": [
"deskwright"
],
"env": {
"DESKWRIGHT_SESSION": "<DESKWRIGHT_SESSION>",
"DESKWRIGHT_INPUT_BACKEND": "<DESKWRIGHT_INPUT_BACKEND>"
}
}
}
}Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from deskwright <команда>
Командой платформы
gemini mcp add -e DESKWRIGHT_SESSION=<DESKWRIGHT_SESSION> -e DESKWRIGHT_INPUT_BACKEND=<DESKWRIGHT_INPUT_BACKEND> deskwright uvx deskwrightВместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from deskwright <команда>
По шагам, с командами для каждой платформы: Как подключить MCP-сервер: Claude Code, Codex, Cursor, VS Code, Gemini CLI и другие
Вопросы о Deskwright
Как установить Deskwright в Claude Code?
Добавьте сервер командой `claude mcp add --env DESKWRIGHT_SESSION=<DESKWRIGHT_SESSION> --env DESKWRIGHT_INPUT_BACKEND=<DESKWRIGHT_INPUT_BACKEND> --transport stdio deskwright -- uvx deskwright`, затем один раз выйдите из сессии и войдите снова.
Что делает Deskwright?
Отдаёт агенту рабочий стол GNOME Wayland: запуск приложений, клики, ввод текста, управление окнами, OCR и запись экрана. Работает и на виртуальном мониторе, которого нет на ваших экранах.
Почему нужен флаг --system-site-packages?
PyGObject распространяется только как пакет дистрибутива, колёс в PyPI нет. Без флага сервер запустится, но упадёт на первом клике с input_backend_failed.