kwin-mcp
by isac322·★ 23·Score 43
MCP server for KDE Plasma 6 Wayland GUI automation with 30 tools for isolated virtual sessions and live desktop interaction.
Overview
kwin-mcp is a comprehensive Model Context Protocol server that enables AI agents to interact with Linux desktop applications running on KDE Plasma 6 Wayland. It supports both isolated virtual sessions that don't affect the user's desktop and live session connections for collaborative workflows. The server provides 30 MCP tools covering mouse, keyboard, touch, clipboard, accessibility tree inspection, screenshot capture, and window management, making it suitable for end-to-end GUI testing and desktop automation.
Try asking AI
After installing, here are 5 things you can ask your AI assistant:
When to choose this
Choose kwin-mcp when you need to automate KDE Plasma 6 applications on Wayland with full input capabilities and both isolated testing and live desktop modes.
When NOT to choose this
Avoid kwin-mcp if you need to automate applications on non-KDE desktop environments or X11 systems, as it only supports KDE Plasma 6 on Wayland.
Tools this server exposes
12 tools extracted from the READMEsession_startapp_command? str, screen_width? int (1920), screen_height? int (1080), enable_clipboard? bool (false), keep_screenshots? bool (false), isolate_home? bool (false), keep_home? bool (false), env? dictStart an isolated KWin Wayland session, optionally launching an app
session_connectdbus_address? str, wayland_display? str, keep_screenshots? bool (false)Connect to an existing KWin session (real desktop or container)
screenshotinclude_cursor? bool (false)Capture a screenshot of the virtual display (saved as PNG)
accessibility_treeapp_name? str, max_depth? int (15), role? strGet the AT-SPI2 widget tree with roles, names, states, and coordinates
find_ui_elementsquery str, app_name? str, states? list[str]Search for UI elements by name, role, or description with optional state filtering
mouse_clickx int, y int, button? str ('left'), double? bool, triple? bool, modifiers? list[str], hold_ms? int (0), screenshot_after_ms? list[int]Click at coordinates with various options for button, modifiers, and click behavior
keyboard_typetext str, screenshot_after_ms? list[int]Type a string of text character by character (US QWERTY layout)
launch_appcommand str, env? dictLaunch an application inside the running session
list_windowsList all accessible application windows with titles and focused state
wait_for_elementquery str, app_name? str, timeout_ms? int (5000), poll_interval_ms? int (200), expected_states? list[str]Poll the accessibility tree until an element matching query and/or states appears
mouse_dragfrom_x int, from_y int, to_x int, to_y int, button? str ('left'), modifiers? list[str], waypoints? list[[x,y,dwell_ms]], screenshot_after_ms? list[int]Drag from one point to another with smooth interpolation and optional waypoints
focus_windowapp_name strFocus a window by application name
Comparable tools
Installation
Installation
**Using uv (recommended):**
uv tool install kwin-mcp**Using pip:**
pip install kwin-mcp**Claude Desktop Configuration:** Add to your claude_desktop_config.json:
{
"mcpServers": {
"kwin-mcp": {
"command": "uvx",
"args": ["kwin-mcp"]
}
}
}FAQ
- What desktop environments does kwin-mcp support?
- kwin-mcp is specifically designed for KDE Plasma 6 on Wayland. It works with any Wayland application including Qt, GTK, and Electron apps running on KDE Plasma.
- How does kwin-mcp handle input without triggering system authorization prompts?
- kwin-mcp uses KWin's private EIS (Emulated Input Server) D-Bus interface directly, bypassing the XDG RemoteDesktop portal, which eliminates the need for user confirmation dialogs.
On Hacker News
Recent discussion from the developer community.
- Story by isac322 · 2026-02-23
Compare kwin-mcp with
Last updated · Auto-generated from public README + GitHub signals.