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.
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
| Herramienta | Descripción |
|---|---|
screenshot | Captura de pantalla completa |
screenshot_window | Capturar una ventana específica |
screenshot_area | Capturar una región rectangular |
pick_color | Obtener el color de un píxel en coordenadas |
cleanup_screenshots | Eliminar archivos temporales de captura |
Ventanas
| Herramienta | Descripción |
|---|---|
list_windows | Listar todas las ventanas abiertas |
get_window | Obtener propiedades detalladas de la ventana |
focus_window | Enfocar y elevar una ventana |
move_resize_window | Mover y redimensionar una ventana |
minimize_window / unminimize_window | Minimizar/restaurar |
maximize_window / unmaximize_window | Maximizar/restaurar |
close_window | Cerrar una ventana |
list_workspaces | Listar todos los espacios de trabajo |
activate_workspace | Cambiar de espacio de trabajo |
Entrada
| Herramienta | Descripción |
|---|---|
key_press | Pulsar una tecla ("Return", "F5", "a") |
key_combo | Combinación de teclas ("Ctrl+Alt+t") |
type_text | Escribir texto carácter por carácter |
mouse_move | Mover el ratón a coordenadas |
mouse_click | Hacer clic en coordenadas |
mouse_double_click | Doble clic |
mouse_down / mouse_up | Pulsar/soltar botón del ratón |
mouse_drag | Arrastrar del punto A al punto B |
mouse_scroll | Desplazarse en coordenadas |
Utilidades
| Herramienta | Descripción |
|---|---|
ping | Comprobar que la extensión está activa |
get_enabled / set_enabled | Comprobar/alternar automatización |
get_monitors | Listar 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 ventanasClutter.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