screenshot-mcp
Integrates with KDE components: Konsole for spawning real terminal windows that inherit the user's ~/.bashrc and bash readline behavior, Spectacle for screenshots, and KWin (via qdbus6 scripting) for window discovery and focusing.
Targets KDE Plasma 6 desktop sessions, providing tools to open and drive a real Konsole terminal window (executing commands, reading output and exit codes, sending keys), bring windows to the foreground via KWin scripting, and capture full-desktop screenshots using Spectacle, returning the image back to the agent.
Operates inside a KDE Plasma Wayland session, writing input directly into a pseudo-terminal so native Wayland terminal windows can be driven without key emulation, and capturing the Wayland desktop.
Click on "Deploy 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., "@screenshot-mcpopen a terminal, runpytest, and take a desktop screenshot for me"
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.
screenshot-mcp
MCP-сервер для KDE Plasma 6 / Wayland: агент открывает настоящее окно консоли, управляет им и снимает рабочий стол штатным средством системы (Spectacle — тем же, что вызывается по PrintScreen).
Ключевая сложность в том, что под Wayland не работают привычные приёмы автоматизации
терминала: xdotool не вводит текст в нативные Wayland-приложения, wmctrl не
существует, а tmux умеет управлять сессией, но не окном на экране. Здесь ввод идёт
прямо в псевдотерминал, поэтому терминал показывает его так же, как ввод с
клавиатуры, — без эмуляции клавиш и без каких-либо следов в интерфейсе.
Возможности:
новое отдельное окно консоли с твоим
~/.bashrc— твой промпт, цвета, алиасы;ввод команд и чтение вывода с кодом возврата;
интерактивные программы: ввод,
Ctrl+C,Ctrl+D, стрелки, история команд;снимок всего рабочего стола с поднятием окна консоли на передний план;
снимок возвращается агенту прямо в ответе (картинкой), так что он может сам оценить, что попало в кадр.
Как это устроено
MCP-сервер (server.py)
│ UNIX-сокет, JSON
▼
bridge.py — «насос»: переливает ввод и вывод
│ псевдотерминал (pty)
▼
bash ── запущен прямо в окне Konsole, наследует ~/.bashrcНастоящий
bashработает внутри окна Konsole и подхватывает пользовательский.bashrc. Заголовок окна при этом неотличим от обычного (<каталог> : bash — Konsole).Агент пишет байтами прямо в pty. Их обрабатывает tty-драйвер (отражение ввода) и
readline— то есть это буквально тот же путь, что и при наборе с клавиатуры. Никакой эмуляции клавиш, поэтому в терминале не остаётся следов автоматизации.Код возврата берётся через хук
PROMPT_COMMAND, который пишет маркер в служебный файл: на экране ничего не появляется.Окно поднимается на передний план KWin-скриптом: окно находится по PID процесса Konsole, активация —
workspace.activeWindow = client.Снимок делает
spectacle -b -n -o <file>— тот же бинарник, что Plasma запускает по PrintScreen, поэтому картинка неотличима от сделанной вручную.
Related MCP server: hyprland-mcp
Требования
KDE Plasma 6 в сессии Wayland;
konsoleиspectacle(в Plasma 6 идут вместе с ней);qdbus6— для скриптинга KWin;Python 3.11+ и пакет
mcp.
Проверено на Debian 13, KDE Plasma 6.3, Wayland.
Установка
git clone git@github.com:Bra1nZ/screenshot-mcp.git
cd screenshot-mcp
pip install -r requirements.txtПодключение
opencode
~/.config/opencode/opencode.json:
{
"mcp": {
"screenshot-mcp": {
"command": ["python3", "/путь/к/screenshot-mcp/server.py"],
"type": "local"
}
}
}Другие MCP-клиенты
Сервер говорит на stdio, поэтому подходит любому клиенту с поддержкой локальных MCP-серверов. Команда запуска:
python3 /путь/к/screenshot-mcp/server.pyСервер запускается в графической сессии и наследует WAYLAND_DISPLAY и
DBUS_SESSION_BUS_ADDRESS; если переменных нет, подставляются значения по умолчанию
для текущего пользователя.
Инструменты
Инструмент | Назначение |
| открыть новое окно консоли, вернуть |
| напечатать команду и дождаться результата: |
| напечатать текст без выполнения — для программ, ждущих ввода |
| спецклавиши: |
| дочитать новый вывод |
| состояние консолей |
| закрыть окно |
| снимок рабочего стола; |
| поднять окно консоли на передний план |
| что сейчас на переднем плане, список окон |
Пример сессии
console_open(cwd="~/projects/lab") → console_id
console_exec(console_id, "make") → output, exit_code
console_exec(console_id, "ls -la build/") → убедиться, что артефакты на месте
desktop_screenshot(console_id=console_id) → PNG в ~/Pictures/Screenshots + картинка в ответеОграничения
Только KDE Plasma 6 / Wayland. Скриншоты и консоль работают и под X11, но поднятие окна на передний план реализовано через KWin-скриптинг, то есть только под KWin.
Экран должен быть разблокирован. Пока активен lock screen, KWin не отдаёт снимки — это защита композитора.
desktop_screenshotв этом случае вернёт понятное сообщение.Символ табуляции в командах не поддерживается:
bashвоспринимает его как запрос автодополнения.console_execждёт нового промпта; для долгих задач нуженtimeout, для интерактивных программ —console_sendиconsole_key.
Безопасность
Сервер даёт подключённому агенту полный контроль над консолью в графической сессии и чтение содержимого экрана. Это инструмент автоматизации, а не средство изоляции: запускай его только с тем агентом, которому доверяешь, и не оставляй незакрытые окна консоли с активными сессиями.
Скриншоты складываются в стандартную папку KDE для снимков и дублируются в
screenshots/ рядом с сервером — помни, что они могут содержать чувствительные
данные с экрана.
Тесты
Тесты живые: они открывают настоящие окна и снимают настоящий экран, поэтому требуют запущенной сессии KDE Plasma.
pip install -r requirements-dev.txt
python3 tests/test_bridge.py # pty-мост: команды, вывод, код возврата
python3 tests/test_interactive.py # ввод в программу, ctrl+c, история
python3 tests/test_e2e.py # полный цикл: окно → команды → фокус → снимок
python3 tests/test_mcp_stdio.py # протокол MCP: список тулов и вызовыВ CI (.github/workflows/ci.yml) гоняются только линтер и проверка импорта —
живые тесты в контейнере без композитора не запустятся.
Лицензия
MIT — см. LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Control a real browser from AI agents: navigate, click, type, screenshot, read the page.
Cloud desktops for AI agents: create a Linux computer, see its screen, click, type and run tasks.
Use your Mac, Windows or Linux computer from ChatGPT, Claude or Codex: files, commands, documents.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to automate Linux desktop GUI by launching and interacting with Wayland applications in isolated virtual KWin sessions, or connecting to live desktops for collaborative automation.408 PyPI71MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to control a Hyprland Wayland desktop by listing windows, capturing screenshots, and sending input to a dedicated agent workspace without disrupting the user's screen.1-
- AlicenseNot gradedqualityDmaintenanceEnables an AI agent to see and control a Linux desktop via Wayland/Hyprland, providing screenshots, structured desktop state, pointer/keyboard input, semantic window/workspace tools, and a policy engine for safe execution.Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to automate and observe Linux desktop GUIs on KDE Plasma 6 Wayland through isolated virtual sessions or live desktop connections, providing 30 tools for input, clipboard, accessibility tree inspection, screenshots, and window management.2MIT