GNOME Desktop MCP

Extensión de GNOME Shell + servidor MCP Python que brinda a los asistentes de IA 30 herramientas para automatizar el escritorio Linux: capturas de pantalla, gestión de ventanas, inyección de ratón/teclado, portapapeles y espacios de trabajo.

Documentación

Gnome-MCP

Automatización de escritorio para GNOME Wayland mediante MCP. Toma capturas de pantalla, gestiona ventanas e inyecta entrada de teclado/ratón desde asistentes de IA como Claude Code.

GNOME Desktop MCP server

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

Por qué

GNOME Wayland bloquea que los procesos externos tomen capturas de pantalla o inyecten entrada. Esta extensión se ejecuta dentro del compositor, evitando esas restricciones, y expone una API D-Bus. El servidor MCP conecta esa API con cualquier cliente compatible con MCP.

Características

  • 30 herramientas MCP: capturas de pantalla, gestión de ventanas, inyección de entrada, control de espacios de trabajo
  • Indicador de privacidad: el icono de la barra superior muestra el estado de conexión (rojo = activo, gris = inactivo)
  • Diálogo de consentimiento: confirmación de primer uso antes de habilitar la automatización
  • Control de acceso: interruptor maestro para desactivar toda la automatización al instante

Requisitos

  • GNOME Shell 45-49 (Wayland)
  • Python 3.12+

Instalación

Instalación rápida (desarrollo)

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

Luego cierra sesión y vuelve a iniciarla (requerido para Wayland), y habilita:

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

Solo servidor MCP (desde PyPI)

pip install gnome-desktop-mcp

Configuración de Claude Code

Añade a ~/.claude/settings.json:

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

Herramientas

Capturas de pantalla

HerramientaDescripción
screenshotCaptura de pantalla completa
screenshot_windowCapturar una ventana específica
screenshot_areaCapturar una región rectangular
pick_colorObtener el color de un píxel en coordenadas
cleanup_screenshotsEliminar archivos temporales de captura

Ventanas

HerramientaDescripción
list_windowsListar todas las ventanas abiertas
get_windowObtener propiedades detalladas de la ventana
focus_windowEnfocar y elevar una ventana
move_resize_windowMover y redimensionar una ventana
minimize_window / unminimize_windowMinimizar/restaurar
maximize_window / unmaximize_windowMaximizar/restaurar
close_windowCerrar una ventana
list_workspacesListar todos los espacios de trabajo
activate_workspaceCambiar de espacio de trabajo

Entrada

HerramientaDescripción
key_pressPulsar una tecla ("Return", "F5", "a")
key_comboCombinación de teclas ("Ctrl+Alt+t")
type_textEscribir texto carácter por carácter
mouse_moveMover el ratón a coordenadas
mouse_clickHacer clic en coordenadas
mouse_double_clickDoble clic
mouse_down / mouse_upPulsar/soltar botón del ratón
mouse_dragArrastrar del punto A al punto B
mouse_scrollDesplazarse en coordenadas

Utilidades

HerramientaDescripción
pingComprobar que la extensión está activa
get_enabled / set_enabledComprobar/alternar automatización
get_monitorsListar monitores con geometría

Privacidad

  • Indicador de barra superior muestra cuando la automatización está activa
  • Interruptor de alternancia para desactivar toda la automatización al instante
  • Registro de actividad rastrea las últimas 20 llamadas a métodos (solo nombre y marca de tiempo, sin datos)
  • Control de acceso D-Bus: todos los métodos bloqueados cuando está desactivado
  • Modelo de confianza del bus de sesión: cualquier proceso de usuario local puede llamar a la API (consistente con el modelo de seguridad de GNOME)

Arquitectura

La extensión de GNOME Shell (desktop-automation@gnomemcp.github.io) se ejecuta dentro del compositor Wayland. Exporta io.github.gnomemcp.DesktopAutomation en el D-Bus de sesión con acceso privilegiado a:

  • Shell.Screenshot — capturas de pantalla silenciosas (sin diálogo de permisos)
  • Meta.Window — gestión de ventanas
  • Clutter.VirtualInputDevice — inyección de teclado/ratón

El servidor MCP en Python (gnome-desktop-mcp) traduce las llamadas a herramientas MCP en llamadas a métodos D-Bus mediante dasbus.

Desarrollo

# 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

Licencia

GPL-3.0