SSH Rails Runner

Execute comandos do console Rails remotamente e com segurança via SSH.

Documentação

MCP Server: SSH Rails Runner

Um servidor MCP que permite a execução remota segura de comandos do console Rails via SSH. Este servidor fornece ferramentas para operações somente leitura e mutações cuidadosamente gerenciadas em um ambiente Rails implantado.

Funciona muito bem com o Cursor. Você pode usar o Cursor Composer para trazer seus arquivos de modelo Rails como contexto e, em seguida, usar as ferramentas execute_read_only, dry_run_mutate e execute_mutate para fazer alterações no banco de dados. Não é preciso enfrentar interfaces de administração complicadas para realizar suas manipulações e análises de dados.

Exemplo

Example

Recursos

  • Execução remota do console Rails via SSH
  • Operações seguras somente leitura
  • Capacidade de simulação (dry-run) para mutações
  • Execução de mutações aprovadas
  • Gerenciamento de recursos para trechos de código

Instalação

npm install
npm run build

Configuração

Defina as seguintes variáveis de ambiente:

SSH_HOST=your.remote.host
SSH_USER=your_ssh_user
SSH_PRIVATE_KEY_PATH=your_SSH_PRIVATE_KEY_PATH
RAILS_WORKING_DIR=/path/to/rails/app

Uso com o Claude Desktop

Adicione à sua configuração do Claude Desktop:

{
  "mcpServers": {
    "ssh-rails-runner": {
      "command": "npx",
      "args": ["mcp-server-ssh-rails-runner"],
      "env": {
        "SSH_HOST": "your.remote.host",
        "SSH_USER": "your_ssh_user",
        "SSH_PRIVATE_KEY_PATH": "your_SSH_PRIVATE_KEY_PATH",
        "RAILS_WORKING_DIR": "/path/to/rails/app/root",
        "PROJECT_NAME_AS_CONTEXT": "Name that shows up in tool descriptions to help the LLM describe what kind of Rails project we're working with.",
        "CODE_SNIPPET_FILE_DIRECTORY": "/path/to/store/code/snippets/locally"
      }
    }
  }
}

Se CODE_SNIPPET_FILE_DIRECTORY não for fornecido, os trechos serão armazenados em um diretório temporário (por exemplo, /tmp/mcp-ssh-rails-runner-code-snippets). PROJECT_NAME_AS_CONTEXT é opcional e ajuda a identificar o contexto do projeto nas descrições das ferramentas.

Ferramentas Disponíveis

O servidor agora usa um fluxo de trabalho Preparar -> Executar:

mcp_ssh_rails_runner_prepare_code_snippet

  • Argumentos: name (string, para nome de arquivo), type (enum: "readOnly" | "mutate"), code (string, código Ruby), description (string, opcional).
  • Função: Salva o código Ruby fornecido em um arquivo local chamado code_snippet_<name>.json, marca-o como somente leitura ou mutação e abre o arquivo para revisão.
  • Retorna: O URI file:// do trecho criado.

mcp_ssh_rails_runner_execute_code_snippet_read_only

  • Argumentos: uri (string, URI file:// de prepareCodeSnippet).
  • Função: Lê o trecho de código do URI, verifica se está marcado como readOnly, realiza uma verificação de segurança no código e o executa.
  • Retorna: A saída do comando Rails.

mcp_ssh_rails_runner_execute_code_snippet_mutate

  • Argumentos: uri (string, URI file:// de prepareCodeSnippet).
  • Função: ZONA DE PERIGO! Lê o trecho de código, verifica se está marcado como mutate e o executa diretamente. Não há simulação (dry-run) nem verificação de segurança adicional nesta ferramenta.
  • Retorna: A saída do comando Rails.
  • Uso: SOMENTE CHAME ESTA FERRAMENTA APÓS O USUÁRIO TER REVISADO o código preparado (por meio do arquivo aberto de prepareCodeSnippet) E CONFIRMADO EXPLICITAMENTE que deseja executar a mutação.

Considerações de Segurança

  • Use somente com endpoints SSH confiáveis da sua própria máquina local que tenha (temporariamente) acesso ao ambiente remoto.
  • Fundamentalmente, sempre revise o código salvo por prepareCodeSnippet antes de executar qualquer mutação com executeCodeSnippetMutate. A responsabilidade por confirmar mutações cabe ao usuário e à IA chamadora.

Licença

MIT