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
- Inicia el servidor:
./swarmtask --port 3500
- Configura Claude Code - Añade a
~/.claude/mcp_servers.json:
{
"mcpServers": {
"swarmtask": {
"command": "npx",
"args": [
"-y",
"supergateway",
"--streamableHttp",
"http://localhost:3500/mcp"
],
"env": {}
}
}
}
- 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_idpara 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
Componentes principales
-
Servidor MCP (
cmd/swarmtask/main.go)- Transporte HTTP en puerto configurable (por defecto 3500)
- Maneja las herramientas MCP
submit_tasksycheck_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
- Envío: El cliente envía tareas JSON → Se crea el lote → Se inician las goroutines
- Ejecución: Las tareas se ejecutan en paralelo → Los resultados se almacenan en mapas globales
- Monitoreo: Las comprobaciones de estado devuelven progreso en tiempo real → Búsquedas no bloqueantes
- 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
- 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"}
- Monitorea el progreso:
Check status with batch_id: a1b2c3d4-e5f6-7890
- 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