Shell Executor

Ejecuta comandos de shell de forma segura en un servidor remoto.

Documentación

Shell Executor MCP Server

Un servidor de Model Context Protocol (MCP) que proporciona capacidades seguras de ejecución de comandos de shell para agentes de IA y herramientas como VS Code Copilot.

Características

  • Ejecución segura de comandos: Filtrado de comandos basado en lista blanca
  • Conjunto completo de herramientas: Soporte para operaciones de archivos, procesamiento de texto, herramientas de desarrollo y utilidades del sistema
  • Compatible con MCP: Soporte completo de Model Context Protocol
  • Integración fácil: Interfaz JSON-RPC simple sobre stdio

Instalación

Opción 1: Uso directo

git clone https://github.com/yourusername/shell-executor-mcp.git
cd shell-executor-mcp
pip install -e .

Opción 2: Instalar desde PyPI (cuando se publique)

pip install shell-executor-mcp

Integración con VS Code

1. Configuración global

Añade a tu settings.json de VS Code o a la configuración de MCP:

{
  "mcpServers": {
    "shell-executor": {
      "command": "python",
      "args": ["/path/to/shell-executor-mcp/src/mcp_server.py"],
      "env": {
        "MCP_API_TOKEN": "your-secret-token"
      }
    }
  }
}

2. Configuración del espacio de trabajo

Crea .vscode/mcp_servers.json en tu espacio de trabajo:

{
  "shell-executor": {
    "command": "python",
    "args": ["${workspaceFolder}/path/to/mcp_server.py"],
    "env": {
      "MCP_API_TOKEN": "your-secret-token"
    }
  }
}

3. Uso con VS Code Copilot

Una vez configurado, Copilot puede descubrir y usar el ejecutor de shell a través de MCP:

@shell-executor execute ls -la
@shell-executor execute git status
@shell-executor execute cargo build

Pruebas manuales

Inicia el servidor:

python src/mcp_server.py

Envía solicitudes de prueba:

  1. Inicializar:
{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "test", "version": "1.0.0"}}}
  1. Listar herramientas:
{"jsonrpc": "2.0", "id": 2, "method": "tools/list", "params": {}}
  1. Ejecutar comando:
{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "execute_command", "arguments": {"command": "echo", "args": ["Hello World"]}}}

Comandos compatibles

Sistema de archivos

  • ls, cat, head, tail, find, tree, wc, du, df
  • file, stat, pwd

Procesamiento de texto

  • grep, sed, awk, sort, uniq, cut, tr

Desarrollo

  • git, npm, yarn, pip, python, node, cargo, make
  • rustc, go, java, javac

Información del sistema

  • ps, uptime, whoami, id, uname, which

Red

  • curl, wget, ping, dig, nslookup

Archivos

  • tar, zip, unzip, gzip, gunzip

Utilidades

  • echo, date, cal, bc, expr, basename, dirname
  • Herramientas de hash: md5, sha256sum, shasum

Seguridad

  • Los comandos se filtran a través de una lista blanca
  • Tiempo de espera de ejecución de 30 segundos
  • No se permiten operaciones destructivas (rm, mv, cp)
  • No se permite la escalada de privilegios (sudo, su)
  • Las variables de entorno se pueden controlar

Configuración

Establece variables de entorno:

  • MCP_API_TOKEN: Token de autenticación (por defecto: "MYSECRET")

Licencia

Licencia MIT - consulta el archivo LICENSE para más detalles.