The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Gnome Desktop MCP listing page.
Desktop automation for GNOME Wayland via MCP. Take screenshots, manage windows, and inject keyboard/mouse input from AI assistants like Claude Code.
GNOME Wayland blocks external processes from taking screenshots or injecting input. This extension runs inside the compositor, bypassing those restrictions, and exposes a D-Bus API. The MCP server bridges that API to any MCP-compatible client.
Then log out and back in (required for Wayland), and enable:
Add to ~/.claude/settings.json:
| Tool | Description |
|---|---|
screenshot | Full screen capture |
screenshot_window | Capture a specific window |
screenshot_area | Capture a rectangular region |
pick_color | Get pixel color at coordinates |
cleanup_screenshots | Remove temp screenshot files |
| Tool | Description |
|---|---|
list_windows | List all open windows |
get_window | Get detailed window properties |
focus_window | Focus and raise a window |
move_resize_window | Move and resize a window |
minimize_window / unminimize_window | Minimize/restore |
maximize_window / unmaximize_window | Maximize/restore |
close_window | Close a window |
list_workspaces | List all workspaces |
activate_workspace | Switch workspace |
| Tool | Description |
|---|---|
key_press | Press a single key ("Return", "F5", "a") |
key_combo | Key combination ("Ctrl+Alt+t") |
type_text | Type text character by character |
mouse_move | Move mouse to coordinates |
mouse_click | Click at coordinates |
mouse_double_click | Double-click |
mouse_down / mouse_up | Press/release mouse button |
mouse_drag | Drag from point A to point B |
mouse_scroll | Scroll at coordinates |
| Tool | Description |
|---|---|
ping | Check extension is alive |
get_enabled / set_enabled | Check/toggle automation |
get_monitors | List monitors with geometry |
The GNOME Shell extension (desktop-automation@gnomemcp.github.io) runs inside the Wayland compositor. It exports io.github.gnomemcp.DesktopAutomation on the session D-Bus with privileged access to:
Shell.Screenshot — silent screenshots (no permission dialog)Meta.Window — window managementClutter.VirtualInputDevice — keyboard/mouse injectionThe Python MCP server (gnome-desktop-mcp) translates MCP tool calls into D-Bus method calls via dasbus.