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
- Inicie o servidor:
./swarmtask --port 3500
- Configure o Claude Code - Adicione ao
~/.claude/mcp_servers.json:
{
"mcpServers": {
"swarmtask": {
"command": "npx",
"args": [
"-y",
"supergateway",
"--streamableHttp",
"http://localhost:3500/mcp"
],
"env": {}
}
}
}
- 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_idpara 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
Componentes Principais
-
Servidor MCP (
cmd/swarmtask/main.go)- Transporte HTTP em porta configurável (padrão 3500)
- Gerencia as ferramentas MCP
submit_tasksecheck_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
- Envio: Cliente envia tarefas JSON → Lote criado → Goroutines iniciadas
- Execução: Tarefas executadas em paralelo → Resultados armazenados em mapas globais
- Monitoramento: Verificações de status retornam progresso em tempo real → Consultas não bloqueantes
- 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
- Envie múltiplas tarefas de sistema:
Submit tasks: {"sys_info":"uname -a", "disk_space":"df -h", "memory":"free -h", "processes":"ps aux | head -10"}
- Monitore o progresso:
Check status with batch_id: a1b2c3d4-e5f6-7890
- 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