Bash MCP

Ejecutar comandos de shell sin solicitudes de permiso.

Documentación

bash-mcp

Un servidor MCP (Model Context Protocol) simple que permite a Claude ejecutar comandos de shell sin solicitudes de permiso.

⚠️ Advertencia de seguridad: Este servidor ejecuta comandos de shell arbitrarios. Úsalo con precaución y solo en entornos de confianza.

Instalación

# Install globally
npm install -g bash-mcp

# Or use with npx
npx bash-mcp

Inicio rápido

Para Claude Desktop

Añade a tu claude_desktop_config.json:

{
  "mcpServers": {
    "bash": {
      "command": "npx",
      "args": ["bash-mcp"]
    }
  }
}

Para Claude Code (Cursor, VS Code)

  1. Abre la paleta de comandos (Cmd/Ctrl + Shift + P)
  2. Ejecuta "MCP: Add Server"
  3. Selecciona "NPM" como tipo de servidor
  4. Introduce: bash-mcp

Herramientas disponibles

run - Ejecutar un comando

// Simple command
run("ls -la")

// With working directory
run("npm test", { cwd: "/path/to/project" })

// With timeout (milliseconds)
run("long-running-command", { timeout: 60000 })

run_background - Iniciar un proceso en segundo plano

// Start a dev server
run_background("npm run dev", "frontend")

// Start backend service with working directory
run_background("./gradlew bootRun", "backend", { cwd: "./backend" })

kill_background - Detener un proceso en segundo plano

kill_background("frontend")

list_background - Listar todos los procesos en segundo plano

list_background()

Ejemplo de uso

User: Start the development servers
Assistant: I'll start both frontend and backend servers for you.

[Uses run_background tool]
Started frontend server (PID: 12345)
Started backend server (PID: 12346)

User: Check if they're running
Assistant: [Uses list_background tool]
Both servers are running successfully!

Formato de respuesta

Todas las herramientas devuelven respuestas en formato JSON:

{
  "success": true,
  "stdout": "command output",
  "stderr": "error output if any",
  "command": "executed command"
}

Para procesos en segundo plano:

{
  "success": true,
  "name": "frontend",
  "pid": 12345,
  "command": "npm run dev",
  "message": "Started background process 'frontend' (PID: 12345)"
}

Características

  • Ejecutar cualquier comando de shell sin solicitudes de permiso
  • Ejecutar procesos de larga duración en segundo plano
  • Gestionar procesos en segundo plano (listar, matar)
  • Capturar stdout y stderr
  • Establecer directorio de trabajo para comandos
  • Configurar tiempo de espera para comandos
  • Limpieza automática al apagar el servidor
  • NUEVO: Truncamiento automático de salida con salida completa guardada en archivos temporales
  • NUEVO: Límites de tamaño de salida configurables y directorio temporal mediante variables de entorno

Variables de entorno

  • BASH_MCP_MAX_OUTPUT_SIZE: Tamaño máximo de salida en bytes antes del truncamiento (por defecto: 51200/50KB)
  • BASH_MCP_TEMP_DIR: Directorio para almacenar la salida completa cuando se trunca (por defecto: directorio temporal del sistema)

Ejemplo de configuración

{
  "mcpServers": {
    "bash": {
      "command": "npx",
      "args": ["bash-mcp"],
      "env": {
        "BASH_MCP_MAX_OUTPUT_SIZE": "102400",
        "BASH_MCP_TEMP_DIR": "/tmp/bash-mcp-outputs"
      }
    }
  }
}

Manejo de desbordamiento de salida

Cuando la salida del comando excede BASH_MCP_MAX_OUTPUT_SIZE:

  1. La salida se trunca al límite especificado
  2. La salida completa se guarda en un archivo temporal
  3. La respuesta incluye la ruta del archivo donde se puede encontrar la salida completa
  4. Si el directorio temporal personalizado falla, se recurre al directorio temporal del sistema

Consideraciones de seguridad

Este servidor MCP ejecuta comandos de shell arbitrarios con los mismos privilegios que el proceso de Node.js. Úsalo solo en entornos de desarrollo o contextos de confianza.

Requisitos

  • Node.js >= 16.0.0
  • npm o npx

Licencia

MIT

Autor

tinywind tinywind0@gmail.com

Contribuciones

Las incidencias y solicitudes de extracción son bienvenidas en GitHub.