MCP Catalogs
Home

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.

developer-toolsai-llmproductivity
6
Forks
15
Open issues
this month
Last commit
2d ago
Indexed

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:

you:Automated GUI testing for KDE/Qt/GTK applications in headless isolated sessions
you:AI-driven desktop automation for operating GUI applications autonomously
you:Live desktop collaboration where AI agents can observe and interact with the user's real desktop
you:What desktop environments does kwin-mcp support?
you:How does kwin-mcp handle input without triggering system authorization prompts?

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 README
  • session_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? dict

    Start 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? str

    Get 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? dict

    Launch an application inside the running session

  • list_windows

    List 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 str

    Focus a window by application name

Comparable tools

xdotooluiautomationrobotframeworkplaywright

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.

Compare kwin-mcp with

GitHub →

Last updated · Auto-generated from public README + GitHub signals.