screenshotLABSCO SUMMARY
Desktop automation on Wayland, where most tools cannot reach.
The screenshot and input APIs an assistant needs are closed to outside processes on GNOME Wayland, and running inside the compositor is what makes this work at all. The trade is the session bus trust model: any local process can call the same API, which is why the top-bar indicator and the master switch exist.
What it is
A Python server paired with a GNOME Shell extension. Wayland blocks outside processes from capturing the screen or injecting input, so the extension runs inside the compositor and exposes a D-Bus API that the server calls.
What you get
- 30 tools across screenshots, window management, input injection and workspace control
- Full-screen, single-window and rectangular-region captures, plus the pixel colour at a coordinate
- Windows listed, focused, moved, resized, minimised, maximised and closed; workspaces listed and switched
- Key presses, key combinations, typed text, mouse move, click, double-click, drag and scroll
- A top-bar indicator showing when automation is active, and a switch that blocks every D-Bus method at once
Requirements
GNOME Shell 45-49 on Wayland and Python 3.12 or newer. The project's install.sh links the Shell extension into your GNOME extensions folder and installs the server from your clone of the repository; after it runs, log out and back in, then enable the extension.
Setup effort
Build from source — git clone https://github.com/sbuysse/gnome-desktop-mcp.git
USE CASES
Checking what an application actually rendered
Capture the window rather than the whole screen, and read the pixel colour at a coordinate when the screenshot alone leaves the answer ambiguous.
Driving a GUI step by step
Find the window, bring it forward, then click and type into it — the same sequence a person would perform, with the compositor doing the input injection.
Laying out the screen before a demo
Move to the workspace you want, place and size each window, and check the monitor geometry first so the coordinates land where you meant.
Turning automation off when you want it off
Check the extension is alive, read whether automation is currently enabled, and switch it off — every method is blocked while it is off.
30 tools
Listed in project docs. Your client may show a different list.
screenshot_windowscreenshot_areapick_colorcleanup_screenshotslist_windowsget_windowfocus_windowmove_resize_windowminimize_windowunminimize_windowmaximize_windowunmaximize_windowclose_windowlist_workspacesactivate_workspacekey_presskey_combotype_textmouse_movemouse_clickmouse_double_clickmouse_downmouse_upmouse_dragmouse_scrollpingget_enabledset_enabledget_monitorsBEFORE YOU INSTALL
What to know first
Tools you get
30 tools named in the project's documentation.
Requires
- gnome-desktop-mcp on PATH
- Python 3.12+
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
This one is built from source rather than installed with a single command.
Server setup
git clone https://github.com/sbuysse/gnome-desktop-mcp.git
cd gnome-desktop-mcp
./install.shThen log out and back in (required for Wayland), and enable: gnome-extensions enable desktop-automation@gnomemcp.github.io
MCP Clients
Claude Code
{
"mcpServers": {
"desktop-automation": {
"command": "gnome-desktop-mcp"
}
}
}