GNOME Desktop MCP

Extensão do GNOME Shell + servidor MCP Python que oferece 30 ferramentas para assistentes de IA automatizarem o desktop Linux: capturas de tela, gerenciamento de janelas, injeção de mouse/teclado, área de transferência e espaços de trabalho.

Documentação

Gnome-MCP

Automação de desktop para GNOME Wayland via MCP. Capture telas, gerencie janelas e injete entrada de teclado/mouse a partir de assistentes de IA como Claude Code.

GNOME Desktop MCP server

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

Por quê

O GNOME Wayland bloqueia processos externos de capturar telas ou injetar entrada. Esta extensão roda dentro do compositor, contornando essas restrições, e expõe uma API D-Bus. O servidor MCP faz a ponte entre essa API e qualquer cliente compatível com MCP.

Recursos

  • 30 ferramentas MCP: capturas de tela, gerenciamento de janelas, injeção de entrada, controle de áreas de trabalho
  • Indicador de privacidade: ícone na barra superior mostra o status da conexão (vermelho = ativo, cinza = ocioso)
  • Diálogo de consentimento: confirmação no primeiro uso antes de habilitar a automação
  • Controle de acesso: interruptor mestre para desativar toda a automação instantaneamente

Requisitos

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

Instalação

Instalação rápida (desenvolvimento)

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

Em seguida, faça logout e login novamente (necessário para Wayland) e habilite:

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

Apenas servidor MCP (via PyPI)

pip install gnome-desktop-mcp

Configuração do Claude Code

Adicione a ~/.claude/settings.json:

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

Ferramentas

Capturas de tela

FerramentaDescrição
screenshotCaptura de tela cheia
screenshot_windowCaptura de uma janela específica
screenshot_areaCaptura de uma região retangular
pick_colorObtém a cor de um pixel em coordenadas
cleanup_screenshotsRemove arquivos temporários de captura

Janelas

FerramentaDescrição
list_windowsLista todas as janelas abertas
get_windowObtém propriedades detalhadas da janela
focus_windowFoca e eleva uma janela
move_resize_windowMove e redimensiona uma janela
minimize_window / unminimize_windowMinimizar/restaurar
maximize_window / unmaximize_windowMaximizar/restaurar
close_windowFecha uma janela
list_workspacesLista todas as áreas de trabalho
activate_workspaceAlterna área de trabalho

Entrada

FerramentaDescrição
key_pressPressiona uma única tecla ("Return", "F5", "a")
key_comboCombinação de teclas ("Ctrl+Alt+t")
type_textDigita texto caractere por caractere
mouse_moveMove o mouse para coordenadas
mouse_clickClique em coordenadas
mouse_double_clickClique duplo
mouse_down / mouse_upPressionar/soltar botão do mouse
mouse_dragArrasta do ponto A ao ponto B
mouse_scrollRola em coordenadas

Utilitários

FerramentaDescrição
pingVerifica se a extensão está ativa
get_enabled / set_enabledVerifica/alterna automação
get_monitorsLista monitores com geometria

Privacidade

  • Indicador na barra superior mostra quando a automação está ativa
  • Interruptor para desativar toda a automação instantaneamente
  • Registro de atividades rastreia as últimas 20 chamadas de método (apenas nome + timestamp, sem dados)
  • Controle de acesso D-Bus: todos os métodos são bloqueados quando desativados
  • Modelo de confiança do barramento de sessão: qualquer processo de usuário local pode chamar a API (consistente com o modelo de segurança do GNOME)

Arquitetura

A extensão do GNOME Shell (desktop-automation@gnomemcp.github.io) roda dentro do compositor Wayland. Ela exporta io.github.gnomemcp.DesktopAutomation no D-Bus de sessão com acesso privilegiado a:

  • Shell.Screenshot — capturas de tela silenciosas (sem diálogo de permissão)
  • Meta.Window — gerenciamento de janelas
  • Clutter.VirtualInputDevice — injeção de teclado/mouse

O servidor MCP em Python (gnome-desktop-mcp) traduz chamadas de ferramentas MCP em chamadas de método D-Bus via dasbus.

Desenvolvimento

# 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

Licença

GPL-3.0