Integrar o Claude diretamente a servidores via SSH para executar comandos costuma ser um desafio. As ferramentas padrão do Claude geralmente carecem de suporte para terminais interativos: não há PTY (Pseudo-Terminal), sessões persistentes são raras e processos longos como um npm install frequentemente falham. Além disso, a impossibilidade de responder a prompts de senha interrompe o fluxo de trabalho.
Para resolver essas limitações, surgiram diversos projetos baseados no Model Context Protocol (MCP). Abaixo, apresento uma aálise detalhada de seis implementações testadas para habilitar shells interativos no Claude.
Visão Geral dos Projetos
| Projeto | Linguagem | Instalação | Status |
|---|---|---|---|
| PiloTY | Python | uv / pipx | Em desenvolvimento (WIP) |
| mcp-interactive-terminal | TypeScript | npx | Estável |
| interactive-shell-mcp | JavaScript | Build local | Funcional |
| interactive-terminal-mcp | Python | uvx | Funcional |
| smart-terminal-mcp | JavaScript | npx @stable | Estável |
| terminal-mcp | Python | uvx | Ativo (v0.4.6) |
Matriz de Funcionalidades Técnicas
| Recurso | PiloTY | mcp-interact | shell-mcp | term-mcp-py | smart-term | terminal-mcp |
|---|---|---|---|---|---|---|
| Base PTY | pexpect | node-pty | node-pty | Processo base | node-pty | pexpect |
| Suporte SSH | Chave pública | Comandos genéricos | Comandos genéricos | Comandos genéricos | Comandos genéricos | Parâmetros de senha |
| Corte de Saída | Nenhum | Limite de caracteres | Metadados/Bytes | Nenhum | Paginação/Linhas | 4 estratégias |
| Espera de Padrão | Não | Prompt automático | Não | Regex | terminal_wait | session_wait_for |
| Apps TUI (Vim/Htop) | Básico | xterm-headless | Modo Snapshot | Não | Completo | Modo Diff |
Análise Individual e Configuração
1. PiloTY
Focado especificamente em fluxos SSH, o PiloTY utiliza uma arquitetura de handlers e registra logs de todas as sessões em ~/.piloty/. É ideal para quem precisa de auditoria.
- Prós: Gerenciamento independente de processos em background.
- Contras: Falta de truncamento de saída. Saídas muito longas podem estourar o limite do MCP e derrubar a conexão.
// Exemplo de configuração no Claude Desktop
{
"mcpServers": {
"piloty": {
"command": "piloty"
}
}
}
2. mcp-interactive-terminal
Este projeto prioriza a segurança, implementando camadas de proteção contra comandos perigosos como rm -rf, exigindo confirmação do usuário. Utiliza xterm-headless para garantir que a IA veja exatamente o que um humano veria no terminal.
- Destaque: Algoritmo de detecção de término de comando baseado em silêncio de saída e detecção de prompt.
- Atenção: Como usa
node-pty, requer ferramentas de compilação (Xcode no Mac, build-essential no Linux).
3. interactive-shell-mcp
Diferencia-se pelo modo dual: streaming para comandos comuns e snapshot para programas que atualizam a tela continuamente (como top). Isso evita que o Claude receba um fluxo infinito de bytes irrelevantes.
// Instalação via build manual
git clone https://github.com/lightos/interactive-shell-mcp
cd interactive-shell-mcp
npm install && npm run build
4. interactive-terminal-mcp (Sessões com Estado)
Implementado em Python, foca na persistência. Variáveis de ambiente e diretórios de trabalho são mantidos entre as chamadas, eliminando a necessidade de reconectar ao SSH a cada novo comando.
# Fluxo típico de uso
# 1. Inicia o processo remoto
spawn_process(command=["ssh", "usuario@servidor.com"])
# 2. Envia credenciais via buffer
send_command(session_id="id_123", cmd="senha_secreta\n", wait_for="Password:")
# 3. Executa tarefa
send_command(session_id="id_123", cmd="ls -la /var/www\n", timeout=15)
5. smart-terminal-mcp
Oferece o conjunto de ferramentas mais robusto para manipulação de saída, incluindo terminal_diff para comparar resultados de comandos e terminal_run_paged para ler grandes logs de forma paginada. É a melhor opção para usuários Windows.
6. terminal-mcp (Recomendado)
Atualmente o projeto mais ativo. Resolve o problema de autenticação SSH com um parâmetro dedicado para senhas que não vaza em logs. Sua função session_interact combina envio e leitura em uma única chamada MCP, otimizando a latência.
// Configuração sugerida para o Claude Desktop
{
"mcpServers": {
"terminal": {
"command": "uvx",
"args": ["terminal-mcp"],
"env": {
"TERMINAL_MCP_TRUNCATION_MODE": "tail_only",
"TERMINAL_MCP_MAX_OUTPUT_BYTES": "150000"
}
}
}
}
Resumo de Problemas Conhecidos
| Projeto | Gravidade | Descrição |
|---|---|---|
| PiloTY | Alta | Ausência de corte de saída; crash em comandos como npm install. |
| mcp-interactive-terminal | Média | Se a compilação nativa falhar, o modo fallback degrada a saída de TUIs. |
| terminal-mcp | Baixa | O modo stream pode encerrar prematuramente se o comando silenciar por 2s. |
| smart-terminal-mcp | Baixa | Notificações de progresso não funcionam no cliente desktop atual do Claude. |
Guia de Escolha
- Ambientes Linux/Mac e SSH:
terminal-mcpé a escolha superior pela facilidade comuvxe gestão inteligente de senhas e truncamento. - Ambiente Windows:
smart-terminal-mcppossui a melhor compatibilidade e suporte a paginação de saída. - Foco em Segurança:
mcp-interactive-terminaloferece as melhores travas contra comandos destrutivos acidentais. - Monitoramento de Processos:
interactive-shell-mcpé excelente para observar aplicações em tempo real via snapshots.