SwarmTask

Um gerenciador de tarefas assíncrono para execução paralela de comandos shell com monitoramento de progresso em tempo real.

Documentação

SwarmTask - Gerenciador de Tarefas Assíncronas com MCP

Um poderoso servidor MCP (Model Context Protocol) que permite a execução paralela de comandos shell através de assistentes de IA como o Claude Code. O SwarmTask permite que você envie múltiplas tarefas (comandos de sistema, scripts, builds, testes) que são executadas simultaneamente em goroutines Go, oferecendo monitoramento de progresso e resultados em tempo real.

Perfeito para:

  • 🔧 Administração de Sistemas: Execute múltiplos comandos de diagnóstico em paralelo
  • 🏗️ Fluxos de Desenvolvimento: Execute builds, testes e deploys simultaneamente
  • 📊 Processamento de Dados: Processe múltiplos arquivos ou conjuntos de dados concorrentemente
  • 🌐 Operações de Rede: Testes de conectividade e monitoramento em paralelo
  • 🔍 Monitoramento e Auditoria: Verificações simultâneas de saúde do sistema

⚠️ Nota de Segurança: A proteção contra injeção de scripts e o isolamento de segurança não estão implementados nesta versão. O SwarmTask executa comandos com os mesmos privilégios do processo em execução. Planejado para a próxima versão.

Recursos

  • 🚀 Execução de Tarefas Assíncronas - Envie tarefas e receba imediatamente o ID do lote
  • ⚡ Processamento Baseado em Goroutines - Execução paralela de tarefas com canais
  • 📊 Rastreamento de Status em Tempo Real - Consulte o progresso e os resultados
  • 🔗 Compatível com o Protocolo MCP - Integra-se ao Claude Code via supergateway
  • 📈 Notificações de Progresso - Atualizações em streaming durante a execução

Início Rápido

  1. Inicie o servidor:
./swarmtask --port 3500
  1. Configure o Claude Code - Adicione ao ~/.claude/mcp_servers.json:
{
  "mcpServers": {
    "swarmtask": {
      "command": "npx",
      "args": [
        "-y",
        "supergateway", 
        "--streamableHttp",
        "http://localhost:3500/mcp"
      ],
      "env": {}
    }
  }
}
  1. Reinicie o Claude Code para carregar o servidor MCP

Ferramentas Disponíveis

submit_tasks

Envie múltiplas tarefas para execução assíncrona paralela.

Formato de Entrada: String JSON mapeando nomes de tarefas para comandos shell

Uso Correto:

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

Formato Alternativo (mais fácil de ler):

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

Pontos-Chave:

  • Os nomes das tarefas fazem parte do ID da tarefa: {batch_id}-{task_name}
  • Os comandos são executados como comandos shell (sh -c "command")
  • Todas as tarefas são executadas em goroutines paralelas
  • Máximo de 50 tarefas por lote
  • Retorna imediatamente com batch_id para rastreamento

Retorna:

🚀 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

Monitore o progresso e obtenha os resultados das tarefas enviadas.

Entrada:

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

Opcional - Verificar tarefa específica:

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

Retorna:

📊 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

Ícones de Status:

  • ⏳ pending - Tarefa na fila, não iniciada
  • 🔄 running - Tarefa em execução no momento
  • ✅ completed - Tarefa concluída com sucesso
  • ❌ error - Tarefa falhou (mostra mensagem de erro)

Arquitetura

SwarmTask Architecture

Componentes Principais

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

    • Transporte HTTP em porta configurável (padrão 3500)
    • Gerencia as ferramentas MCP submit_tasks e check_status
    • Validação de entrada e tratamento de erros
    • Retorna respostas imediatas com IDs de lote
  • Gerenciador de Tarefas (internal/core/manager.go)

    • Worker Mestre: Coordena a execução dos lotes
    • Sub Workers: Executam tarefas individuais em goroutines
    • Estado Global: Armazenamento de tarefas seguro para threads com mutexes
    • Comunicação por Canais: Resultados retornam via canais
  • Sistema de Logging (internal/logger/)

    • Logging assíncrono em arquivo com rotação (5MB)
    • Logging de requisições/respostas HTTP
    • Rastreamento de execução de tarefas com tempo
    • Configurável por ambiente (STLOGDIR)

Fluxo de Dados

  1. Envio: Cliente envia tarefas JSON → Lote criado → Goroutines iniciadas
  2. Execução: Tarefas executadas em paralelo → Resultados armazenados em mapas globais
  3. Monitoramento: Verificações de status retornam progresso em tempo real → Consultas não bloqueantes
  4. Conclusão: Todas as tarefas terminam → Resultados finais disponíveis

Recursos Principais

  • Execução Paralela: Múltiplas tarefas executadas simultaneamente em goroutines
  • Não Bloqueante: Resposta imediata com rastreamento do lote
  • Seguro para Threads: Mapas globais protegidos com RWMutex
  • Status em Tempo Real: Rastreamento de progresso com porcentagem de conclusão
  • Resiliência a Erros: Falhas individuais de tarefas não afetam as demais

Exemplos de Uso

Execução Paralela Básica

  1. Envie múltiplas tarefas de sistema:
Submit tasks: {"sys_info":"uname -a", "disk_space":"df -h", "memory":"free -h", "processes":"ps aux | head -10"}
  1. Monitore o progresso:
Check status with batch_id: a1b2c3d4-e5f6-7890
  1. Veja os resultados:
📊 Progress: 100% | ✅✅✅✅ All tasks completed

Tarefas de Longa Duração

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"}

Fluxo de Desenvolvimento

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

As tarefas são executadas em goroutines paralelas enquanto você recebe atualizações de status em tempo real!

Benefícios

  • 🚀 Não Bloqueante: Obtenha resposta imediata com ID do lote
  • ⚡ Execução Paralela: Múltiplas tarefas executadas simultaneamente em goroutines
  • 🔄 Monitoramento em Tempo Real: Rastreamento de progresso ao vivo com porcentagem de conclusão
  • 🛡️ Resiliência a Erros: Falhas individuais de tarefas não afetam as demais
  • 📊 Logging Abrangente: Logging completo de requisições/respostas e execução
  • 🎛️ Configurável: Portas personalizadas e diretórios de log
  • 🔗 Integração MCP: Suporte nativo ao Claude Code e Desktop
  • ⏱️ Performance: Armazenamento em memória com consultas de tarefas O(1)
  • 🧵 Seguro para Threads: Acesso concorrente com proteção adequada por mutex
  • 📈 Escalável: Suporta até 50 tarefas paralelas por lote