MCP SSH Server
Fornece acesso SSH a servidores remotos, permitindo que ferramentas de IA se conectem de forma segura ao seu VPS para gerenciamento.
Documentação
MCP SSH Server
Um servidor Model Context Protocol (MCP) que fornece acesso abrangente a SSH e console serial para servidores remotos e dispositivos de rede. Permite que ferramentas de IA como o Claude Desktop gerenciem com segurança servidores Linux, switches de rede e dispositivos de infraestrutura por meio de conexões SSH de rede e acesso direto ao console USB-para-Serial.
Recursos
Capacidades principais de SSH
- Gerenciamento de conexões SSH com autenticação por senha ou chave
- Execução remota de comandos com tratamento de timeout
- Upload e download de arquivos via SFTP
- Listagem de diretórios e operações de arquivos
- Tratamento seguro de conexões
Gerenciamento de dispositivos de rede
- Acesso ao console USB-para-Serial - Conexões diretas de console via adaptadores FTDI e outros adaptadores USB
- Gerenciamento de switches de rede - Suporte completo para switches Cisco IOS/IOS-XE e Aruba
- Descoberta de dispositivos - Detecção automática de tipos e capacidades de switches
- Gerenciamento de configuração - Backup, restauração e configuração automatizada
- Diagnósticos de rede - Ping, traceroute e testes de conectividade integrados
- Transição de console para SSH - Configuração automatizada de SSH via conexão de console
- Gerenciamento de firmware - Upload, verificação, instalação e rollback de firmware de switches
Gerenciamento de servidores
- Ferramentas de gerenciamento de servidores Ubuntu (Nginx, SSL, pacotes, firewall)
- Compatível com Claude Desktop, VS Code e outros clientes compatíveis com MCP
Testes de produção no mundo real
Esta ferramenta foi amplamente testada em ambientes de rede de produção:
- Descoberta de rede - Descobriu com sucesso portas anteriormente desconhecidas em switches de produção que estavam causando problemas intermitentes de conectividade
- Zero downtime - Gerenciou vários switches em redes de produção ativas sem causar interrupções ou quedas de rede
- Economia de tempo - A configuração automatizada de SSH reduziu o tempo de configuração de switches de 15-20 minutos para menos de 2 minutos
- Confiabilidade - Zero incidentes durante implantações de produção em vários dispositivos de rede
- Compatibilidade USB-para-Serial - Testado com adaptadores FTDI FT232R/FT232H, Prolific PL2303, Silicon Labs CP2102/CP2104 e CH340
- Compatibilidade com switches - Validado em switches Cisco Catalyst 2960/3560/3750 e Aruba 2530/2930
A ferramenta provou ser confiável o suficiente para tarefas de gerenciamento de rede em produção, sem exigir um ambiente de laboratório separado para testes.
Pré-requisitos
- Node.js 18 ou superior
- npm ou yarn
- Compatível com Windows, macOS e Linux
Instalação
-
Clone o repositório:
git clone https://github.com/yourusername/mcp-ssh-server.git cd mcp-ssh-server -
Instale as dependências:
npm install -
Compile o projeto:
npm run build -
Instale globalmente (opcional):
npm install -g .
Configuração
Configuração do Claude Desktop
- Abra o Claude Desktop
- Vá em Configurações > Desenvolvedor (ou pressione Ctrl+Shift+D)
- Edite a configuração do MCP
- Adicione a seguinte configuração:
{
"mcpServers": {
"ssh-server": {
"command": "node",
"args": ["/path/to/mcp-ssh-server/build/index.js"],
"env": {
"NODE_NO_WARNINGS": "1"
}
}
}
}
Importante: Substitua /path/to/mcp-ssh-server/build/index.js pelo caminho absoluto para o seu arquivo index.js compilado.
Configuração do VS Code (se estiver usando a extensão MCP)
Crie ou edite .vscode/mcp.json no seu workspace:
{
"mcpServers": {
"ssh-server": {
"command": "node",
"args": ["/path/to/mcp-ssh-server/build/index.js"]
}
}
}
Ferramentas disponíveis
Ferramentas principais de SSH
ssh_connect
Estabelece uma conexão SSH com um servidor remoto.
Parâmetros:
host(obrigatório) - Nome do host ou endereço IPusername(obrigatório) - Nome de usuário SSHpassword(opcional) - Senha SSHprivateKeyPath(opcional) - Caminho para o arquivo de chave privadapassphrase(opcional) - Frase secreta da chave privadaport(opcional) - Porta SSH (padrão: 22)connectionId(opcional) - Identificador exclusivo para esta conexão
Retorna:
success- Booleano indicando sucessoconnectionId- ID a ser usado para comandos subsequentesmessage- Mensagem de status da conexão
Exemplo:
Connect to my server at example.com using username 'admin' and password authentication
ssh_exec
Executa um comando no servidor remoto.
Parâmetros:
connectionId(obrigatório) - ID do ssh_connectcommand(obrigatório) - Comando a ser executadocwd(opcional) - Diretório de trabalhotimeout(opcional) - Timeout do comando em milissegundos (padrão: 60000)
Retorna:
code- Código de saídasignal- Sinal que terminou o processo (se houver)stdout- Saída padrãostderr- Erro padrão
Exemplo:
Run "ls -la /var/www/html" on the server
ssh_upload_file
Envia um arquivo para o servidor remoto.
Parâmetros:
connectionId(obrigatório) - ID do ssh_connectlocalPath(obrigatório) - Caminho do arquivo localremotePath(obrigatório) - Caminho de destino remoto
Retorna:
success- Booleano indicando sucessomessage- Mensagem de status do upload
ssh_download_file
Baixa um arquivo do servidor remoto.
Parâmetros:
connectionId(obrigatório) - ID do ssh_connectremotePath(obrigatório) - Caminho do arquivo remotolocalPath(obrigatório) - Caminho de destino local
Retorna:
success- Booleano indicando sucessomessage- Mensagem de status do download
ssh_list_files
Lista arquivos em um diretório no servidor remoto.
Parâmetros:
connectionId(obrigatório) - ID do ssh_connectremotePath(obrigatório) - Caminho do diretório a ser listado
Retorna:
files- Matriz de objetos de arquivo com propriedades:filename- Nome do arquivoisDirectory- Booleano indicando se é um diretóriosize- Tamanho do arquivolastModified- Horário da última modificação
ssh_disconnect
Fecha uma conexão SSH.
Parâmetros:
connectionId(obrigatório) - ID do ssh_connect
Retorna:
success- Booleano indicando sucessomessage- Mensagem de status da desconexão
Exemplos de uso com o Claude
-
Conecte-se ao seu servidor:
Please connect to my VPS at example.com using username 'admin' and my SSH key at ~/.ssh/id_rsa -
Verifique o status do servidor:
Run the command "systemctl status nginx" to check web server status -
Envie um arquivo do site:
Upload my local file ~/websites/index.html to /var/www/html/index.html on the server -
Liste os arquivos do site:
Show me all files in the /var/www/html directory -
Baixe um backup:
Download the file /var/backups/website-backup.tar.gz to my local Downloads folder -
Desconecte quando terminar:
Please disconnect from the SSH session
Ferramentas de gerenciamento de switches de rede
switch_discover_device
Descobre e identifica o tipo de dispositivo e as capacidades do switch de rede.
Parâmetros:
connectionId(obrigatório) - ID de uma conexão SSH ativaenablePassword(opcional) - Senha de enable para o modo privilegiado
switch_show_interfaces
Mostra o status das interfaces e a configuração no switch de rede.
Parâmetros:
connectionId(obrigatório) - ID de uma conexão SSH ativainterfaceType(opcional) - Tipo de interfaces a mostrarenablePassword(opcional) - Senha de enable para o modo privilegiado
switch_show_vlans
Mostra a configuração e o status das VLANs no switch de rede.
Parâmetros:
connectionId(obrigatório) - ID de uma conexão SSH ativaenablePassword(opcional) - Senha de enable para o modo privilegiado
switch_backup_config
Faz backup da configuração do switch (configuração ativa ou de inicialização).
Parâmetros:
connectionId(obrigatório) - ID de uma conexão SSH ativaconfigType(opcional) - Tipo de configuração para backupenablePassword(opcional) - Senha de enable para o modo privilegiado
switch_network_diagnostics
Executa diagnósticos de rede a partir do switch (ping, traceroute).
Parâmetros:
connectionId(obrigatório) - ID de uma conexão SSH ativatarget(obrigatório) - Endereço IP ou nome de host de destinodiagnosticType(opcional) - Tipo de diagnóstico a executarenablePassword(opcional) - Senha de enable para o modo privilegiado
switch_show_mac_table
Mostra a tabela de endereços MAC no switch de rede.
Parâmetros:
connectionId(obrigatório) - ID de uma conexão SSH ativavlan(opcional) - VLAN específica para mostrar endereços MACenablePassword(opcional) - Senha de enable para o modo privilegiado
Ferramentas de console USB-para-Serial
Essas ferramentas permitem acesso direto ao console de dispositivos de rede usando adaptadores USB-para-Serial. Isso é essencial para a configuração inicial do dispositivo, acesso de emergência quando a conectividade de rede é perdida ou quando o SSH ainda não foi configurado.
Adaptadores USB-para-Serial suportados:
- FTDI FT232R/FT232H (recomendado - mais confiável)
- Prolific PL2303 (amplamente compatível)
- Silicon Labs CP2102/CP2104 (bom desempenho)
- Chipsets CH340/CH341 (opção econômica)
Todos os adaptadores funcionam com cabos de console padrão Cisco/Aruba (RJ45 para DB9 ou USB direto).
serial_list_ports
Lista as portas USB-para-Serial disponíveis no sistema. Detecta automaticamente adaptadores FTDI, Prolific, Silicon Labs e CH340.
Exemplo:
Show me all available serial ports
serial_connect
Conecta a um dispositivo de rede via porta de console USB-para-Serial.
Parâmetros:
port(obrigatório) - Nome da porta serial (ex.: COM3 no Windows, /dev/ttyUSB0 no Linux)baudRate(opcional) - Taxa de transmissão (padrão: 9600 para a maioria dos switches)connectionId(opcional) - Identificador exclusivo para a conexãodeviceType(opcional) - Tipo de dispositivo para configurações ideais (cisco, aruba, generic)
Exemplo:
Connect to my Cisco switch console on COM3
serial_send_command
Envia um comando para o dispositivo de rede via conexão serial.
Parâmetros:
connectionId(obrigatório) - ID de uma conexão serial ativacommand(obrigatório) - Comando a ser enviado ao dispositivowaitForResponse(opcional) - Aguardar resposta do dispositivotimeout(opcional) - Timeout de resposta em milissegundos
Exemplo:
Send "show version" command to the console connection
serial_discover_device
Descobre o tipo de dispositivo e capacidades via conexão serial. Identifica automaticamente dispositivos Cisco IOS, Cisco IOS-XE, Aruba e genéricos.
Parâmetros:
connectionId(obrigatório) - ID de uma conexão serial ativa
Exemplo:
Discover what type of device is connected
serial_list_connections
Lista todas as conexões seriais ativas.
serial_disconnect
Desconecta de uma porta serial.
Parâmetros:
connectionId(obrigatório) - ID de uma conexão serial ativa
Ferramentas de gerenciamento de sites Ubuntu
As seguintes ferramentas de gerenciamento de servidores Ubuntu estão disponíveis:
- ubuntu_nginx_control - Controle do servidor web (start, stop, restart, status, reload, check-config)
- ubuntu_update_packages - Atualizações de pacotes do sistema com opção somente de segurança
- ubuntu_ssl_certificate - Gerenciamento de certificados SSL usando Let's Encrypt (issue, renew, status, list)
- ubuntu_website_deployment - Implantação de sites com backup e restauração automáticos
- ubuntu_ufw_firewall - Gerenciamento de firewall (UFW) (enable, disable, allow, deny, delete)
Ferramentas de configuração e automação SSH
Essas ferramentas automatizam o processo de configurar o acesso SSH em switches de rede via conexão de console, permitindo uma transição suave do gerenciamento somente por console para o baseado em SSH.
switch_generate_ssh_config
Gera um modelo de configuração SSH para um switch de rede com base no tipo de dispositivo e no nível de segurança.
Parâmetros:
deviceType(opcional) - Tipo de dispositivo: cisco, aruba (detectado automaticamente se não especificado)securityLevel(opcional) - Nível de segurança: basic, secure (padrão: basic)hostname(obrigatório) - Nome do host do switchip_address(obrigatório) - Endereço IP de gerenciamentosubnet_mask(opcional) - Máscara de sub-rede (padrão: 255.255.255.0)gateway(obrigatório) - Gateway padrãousername(obrigatório) - Nome de usuário SSHpassword(obrigatório) - Senha SSH
switch_apply_ssh_config
Aplica a configuração SSH a um switch via uma conexão serial de console ativa.
Parâmetros:
serialConnectionId(obrigatório) - ID de uma conexão serial ativadeviceType(opcional) - Tipo de dispositivo: cisco, arubahostname(obrigatório) - Nome do host do switchip_address(obrigatório) - Endereço IP de gerenciamentogateway(obrigatório) - Gateway padrãousername(obrigatório) - Nome de usuário SSHpassword(obrigatório) - Senha SSHconfirmApply(obrigatório) - Deve ser true para prosseguir
switch_verify_ssh_status
Verifica o status atual da configuração SSH em um switch via conexão serial.
Parâmetros:
serialConnectionId(obrigatório) - ID de uma conexão serial ativa
switch_test_ssh_connection
Teste a conectividade SSH com um switch recém-configurado.
Parâmetros:
ip_address(obrigatório) - Endereço IP do switchusername(obrigatório) - Nome de usuário SSHpassword(obrigatório) - Senha SSHport(opcional) - Porta SSH (padrão: 22)
switch_complete_ssh_setup
Fluxo de trabalho completo de configuração SSH de ponta a ponta via conexão de console. Isso automatiza todo o processo de configuração de SSH em um switch.
Parâmetros:
serialConnectionId(obrigatório) - ID de uma conexão serial ativahostname(obrigatório) - Nome do host do switchip_address(obrigatório) - Endereço IP de gerenciamentogateway(obrigatório) - Gateway padrãousername(obrigatório) - Nome de usuário SSHpassword(obrigatório) - Senha SSHconfirmSetup(obrigatório) - Deve ser verdadeiro para prosseguir
Ferramentas de Transição de Console para SSH
console_to_ssh_transition
Fluxo de trabalho automatizado completo para transicionar um switch de rede de acesso somente via console para gerenciamento via SSH. Esta é a ferramenta recomendada para a configuração inicial do switch.
Parâmetros:
port(obrigatório) - Porta serial (por exemplo, COM3, /dev/ttyUSB0)hostname(obrigatório) - Nome do host do switchip_address(obrigatório) - Endereço IP de gerenciamentogateway(obrigatório) - Gateway padrãousername(obrigatório) - Nome de usuário SSHpassword(obrigatório) - Senha SSHdeviceType(opcional) - Tipo de dispositivo: cisco, aruba (detectado automaticamente se não especificado)confirmTransition(obrigatório) - Deve ser verdadeiro para prosseguir
Exemplo:
Set up SSH on my Cisco switch connected to COM3 with hostname "switch-core-01", IP 192.168.1.10, gateway 192.168.1.1, username "admin"
quick_ssh_check
Verificação rápida do status SSH em um switch por meio de conexão serial sem fazer alterações.
Parâmetros:
port(obrigatório) - Porta serialbaudRate(opcional) - Taxa de transmissão (padrão: 9600)enablePassword(opcional) - Senha de habilitação, se necessário
Ferramentas de Gerenciamento de Firmware
Essas ferramentas fornecem recursos abrangentes de gerenciamento de firmware para switches de rede, incluindo verificação de versão, upload de firmware, verificação, instalação e preparação para rollback.
switch_check_firmware
Verificar a versão atual do firmware e as informações do sistema em um switch de rede.
Parâmetros:
connectionId(obrigatório) - ID de uma conexão SSH ativaenablePassword(opcional) - Senha de habilitação para o modo privilegiado
Retornos:
- Versão atual do firmware
- Versão de inicialização (boot)
- Modelo do dispositivo e número de série
- Tempo de atividade do sistema
- Saída completa da versão
switch_check_storage
Verificar o espaço de armazenamento disponível no switch antes do upload do firmware.
Parâmetros:
connectionId(obrigatório) - ID de uma conexão SSH ativaenablePassword(opcional) - Senha de habilitação para o modo privilegiado
Retornos:
- Informações de armazenamento flash
- Espaço disponível
- Detalhes do sistema de arquivos
switch_upload_firmware
Enviar um arquivo de firmware para o switch de rede via SFTP. Suporta arquivos grandes com tempo limite de 30 minutos.
Parâmetros:
connectionId(obrigatório) - ID de uma conexão SSH ativalocalFirmwarePath(obrigatório) - Caminho local para o arquivo de firmwareremotePath(opcional) - Caminho remoto no switch (padrão: flash:/nome_do_arquivo)enablePassword(opcional) - Senha de habilitação para o modo privilegiado
Exemplo:
Upload firmware file ~/downloads/c2960-lanbasek9-mz.150-2.SE11.bin to the switch
switch_verify_firmware
Verificar a integridade do arquivo de firmware enviado no switch usando somas de verificação MD5.
Parâmetros:
connectionId(obrigatório) - ID de uma conexão SSH ativafirmwarePath(obrigatório) - Caminho para o arquivo de firmware no switchenablePassword(opcional) - Senha de habilitação para o modo privilegiado
Retornos:
- Status da verificação
- Resultados da soma de verificação MD5
- Informações do arquivo
switch_install_firmware
Instalar firmware no switch e reiniciar opcionalmente para aplicar a atualização.
Parâmetros:
connectionId(obrigatório) - ID de uma conexão SSH ativafirmwarePath(obrigatório) - Caminho para o arquivo de firmware no switchenablePassword(opcional) - Senha de habilitação para o modo privilegiadoautoReboot(opcional) - Reiniciar automaticamente após a instalação (padrão: falso)
Importante: Isso modifica a configuração de inicialização. Teste em um ambiente de laboratório primeiro!
Exemplo:
Install firmware flash:/c2960-lanbasek9-mz.150-2.SE11.bin and reboot the switch
switch_prepare_rollback
Preparar informações necessárias para o rollback de firmware em caso de problemas com o novo firmware.
Parâmetros:
connectionId(obrigatório) - ID de uma conexão SSH ativaenablePassword(opcional) - Senha de habilitação para o modo privilegiado
Retornos:
- Configuração de inicialização atual
- Imagens de firmware disponíveis
- Instruções de rollback
Configuração de Console USB para Serial
Requisitos de Hardware
Adaptadores USB para Serial:
- Adaptadores baseados em FTDI (FT232R, FT232H) - Melhor escolha para confiabilidade
- Prolific PL2303 - Amplamente disponível e compatível
- Silicon Labs CP2102/CP2104 - Bom desempenho e estabilidade
- CH340/CH341 - Opção econômica, funciona bem na maioria dos sistemas
Cabos de Console:
- Cabo de console Cisco (RJ45 para DB9 ou USB)
- Cabo de console Aruba/HP (RJ45 para DB9 ou USB)
- Cabos de console universais funcionam com a maioria dos dispositivos
Instalação dos Drivers
Windows:
- Drivers FTDI: Normalmente instalados automaticamente, ou baixe em ftdichip.com
- Drivers Prolific: Disponíveis em prolific.com.tw
- Drivers Silicon Labs: Baixe em silabs.com
- Drivers CH340: Normalmente incluídos no Windows 10/11, ou baixados separadamente
macOS:
- Adaptadores FTDI: Normalmente funcionam sem configuração adicional
- Outros adaptadores: Podem exigir instalação de driver do fabricante
Linux:
- A maioria dos adaptadores funciona imediatamente com os drivers do kernel
- FTDI, Silicon Labs, CH340: Integrados ao kernel
- Verifique
dmesgapós conectar o adaptador para confirmar a detecção
Início Rápido com Console
- Conecte o adaptador USB para Serial ao computador
- Conecte o cabo de console do adaptador à porta de console do switch
- Liste as portas disponíveis: "Mostre-me as portas seriais disponíveis"
- Conecte à porta: "Conecte a COM3 para switch Cisco"
- Envie comandos ou execute a configuração automatizada
Notas de Segurança
- Armazene chaves privadas SSH com segurança
- Use autenticação baseada em chave quando possível
- Limite o acesso SSH a endereços IP específicos
- Mantenha seu servidor atualizado
- Use senhas ou frases secretas fortes (mínimo de 8 caracteres)
- Proteja o acesso físico às portas de console e aos adaptadores USB para Serial
- Considere definir variáveis de ambiente em um arquivo
.envpara informações sensíveis
Solução de Problemas
O servidor não inicia
- Verifique se o Node.js está instalado:
node --version - Verifique se todas as dependências estão instaladas:
npm install - Recompile o projeto:
npm run build
Problemas de conexão
- Verifique se o servidor SSH está em execução no destino
- Verifique as configurações do firewall
- Confirme se as credenciais estão corretas
- Teste a conexão SSH manualmente primeiro
Integração com Claude Desktop
- Garanta que o caminho na configuração seja absoluto
- Reinicie o Claude Desktop após alterações na configuração
- Verifique o Console do Desenvolvedor para mensagens de erro
Desenvolvimento
Para modificar ou estender o servidor:
- Edite os arquivos de origem em
src/ - Recompile:
npm run build - Teste suas alterações
- Reinicie o Claude Desktop ou o VS Code para aplicar as alterações
Executando em Modo de Desenvolvimento
Para testes rápidos durante o desenvolvimento:
npm run dev
Contribuição
Contribuições para ferramentas e recursos adicionais são bem-vindas. Sinta-se à vontade para enviar pull requests ou abrir issues para melhorias e correções de bugs.
Licença
Licença MIT