Skip to main content
Glama
sbuysse
by sbuysse

Gnome-MCP

Desktop automation for GNOME Wayland via MCP. Take screenshots, manage windows, and inject keyboard/mouse input from AI assistants like Claude Code.

GNOME Desktop MCP server

Claude Code  ──MCP──▶  gnome-desktop-mcp (Python)  ──D-Bus──▶  GNOME Shell Extension

Why

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.

Related MCP server: desk-mcp

Features

  • 30 MCP tools: screenshots, window management, input injection, workspace control

  • Privacy indicator: top bar icon shows connection status (red = active, grey = idle)

  • Consent dialog: first-use confirmation before enabling automation

  • Access gating: master kill switch to disable all automation instantly

Requirements

  • GNOME Shell 45-49 (Wayland)

  • Python 3.12+

Installation

Quick install (development)

git clone https://github.com/sbuysse/gnome-mcp.git
cd gnome-mcp
./install.sh

Then log out and back in (required for Wayland), and enable:

gnome-extensions enable desktop-automation@gnomemcp.github.io

MCP server only (from PyPI)

pip install gnome-desktop-mcp

Claude Code Configuration

Add to ~/.claude/settings.json:

{
  "mcpServers": {
    "desktop-automation": {
      "command": "gnome-desktop-mcp"
    }
  }
}

Tools

Screenshots

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

Windows

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

Input

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

Utility

Tool

Description

ping

Check extension is alive

get_enabled / set_enabled

Check/toggle automation

get_monitors

List monitors with geometry

Privacy

  • Top bar indicator shows when automation is active

  • Toggle switch to disable all automation instantly

  • Activity log tracks last 20 method calls (name + timestamp only, no data)

  • D-Bus access gating: all methods blocked when disabled

  • Session bus trust model: any local user process can call the API (consistent with GNOME's security model)

Architecture

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 management

  • Clutter.VirtualInputDevice — keyboard/mouse injection

The Python MCP server (gnome-desktop-mcp) translates MCP tool calls into D-Bus method calls via dasbus.

Development

# Install in development mode
pip install -e mcp-server[dev]

# Run tests
python -m pytest tests/ -v

# Watch extension logs
journalctl /usr/bin/gnome-shell -f

# Test D-Bus directly
gdbus call --session --dest org.gnome.Shell \
  --object-path /io/github/gnomemcp/DesktopAutomation \
  --method io.github.gnomemcp.DesktopAutomation.Ping

License

GPL-3.0

Install Server
A
license - permissive license
B
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to automate Wayland desktop environments through screenshot analysis, mouse control, and keyboard input simulation. It supports visual context via VLM providers like Gemini and OpenRouter to perform complex, multi-step desktop actions.
    6
    GPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    A desktop automation MCP server that enables AI agents to interact with Linux environments through screenshots, window inspection, and input simulation. It provides tools for mouse control, keyboard input, and screen capture using xdotool and XDG Desktop Portals.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Desktop UI automation for AI agents: screenshots, window management, mouse, keyboard, UI Automation tree, OCR. Single Windows x64 binary, no dependencies.
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to automate Linux desktop GUI by launching and interacting with Wayland applications in isolated virtual KWin sessions, or connecting to live desktops for collaborative automation.
    39
    MIT

View all related MCP servers

Related MCP Connectors

  • Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.

  • Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.

  • Package intelligence MCP for AI agents — 22 tools, 19 ecosystems, AGPL SDK, free.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sbuysse/gnome-desktop-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server