Console Automation

Servidor MCP pronto para produção, voltado para automação e monitoramento de console orientados por IA. Mais de 40 ferramentas para gerenciamento de sessões, SSH, testes e tarefas em segundo plano.

Documentação

Console Automation MCP Server

Servidor Model Context Protocol (MCP) para interação controlada com aplicativos de console locais e sessões SSH remotas, incluindo monitoramento de saída, detecção de erros e fluxos de trabalho de longa duração.

Version License Node

Status de Segurança

Este servidor pode executar comandos arbitrários e abrir sessões SSH remotas. Trate-o como um terminal privilegiado, não como um conector de documentação de baixo risco:

  • mantenha as aprovações de ferramentas MCP habilitadas para mutações de comando/sessão;
  • prefira chaves SSH ou referências de credenciais por variáveis de ambiente em vez de segredos inline;
  • use uma conta de implantação restrita e uma etapa separada de aprovação de produção;
  • deixe MCP_DEBUG_LOG e MCP_LOG_DIR não definidos, a menos que diagnósticos sejam explicitamente necessários;
  • deixe a persistência de sessão desabilitada, a menos que metadados de recuperação sejam explicitamente necessários;
  • instale integrações de nuvem, contêineres e serial somente quando necessário.

Recursos

🚀 Capacidades Principais

  • Controle Total do Terminal: Crie e gerencie até 50 sessões de console simultâneas
  • Suporte Multi-Protocolo: Shells locais (cmd, PowerShell, pwsh, bash, zsh, sh) e conexões SSH remotas
  • Entrada Interativa: Envie entrada de texto e sequências de teclas especiais (Enter, Tab, Ctrl+C, etc.)
  • Monitoramento de Saída em Tempo Real: Capture, filtre e analise a saída do console com busca avançada
  • Suporte a Streaming: Streaming eficiente para processos de longa duração com correspondência de padrões
  • Detecção Automática de Erros: Padrões integrados para detectar erros, exceções e stack traces em várias linguagens
  • Multiplataforma: Funciona em Windows, macOS e Linux sem dependências nativas

🔐 SSH e Conexões Remotas

  • Suporte SSH Completo: Autenticação por senha e chave com suporte a passphrase
  • Opções SSH: Portas personalizadas, timeouts de conexão, configurações de keep-alive
  • Perfis de Conexão: Salve metadados SSH reutilizáveis e referências de credenciais por variáveis de ambiente
  • Suporte a Plataformas de Nuvem: Conexões Azure, AWS, GCP, Kubernetes por meio de perfis salvos
  • Suporte a Contêineres: Integração Docker e WSL para fluxos de trabalho conteinerizados

✅ Framework de Automação de Testes

  • Casos de Teste Automatizados: Ferramentas de asserção integradas para validação de saída do console
  • Asserções de Saída: Verifique se a saída contém, corresponde a regex ou é igual aos valores esperados
  • Validação de Código de Saída: Afirme os códigos de saída do comando para detecção de sucesso/falha
  • Validação Sem Erros: Verifique automaticamente erros na saída do comando
  • Instantâneos de Estado: Salve e compare estados de sessão antes/depois das operações
  • Fluxos de Trabalho de Teste: Encadeie asserções para cenários de teste abrangentes

🔄 Execução de Trabalhos em Segundo Plano

  • Execução Assíncrona de Comandos: Execute comandos de longa duração em segundo plano com captura completa de saída
  • Sistema de Fila de Prioridade: Priorize trabalhos (escala de 1 a 10) para utilização ideal de recursos
  • Monitoramento de Trabalhos: Acompanhe status, progresso e conclusão de trabalhos em segundo plano
  • Controle de Trabalhos: Cancele, pause ou retome operações em segundo plano
  • Recuperação de Resultados: Obtenha saída completa e códigos de saída de trabalhos concluídos
  • Gerenciamento de Recursos: Limpeza automática de trabalhos concluídos com retenção configurável

📊 Monitoramento e Alertas Empresariais

  • Métricas de Todo o Sistema: Rastreamento de uso de CPU, memória, disco e rede
  • Métricas de Sessão: Monitoramento de desempenho por sessão e consumo de recursos
  • Painéis em Tempo Real: Dados de monitoramento ao vivo com visualizações personalizáveis
  • Sistema de Alertas: Alertas de desempenho, erro, segurança e anomalias com níveis de gravidade
  • Monitoramento Personalizado: Configure intervalos de monitoramento, métricas e limites por sessão
  • Diagnósticos: Análise de erros integrada e validação de saúde da sessão

📁 Gerenciamento de Perfis

  • Perfis de Conexão: Salve conexões SSH, Docker, WSL e plataformas de nuvem
  • Perfis de Aplicação: Armazene configurações comuns de comandos (Node.js, Python, .NET, Java, Go, Rust)
  • Conexão Rápida: Conecte-se instantaneamente usando perfis salvos com suporte a substituição
  • Variáveis de Ambiente: Armazene configurações de ambiente por perfil
  • Gerenciamento de Diretório de Trabalho: Defina diretórios padrão para cada perfil

🔍 Processamento Avançado de Saída

  • Filtragem por Regex: Pesquise a saída com expressões regulares (sensível/insensível a maiúsculas/minúsculas)
  • Busca Multi-Padrão: Combine vários padrões com lógica AND/OR
  • Paginação: Obtenha intervalos específicos de linhas, início ou fim da saída
  • Filtragem por Tempo: Filtre a saída por timestamp (absoluto ou relativo: '5m', '1h', '2d')
  • Streaming de Saída: Captura de saída em tempo real para processos de longa duração
  • Gerenciamento de Buffer: Limpe buffers de saída para reduzir o uso de memória

Instalação Rápida

Windows

git clone https://github.com/ooples/mcp-console-automation.git
cd mcp-console-automation
.\install.ps1 -Target codex

macOS/Linux

git clone https://github.com/ooples/mcp-console-automation.git
cd mcp-console-automation
chmod +x install.sh
./install.sh --target codex

Instalação Manual

git clone https://github.com/ooples/mcp-console-automation.git
cd mcp-console-automation
npm ci
npm run build
codex mcp add console-automation --env LOG_LEVEL=warn -- node "$PWD/dist/mcp/server.js"

Configuração

O Codex armazena a configuração MCP em ~/.codex/config.toml. Os instaladores usam codex mcp add e substituem com segurança um registro console-automation existente. Reinicie o Codex após a instalação e use /mcp para verificar a conexão.

Para outro cliente MCP, gere uma nova configuração JSON sem sobrescrever um arquivo existente:

.\install.ps1 -Target custom -CustomPath C:\path\to\new-mcp-config.json

O pacote npm não foi publicado, portanto npx console-automation-mcp e @mcp/console-automation não são caminhos de instalação válidos.

Credenciais SSH salvas

console_save_profile rejeita senhas inline, material de chave privada e passphrases. Use passwordEnvVar, privateKeyEnvVar ou privateKeyPath e passphraseEnvVar. As respostas de listagem de perfis nunca retornam valores de credenciais, e os arquivos de configuração são criados com permissões somente do proprietário onde o sistema operacional suporta modos POSIX.

Persistência de sessão

A persistência de sessão está desabilitada por padrão porque os dados de recuperação de sessão podem incluir comandos, caminhos e valores de ambiente. Para optar por ela, defina MCP_SESSION_PERSISTENCE=true. O arquivo padrão é ~/.console-automation-mcp/sessions.json; substitua-o com MCP_SESSION_PERSISTENCE_PATH. Os dados de recuperação de comando/ambiente persistidos permanecem desabilitados, a menos que sejam habilitados por meio da configuração programática SessionManager.

Os instaladores de produção removem pacotes de desenvolvimento e protocolos opcionais. Consoles locais e SSH permanecem disponíveis. Instale apenas os pacotes pares necessários para Docker, nuvem, Kubernetes, serial ou outros adaptadores opcionais.

Ferramentas Disponíveis (40 no Total)

Este servidor MCP fornece 40 ferramentas abrangentes organizadas em 6 categorias:

📚 Documentação Completa

Categorias de Ferramentas

🖥️ Gerenciamento de Sessão (9 ferramentas)

  • console_create_session - Crie sessões de console locais ou SSH
  • console_send_input - Envie entrada de texto para sessões
  • console_send_key - Envie teclas especiais (Enter, Ctrl+C, etc.)
  • console_get_output - Obtenha saída filtrada/paginada com busca avançada
  • console_get_stream - Transmita saída de processos de longa duração
  • console_wait_for_output - Aguarde padrões específicos
  • console_stop_session - Pare sessões
  • console_list_sessions - Liste todas as sessões ativas
  • console_cleanup_sessions - Limpe sessões inativas

⚡ Execução de Comandos (6 ferramentas)

  • console_execute_command - Execute comandos com captura de saída
  • console_detect_errors - Analise a saída em busca de erros
  • console_get_resource_usage - Obtenha estatísticas de recursos do sistema
  • console_clear_output - Limpe buffers de saída
  • console_get_session_state - Obtenha o estado de execução da sessão
  • console_get_command_history - Veja o histórico de comandos

📊 Monitoramento e Alertas (6 ferramentas)

  • console_get_system_metrics - Métricas abrangentes do sistema
  • console_get_session_metrics - Métricas específicas da sessão
  • console_get_alerts - Alertas de monitoramento ativos
  • console_get_monitoring_dashboard - Dados de painel em tempo real
  • console_start_monitoring - Inicie monitoramento personalizado
  • console_stop_monitoring - Pare o monitoramento

📁 Gerenciamento de Perfis (4 ferramentas)

  • console_save_profile - Salve perfis de conexão SSH/aplicativo
  • console_list_profiles - Liste perfis salvos
  • console_remove_profile - Remova perfis
  • console_use_profile - Conexão rápida com perfis salvos

🔄 Trabalhos em Segundo Plano (9 ferramentas)

  • console_execute_async - Execute comandos de forma assíncrona
  • console_get_job_status - Verifique o status do trabalho
  • console_get_job_output - Obtenha a saída do trabalho
  • console_cancel_job - Cancele trabalhos em execução
  • console_list_jobs - Liste todos os trabalhos em segundo plano
  • console_get_job_progress - Monitore o progresso do trabalho
  • console_get_job_result - Obtenha resultados completos do trabalho
  • console_get_job_metrics - Estatísticas de execução de trabalhos
  • console_cleanup_jobs - Limpe trabalhos concluídos

✅ Automação de Testes (6 ferramentas)

  • console_assert_output - Afirme que a saída corresponde aos critérios
  • console_assert_exit_code - Afirme códigos de saída
  • console_assert_no_errors - Verifique se nenhum erro ocorreu
  • console_save_snapshot - Salve instantâneos do estado da sessão
  • console_compare_snapshots - Compare diferenças de estado
  • console_assert_state - Afirme o estado da sessão

Exemplos de Início Rápido

Crie uma Sessão Local

const session = await console_create_session({
  command: "npm",
  args: ["run", "dev"],
  detectErrors: true
});

Conecte-se via SSH

const session = await console_create_session({
  command: "bash",
  consoleType: "ssh",
  sshOptions: {
    host: "example.com",
    username: "user",
    privateKeyPath: "~/.ssh/id_rsa"
  }
});

Execute Testes com Asserções

const session = await console_create_session({
  command: "npm",
  args: ["test"]
});

await console_assert_output({
  sessionId: session.sessionId,
  assertionType: "contains",
  expected: "All tests passed"
});

Execução de Trabalho em Segundo Plano

const job = await console_execute_async({
  sessionId: session.sessionId,
  command: "npm run build",
  priority: 8
});

const status = await console_get_job_status({
  jobId: job.jobId
});

Para mais exemplos, veja docs/EXAMPLES.md

Casos de Uso

1. Executando e monitorando um servidor de desenvolvimento

// Create a session for the dev server
const session = await console_create_session({
  command: "npm",
  args: ["run", "dev"],
  detectErrors: true
});

// Wait for server to start
await console_wait_for_output({
  sessionId: session.sessionId,
  pattern: "Server running on",
  timeout: 10000
});

// Monitor for errors
const errors = await console_detect_errors({
  sessionId: session.sessionId
});

2. Sessão de depuração interativa

// Start a Python debugging session
const session = await console_create_session({
  command: "python",
  args: ["-m", "pdb", "script.py"]
});

// Set a breakpoint
await console_send_input({
  sessionId: session.sessionId,
  input: "b main\n"
});

// Continue execution
await console_send_input({
  sessionId: session.sessionId,
  input: "c\n"
});

// Step through code
await console_send_key({
  sessionId: session.sessionId,
  key: "n"
});

3. Testes automatizados com detecção de erros

// Run tests
const result = await console_execute_command({
  command: "pytest",
  args: ["tests/"],
  timeout: 30000
});

// Check for test failures
const errors = await console_detect_errors({
  text: result.output
});

if (errors.hasErrors) {
  console.log("Test failures detected:", errors);
}

4. Automação de ferramentas CLI interativas

// Start an interactive CLI tool
const session = await console_create_session({
  command: "mysql",
  args: ["-u", "root", "-p"]
});

// Enter password
await console_wait_for_output({
  sessionId: session.sessionId,
  pattern: "Enter password:"
});

await console_send_input({
  sessionId: session.sessionId,
  input: "mypassword\n"
});

// Run SQL commands
await console_send_input({
  sessionId: session.sessionId,
  input: "SHOW DATABASES;\n"
});

Padrões de Detecção de Erros

O servidor inclui padrões integrados para detectar tipos comuns de erros:

  • Erros genéricos (error:, ERROR:, Error:)
  • Exceções (Exception:, exception)
  • Avisos (Warning:, WARNING:)
  • Erros fatais
  • Operações com falha
  • Permissão/acesso negado
  • Timeouts
  • Stack traces (Python, Java, Node.js)
  • Erros de compilação
  • Erros de sintaxe
  • Erros de memória
  • Erros de conexão

Desenvolvimento

Compilando a partir do código-fonte

npm install
npm run build

Executando em modo de desenvolvimento

npm run dev

Executando testes

npm test

Verificação de tipos

npm run typecheck

Linting

npm run lint

Arquitetura

O servidor é construído com:

  • Processos filhos do Node e ssh2: Para execução local de comandos e sessões SSH
  • @modelcontextprotocol/sdk: Implementação do protocolo MCP
  • TypeScript: Para segurança de tipos e melhor experiência do desenvolvedor
  • Winston: Para registro estruturado de logs

Componentes Principais

  1. ConsoleManager: Gerencia sessões de terminal, entrada/saída e ciclo de vida
  2. ErrorDetector: Analisa a saída em busca de erros e exceções
  3. Servidor MCP: Expõe funcionalidades do console por meio de ferramentas MCP
  4. Gerenciamento de Sessão: Lida com múltiplas sessões de console simultâneas

Requisitos

  • Node.js >= 18.0.0
  • Sistema operacional Windows, macOS ou Linux
  • Integrações opcionais de porta serial podem exigir ferramentas de compilação da plataforma.

Testes

Execute validação estática, o build, testes de fumaça MCP e a suíte de testes:

npm run lint
npm run typecheck
npm run build
npm run test:mcp
npm run test:logger
npm run test:installer
npm run test:package
npm test

Solução de Problemas

Problemas Comuns

  1. Erros de permissão negada: Garanta que o servidor tenha permissão para iniciar processos
  2. Erros opcionais de dependências nativas: Instale ferramentas de compilação da plataforma somente ao habilitar integrações de porta serial
  3. Sessão sem resposta: Verifique se o comando requer interação com TTY
  4. Saída não capturada: Alguns aplicativos podem gravar diretamente no terminal, ignorando o stdout

Contribuindo

Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.

  1. Faça um fork do repositório
  2. Crie sua branch de funcionalidade (git checkout -b feature/AmazingFeature)
  3. Faça commit das suas alterações (git commit -m 'Add some AmazingFeature')
  4. Envie para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

Licença

Licença MIT - consulte o arquivo LICENSE para detalhes

Suporte

Para problemas, perguntas ou sugestões, abra uma issue no GitHub: https://github.com/ooples/mcp-console-automation/issues

Roadmap

  • Adicionar suporte para gravação e reprodução de terminal
  • Implementar persistência e recuperação de sessão
  • Adicionar mais padrões de detecção de erros para linguagens específicas
  • Suporte para multiplexação de terminal (integração com tmux/screen)
  • Visualizador de terminal baseado na web
  • Recursos de compartilhamento de sessão e colaboração
  • Ferramentas de análise de desempenho
  • Integração com sistemas populares de CI/CD