SwarmTask

Un administrador de tareas asíncrono para la ejecución paralela de comandos de shell con monitoreo de progreso en tiempo real.

Documentación

SwarmTask - Gestor de tareas asíncronas con MCP

Un potente servidor MCP (Model Context Protocol) que permite la ejecución paralela de comandos de shell a través de asistentes de IA como Claude Code. SwarmTask te permite enviar múltiples tareas (comandos del sistema, scripts, builds, pruebas) que se ejecutan simultáneamente en goroutines de Go, brindándote monitoreo de progreso y resultados en tiempo real.

Perfecto para:

  • 🔧 Administración de sistemas: Ejecuta múltiples comandos de diagnóstico en paralelo
  • 🏗️ Flujos de desarrollo: Ejecuta builds, pruebas y despliegues simultáneamente
  • 📊 Procesamiento de datos: Procesa múltiples archivos o conjuntos de datos de forma concurrente
  • 🌐 Operaciones de red: Pruebas de conectividad y monitoreo en paralelo
  • 🔍 Monitoreo y auditoría: Verificaciones de salud del sistema simultáneas

⚠️ Nota de seguridad: La protección contra inyección de scripts y el aislamiento de seguridad no están implementados en esta versión. SwarmTask ejecuta comandos con los mismos privilegios que el proceso en ejecución. Planificado para la próxima versión.

Características

  • 🚀 Ejecución de tareas asíncronas - Envía tareas y obtén un ID de lote inmediato
  • Procesamiento basado en goroutines - Ejecución paralela de tareas con canales
  • 📊 Seguimiento de estado en tiempo real - Consulta el progreso y los resultados
  • 🔗 Cumplimiento del protocolo MCP - Se integra con Claude Code a través de supergateway
  • 📈 Notificaciones de progreso - Actualizaciones en streaming durante la ejecución

Inicio rápido

  1. Inicia el servidor:
./swarmtask --port 3500
  1. Configura Claude Code - Añade a ~/.claude/mcp_servers.json:
{
  "mcpServers": {
    "swarmtask": {
      "command": "npx",
      "args": [
        "-y",
        "supergateway", 
        "--streamableHttp",
        "http://localhost:3500/mcp"
      ],
      "env": {}
    }
  }
}
  1. Reinicia Claude Code para cargar el servidor MCP

Herramientas disponibles

submit_tasks

Envía múltiples tareas para ejecución asíncrona en paralelo.

Formato de entrada: Cadena JSON que mapea nombres de tareas a comandos de shell

Uso correcto:

{
  "tasks": "{\"list_home\":\"ls ~\",\"ping_test\":\"ping -c 4 google.com\",\"disk_usage\":\"df -h\"}"
}

Formato alternativo (más fácil de leer):

{
  "tasks": {
    "list_home": "ls ~",
    "ping_test": "ping -c 4 google.com", 
    "disk_usage": "df -h",
    "system_info": "uname -a"
  }
}

Puntos clave:

  • Los nombres de las tareas forman parte del ID de tarea: {batch_id}-{task_name}
  • Los comandos se ejecutan como comandos de shell (sh -c "command")
  • Todas las tareas se ejecutan en goroutines paralelas
  • Máximo 50 tareas por lote
  • Devuelve inmediatamente con batch_id para seguimiento

Devuelve:

🚀 SwarmTask Batch Submitted Successfully!

🆔 Batch ID: a1b2c3d4-e5f6-7890-abcd-ef1234567890
📋 Task Count: 4 parallel goroutines
🏷️ Task Names: list_home, ping_test, disk_usage, system_info
📊 Status: submitted (starting execution)
⏱️ Started: 14:30:22

check_status

Monitorea el progreso y obtén resultados de las tareas enviadas.

Entrada:

{
  "batch_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

Opcional - Verificar tarea específica:

{
  "batch_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "task_id": "a1b2c3d4-list_home"
}

Devuelve:

📊 Batch Status Report

🆔 Batch ID: a1b2c3d4-e5f6-7890-abcd-ef1234567890
📈 Overall Progress: 75.0%
🔄 Status: running

📋 Task Details:

✅ list_home:
   Command: ls ~
   Results: Desktop Documents Downloads...

🔄 ping_test:
   Command: ping -c 4 google.com
   Results: running

✅ disk_usage:
   Command: df -h
   Results: Filesystem Size Used Avail...

❌ system_info:
   Command: uname -a
   Results: Error: command timeout

Iconos de estado:

  • pending - Tarea en cola, no iniciada
  • 🔄 running - Tarea en ejecución actualmente
  • completed - Tarea finalizada correctamente
  • error - Tarea fallida (muestra mensaje de error)

Arquitectura

SwarmTask Architecture

Componentes principales

  • Servidor MCP (cmd/swarmtask/main.go)

    • Transporte HTTP en puerto configurable (por defecto 3500)
    • Maneja las herramientas MCP submit_tasks y check_status
    • Validación de entrada y manejo de errores
    • Devuelve respuestas inmediatas con IDs de lote
  • Gestor de tareas (internal/core/manager.go)

    • Worker maestro: Coordina la ejecución de lotes
    • Sub-workers: Ejecutan tareas individuales en goroutines
    • Estado global: Almacenamiento de tareas seguro para hilos con mutex
    • Comunicación por canales: Los resultados fluyen de vuelta a través de canales
  • Sistema de registro (internal/logger/)

    • Registro de archivos asíncrono con rotación (5MB)
    • Registro de solicitudes/respuestas HTTP
    • Seguimiento de ejecución de tareas con tiempos
    • Configurable por entorno (STLOGDIR)

Flujo de datos

  1. Envío: El cliente envía tareas JSON → Se crea el lote → Se inician las goroutines
  2. Ejecución: Las tareas se ejecutan en paralelo → Los resultados se almacenan en mapas globales
  3. Monitoreo: Las comprobaciones de estado devuelven progreso en tiempo real → Búsquedas no bloqueantes
  4. Finalización: Todas las tareas terminan → Los resultados finales están disponibles

Características clave

  • Ejecución paralela: Múltiples tareas se ejecutan simultáneamente en goroutines
  • No bloqueante: Respuesta inmediata con seguimiento de lote
  • Seguro para hilos: Mapas globales protegidos con RWMutex
  • Estado en tiempo real: Seguimiento de progreso con porcentaje de finalización
  • Resiliencia a errores: Los fallos de tareas individuales no afectan a las demás

Ejemplos de uso

Ejecución paralela básica

  1. Envía múltiples tareas del sistema:
Submit tasks: {"sys_info":"uname -a", "disk_space":"df -h", "memory":"free -h", "processes":"ps aux | head -10"}
  1. Monitorea el progreso:
Check status with batch_id: a1b2c3d4-e5f6-7890
  1. Visualiza los resultados:
📊 Progress: 100% | ✅✅✅✅ All tasks completed

Tareas de larga duración

Submit tasks: {"backup":"tar -czf backup.tar.gz ~/Documents", "network_test":"ping -c 100 google.com", "file_scan":"find /var/log -name '*.log' -size +1M"}

Flujo de desarrollo

Submit tasks: {"git_status":"git status", "run_tests":"npm test", "build":"npm run build", "lint":"npm run lint"}

¡Las tareas se ejecutan en goroutines paralelas mientras recibes actualizaciones de estado en tiempo real!

Beneficios

  • 🚀 No bloqueante: Obtén respuesta inmediata con ID de lote
  • ⚡ Ejecución paralela: Múltiples tareas se ejecutan simultáneamente en goroutines
  • 🔄 Monitoreo en tiempo real: Seguimiento de progreso en vivo con porcentaje de finalización
  • 🛡️ Resiliencia a errores: Los fallos de tareas individuales no afectan a las demás
  • 📊 Registro completo: Registro completo de solicitudes/respuestas y ejecución
  • 🎛️ Configurable: Puertos y directorios de registro personalizados
  • 🔗 Integración MCP: Soporte nativo para Claude Code y Desktop
  • ⏱️ Rendimiento: Almacenamiento en memoria con búsquedas de tareas O(1)
  • 🧵 Seguro para hilos: Acceso concurrente con protección de mutex adecuada
  • 📈 Escalable: Maneja hasta 50 tareas paralelas por lote