A side-by-side look at the Kwin MCP and MCP Test Utils MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Kwin MCP for os automation work as a local process; choose MCP Test Utils for os automation. You can also run both side by side in one mcpServers block.
session_start, session_connect, session_stop.take_screenshot, take_window_screenshot, read_screen_text.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | OS Automation | OS Automation |
| Quality signal | 53/100 · Good | 45/100 · Fair |
| Install command | Confirmed | Not confirmed yet |
| Transport | Local subprocess (stdio) | — |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 2 | 0 |
| Directory activity | 0 views 0 installs 0 upvotes | 0 views 0 installs 0 upvotes |
| Tools | 30 | 21 |
| Full listing | View Kwin MCP | View MCP Test Utils |
session_startStart an isolated KWin Wayland session, optionally launching an app. A screen size of `0` auto-detects the bounding box of the logical desktop (all enabled outputs / connected monitors). Set `enable_clipboard=true` to enable clipboard tools (requires `wl-clipboard`). Set `keep_screenshots=true` to…session_connectConnect to an existing KWin session (real desktop or container). Defaults to `$DBUS_SESSION_BUS_ADDRESS` and `$WAYLAND_DISPLAY`. Clipboard is always enabled. `session_stop` only disconnects without killing KWin or pre-existing apps.session_stopStop the session and clean up. For virtual sessions: terminates KWin and all apps. For live sessions: disconnects without killing KWin or pre-existing apps.screenshotCapture a screenshot of the virtual display (saved as PNG, returns file path)accessibility_treeGet the AT-SPI2 widget tree with roles, names, states, and screen coordinates (translated from window-local coordinates via compositor-side window geometry). Use `role` to filter to specific element types (e.g. `"button"`, `"check box"`). Non-matching elements are hidden but their children are stil…find_ui_elementsSearch for UI elements by name, role, or description (case-insensitive). Returns screen coordinates suitable for `mouse_click` and friends. Optionally filter by AT-SPI2 states (e.g. `["focused"]`, `["active", "visible"]`). `query` can be empty when filtering by states only.mouse_clickClick at coordinates. Supports left/right/middle, single/double/triple click, modifier keys (e.g. `["ctrl", "shift"]`), and long-press via `hold_ms`.mouse_moveMove the cursor (hover) to coordinates without clickingmouse_scrollScroll at coordinates. `delta` positive = down/right, negative = up/left. Use `discrete=true` for wheel ticks, `steps` to split into smooth increments.mouse_dragDrag from one point to another with smooth interpolation. Supports custom `waypoints` for complex drag paths.mouse_button_downPress a mouse button at coordinates without releasing. Use with `mouse_button_up` for manual drag control.mouse_button_upRelease a previously pressed mouse button at coordinatestake_screenshotScreenshot of the entire desktop with configurable qualitytake_window_screenshotScreenshot of a specific window (screen or window capture mode)read_screen_textOCR the entire screen (Windows.Media.Ocr)read_region_textOCR a screen region with precise word coordinateslist_windowsList windows with id, title, app, position, size, minimized, focusedfocus_windowBring a window to front, restore if minimizedmouse_clickClick (left / right / middle) on a UI element by id, or at screen / window-relative coordinatesmouse_moveMove cursor to a point or to a UI elementmouse_dragDrag from point A to point Bmouse_scrollScroll the mouse wheelkeyboard_typeType text (full Unicode — Latin, Cyrillic, CJK, emoji)keyboard_pressPress a key (Enter, Tab, F1–F12, arrows, etc.)Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"kwin-mcp": {
"command": "uvx",
"args": [
"kwin-mcp"
]
}
}
}
No confirmed install command for MCP Test Utils yet — follow the setup steps linked from its listing page rather than a guessed package name.