Desktop Automation

Automatiza acciones del escritorio e interactúa con tu entorno local usando aplicaciones LLM.

Documentación

Servidor MCP de Automatización de Escritorio

Un servidor de Model Context Protocol (MCP) que expone capacidades de automatización de escritorio, permitiendo que aplicaciones LLM interactúen con tu entorno de escritorio mediante herramientas estandarizadas.

Descripción General

Este servidor MCP proporciona un puente entre aplicaciones LLM y la funcionalidad de automatización de escritorio. Expone capacidades de automatización de mouse, teclado y pantalla a través del protocolo MCP, permitiendo que los asistentes de IA puedan:

  • Hacer clic, clic derecho y doble clic en coordenadas específicas
  • Mover el cursor del mouse con movimiento suave o instantáneo
  • Escribir texto con retrasos opcionales entre caracteres
  • Presionar teclas individuales o combinaciones de teclas
  • Obtener la posición actual del cursor del mouse
  • Capturar capturas de pantalla del escritorio
  • Obtener las dimensiones de la pantalla

Características

Automatización del Mouse

  • Clic: Clic izquierdo en coordenadas especificadas
  • Clic Derecho: Clic derecho en coordenadas especificadas
  • Doble Clic: Doble clic en coordenadas especificadas
  • Mover Mouse: Mover el cursor con animación suave opcional
  • Obtener Posición: Recuperar las coordenadas actuales del mouse

Automatización del Teclado

  • Escribir Texto: Escribir texto en la posición actual del cursor
  • Presionar Tecla: Presionar teclas individuales o combinaciones de teclas
  • Escritura con Retraso: Escribir con retrasos configurables entre caracteres

Automatización de Pantalla

  • Tomar Captura: Capturar la pantalla completa y guardar en un archivo
  • Obtener Tamaño de Pantalla: Recuperar las dimensiones de la pantalla

Instalación

Requisitos Previos

  • Go 1.23.0 o posterior
  • Ejecutor de tareas (opcional, para usar comandos de Taskfile)
# Install Task (optional)
go install github.com/go-task/task/v3/cmd/task@latest

Compilar desde el Código Fuente

# Clone the repository (if not already available)
git clone <repository-url>
cd desktop-automation-mcp

# Download dependencies
go mod download
go mod tidy

# Build the server
go build -o mcp-server ./cmd/mcp-server

# Or using Task
task build

Uso

Ejecutando el Servidor

El servidor utiliza transporte stdio para la comunicación:

# Run directly
./mcp-server

# Or using Task
task run

Integración con Aplicaciones LLM

Configura tu aplicación LLM (Claude Desktop, etc.) para conectarse a este servidor MCP:

{
  "mcpServers": {
    "desktop-automation": {
      "command": "/path/to/mcp-server"
    }
  }
}

Herramientas Disponibles

click

Haz clic en coordenadas de pantalla especificadas.

Parámetros:

  • x (número, obligatorio): Coordenada X
  • y (número, obligatorio): Coordenada Y

right_click

Haz clic derecho en coordenadas de pantalla especificadas.

Parámetros:

  • x (número, obligatorio): Coordenada X
  • y (número, obligatorio): Coordenada Y

double_click

Haz doble clic en coordenadas de pantalla especificadas.

Parámetros:

  • x (número, obligatorio): Coordenada X
  • y (número, obligatorio): Coordenada Y

move_mouse

Mueve el cursor del mouse a coordenadas especificadas.

Parámetros:

  • x (número, obligatorio): Coordenada X
  • y (número, obligatorio): Coordenada Y
  • smooth (booleano, opcional): Usar animación de movimiento suave
  • duration (número, opcional): Duración del movimiento suave en segundos (predeterminado: 1.0)

get_mouse_position

Obtiene la posición actual del cursor del mouse.

Parámetros: Ninguno

type_text

Escribe texto en la posición actual del cursor.

Parámetros:

  • text (cadena, obligatorio): Texto a escribir
  • delay (número, opcional): Retraso entre caracteres en milisegundos

press_key

Presiona una tecla o combinación de teclas.

Parámetros:

  • key (cadena, obligatorio): Tecla a presionar (p. ej., 'enter', 'space', 'ctrl')
  • modifiers (matriz, opcional): Teclas modificadoras (p. ej., ['ctrl', 'shift'])

take_screenshot

Captura una captura de pantalla de la pantalla.

Parámetros:

  • path (cadena, opcional): Ruta para guardar la captura de pantalla (si no se proporciona, se guarda en el directorio temporal)

get_screen_size

Obtiene las dimensiones de la pantalla.

Parámetros: Ninguno

Arquitectura

desktop-automation-mcp/
├── cmd/
│   └── mcp-server/          # MCP server entry point
│       └── main.go
├── internal/
│   └── automation/          # Desktop automation logic (copied from desktop-automation)
│       ├── keyboard.go
│       ├── mouse.go
│       └── screen.go
├── go.mod                   # Go module definition
├── Taskfile.yml            # Task runner configuration
├── .gitignore              # Git ignore rules
└── README.md               # This file

Desarrollo

Comandos de Task

# Build the server
task build

# Run the server
task run

# Clean build artifacts
task clean

# Download and tidy dependencies
task deps

# Run tests
task test

# Install to GOPATH/bin
task install

Comandos Manuales

# Build
go build -o mcp-server ./cmd/mcp-server

# Run
./mcp-server

# Test
go test ./...

# Clean
go clean
rm -f mcp-server

Dependencias

Consideraciones de Seguridad

  • Límites de Pantalla: Todas las entradas de coordenadas se validan contra las dimensiones de la pantalla
  • Validación de Entrada: Se rechazan coordenadas negativas y parámetros inválidos
  • Manejo de Errores: Manejo integral de errores con mensajes descriptivos
  • Recuperación: Recuperación de pánico integrada para una operación robusta

Soporte de Plataformas

Este servidor soporta las mismas plataformas que robotgo:

  • Windows
  • macOS
  • Linux

Contribuciones

  1. Haz un fork del repositorio
  2. Crea una rama de características
  3. Realiza tus cambios
  4. Agrega pruebas si corresponde
  5. Envía una solicitud de extracción (pull request)

Licencia

Este proyecto sigue la misma licencia que el proyecto principal desktop-automation.

Proyectos Relacionados

  • desktop-automation: La herramienta original de automatización de escritorio basada en CLI
  • mcp-go: Implementación en Go del Model Context Protocol