SSH Rails Runner

Ejecuta comandos de la consola de Rails de forma remota y segura a través de SSH.

Documentación

Servidor MCP: SSH Rails Runner

Un servidor MCP que permite la ejecución remota segura de comandos de la consola de Rails a través de SSH. Este servidor proporciona herramientas tanto para operaciones de solo lectura como para mutaciones cuidadosamente gestionadas en un entorno Rails desplegado.

Funciona muy bien con Cursor. Puedes usar Cursor Composer para incorporar tus archivos de modelos de Rails como contexto y luego usar las herramientas execute_read_only, dry_run_mutate y execute_mutate para realizar cambios en la base de datos. No es necesario lidiar con interfaces de administración complicadas para realizar tu manipulación y análisis de datos.

Ejemplo

Example

Características

  • Ejecución remota de la consola de Rails a través de SSH
  • Operaciones seguras de solo lectura
  • Capacidad de ejecución de prueba (dry-run) para mutaciones
  • Ejecución de mutaciones aprobadas
  • Gestión de recursos para fragmentos de código

Instalación

npm install
npm run build

Configuración

Configura las siguientes variables de entorno:

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 con Claude Desktop

Añade a tu configuración de 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"
      }
    }
  }
}

Si no se proporciona CODE_SNIPPET_FILE_DIRECTORY, los fragmentos se almacenarán en un directorio temporal (por ejemplo, /tmp/mcp-ssh-rails-runner-code-snippets). PROJECT_NAME_AS_CONTEXT es opcional y ayuda a identificar el contexto del proyecto en las descripciones de las herramientas.

Herramientas disponibles

El servidor ahora utiliza un flujo de trabajo Preparar -> Ejecutar:

mcp_ssh_rails_runner_prepare_code_snippet

  • Argumentos: name (cadena, para el nombre del archivo), type (enumeración: "readOnly" | "mutate"), code (cadena, código Ruby), description (cadena, opcional).
  • Función: Guarda el código Ruby proporcionado en un archivo local llamado code_snippet_<name>.json, lo marca como de solo lectura o mutación, y abre el archivo para su revisión.
  • Devuelve: El URI file:// del fragmento creado.

mcp_ssh_rails_runner_execute_code_snippet_read_only

  • Argumentos: uri (cadena, URI file:// de prepareCodeSnippet).
  • Función: Lee el fragmento de código desde el URI, verifica que esté marcado como readOnly, realiza una comprobación de seguridad del código y lo ejecuta.
  • Devuelve: La salida del comando de Rails.

mcp_ssh_rails_runner_execute_code_snippet_mutate

  • Argumentos: uri (cadena, URI file:// de prepareCodeSnippet).
  • Función: ¡ZONA DE PELIGRO! Lee el fragmento de código, verifica que esté marcado como mutate y lo ejecuta directamente. No hay ejecución de prueba ni comprobación de seguridad adicional dentro de esta herramienta.
  • Devuelve: La salida del comando de Rails.
  • Uso: SOLO LLAMA A ESTO DESPUÉS DE QUE EL USUARIO HAYA REVISADO el código preparado (a través del archivo abierto de prepareCodeSnippet) Y HAYA CONFIRMADO EXPLÍCITAMENTE que quiere ejecutar la mutación.

Consideraciones de seguridad

  • Úsalo solo con endpoints SSH de confianza desde tu propia máquina local que tenga (temporalmente) acceso al entorno remoto.
  • Fundamentalmente, revisa siempre el código guardado por prepareCodeSnippet antes de ejecutar cualquier mutación con executeCodeSnippetMutate. La responsabilidad de confirmar las mutaciones recae en el usuario y en la IA que realiza la llamada.

Licencia

MIT