Command-Line MCP Server

by andresthor
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Supports .env file configuration for environment-specific settings of the MCP server

Servidor MCP de línea de comandos

Un servidor de Protocolo de Control de Modelos (MCP) seguro que permite a los asistentes de IA ejecutar comandos de terminal con acceso a directorios y permisos de comando controlados.

Descripción general

El MCP de línea de comandos proporciona una capa de seguridad entre los asistentes de IA y su terminal. Implementa un modelo de seguridad dual:

  1. Permisos de comando : Los comandos se clasifican como lectura (seguro), escritura (cambia datos) o sistema (afecta el estado del sistema), con diferentes requisitos de aprobación.
  2. Permisos de directorio : los comandos solo pueden acceder a directorios incluidos explícitamente en la lista blanca o directorios aprobados durante una sesión

Los asistentes de IA interactúan con este servidor mediante herramientas MCP estandarizadas, lo que permite la ejecución segura de comandos de terminal y evita el acceso a archivos confidenciales o a operaciones peligrosas. Puede configurar el nivel de seguridad, desde altamente restrictivo hasta más permisivo, según sus necesidades.

Características principales

SeguridadUsabilidadIntegración
Lista blanca de directoriosCategorización de comandos (lectura/escritura/sistema)Compatibilidad con Claude Desktop
Filtrado de comandosPermisos de sesión persistentesProtocolo MCP estándar
Coincidencia de patronesEncadenamiento de comandos (tuberías, etc.)Opciones de aprobación automática
Bloqueo de comandos peligrosoFlujo de trabajo de aprobación intuitivoMúltiples métodos de configuración

Comandos compatibles (listos para usar)

Comandos de lectura

  • ls , pwd , cat , less , head , tail , grep , find , which , du , df , file , sort , etc.

Comandos de escritura

  • cp , mv , rm , mkdir , rmdir , touch , chmod , chown , etc.

Comandos del sistema

  • ps , top , htop , who , netstat , ifconfig , ping , etc.

Arquitectura de seguridad

El sistema implementa un enfoque de seguridad de múltiples capas:

┌───────────────────────────────────────────────────────────────┐ │ COMMAND-LINE MCP SERVER │ ├──────────────────┬────────────────────────┬───────────────────┤ │ COMMAND SECURITY │ DIRECTORY SECURITY │ SESSION SECURITY │ ├──────────────────┼────────────────────────┼───────────────────┤ │ ✓ Read commands │ ✓ Directory whitelist │ ✓ Session IDs │ │ ✓ Write commands │ ✓ Runtime approvals │ ✓ Persistent │ │ ✓ System commands│ ✓ Path validation │ permissions │ │ ✓ Blocked list │ ✓ Home dir expansion │ ✓ Auto timeouts │ │ ✓ Pattern filters│ ✓ Subdirectory check │ ✓ Desktop mode │ └──────────────────┴────────────────────────┴───────────────────┘

Todas las funciones de seguridad se pueden configurar de restrictivas a permisivas según su modelo de amenaza y sus requisitos de conveniencia.

Inicio rápido

# Install git clone https://github.com/yourusername/cmd-line-mcp.git cd cmd-line-mcp python -m venv venv source venv/bin/activate pip install -e . cp config.json.example config.json # Run cmd-line-mcp # With default config cmd-line-mcp --config config.json # With specific config

Opciones de configuración

El servidor admite cuatro métodos de configuración en orden de precedencia:

  1. Configuración predeterminada incorporada (default_config.json)
  2. Archivo de configuración JSON (recomendado para personalización)
    cmd-line-mcp --config config.json
  3. Variables de entorno (para modificaciones específicas)
    export CMD_LINE_MCP_SECURITY_WHITELISTED_DIRECTORIES="~,/tmp"
  4. Archivo .env (para configuraciones específicas del entorno)
    cmd-line-mcp --config config.json --env .env

La configuración predeterminada se almacena en default_config.json y se incluye en el paquete. Puedes copiar este archivo para crear tu propia configuración personalizada.

Configuración básica

{ "security": { "whitelisted_directories": ["/home", "/tmp", "~"], "auto_approve_directories_in_desktop_mode": false, "require_session_id": false, "allow_command_separators": true }, "commands": { "read": ["ls", "cat", "grep"], "write": ["touch", "mkdir", "rm"], "system": ["ps", "ping"] } }

Formato de variable de entorno

Las variables de entorno utilizan un patrón de nombres predecible:

CMD_LINE_MCP_<SECTION>_<SETTING>

Ejemplos:

# Security settings export CMD_LINE_MCP_SECURITY_WHITELISTED_DIRECTORIES="/projects,/var/data" export CMD_LINE_MCP_SECURITY_AUTO_APPROVE_DIRECTORIES_IN_DESKTOP_MODE=true # Command additions (these merge with defaults) export CMD_LINE_MCP_COMMANDS_READ="awk,jq,wc"

Integración de escritorio de Claude

Configuración

  1. Instalar Claude para escritorio
  2. Configurar en ~/Library/Application Support/Claude/claude_desktop_config.json :
{ "mcpServers": { "cmd-line": { "command": "/path/to/venv/bin/cmd-line-mcp", "args": ["--config", "/path/to/config.json"], "env": { "CMD_LINE_MCP_SECURITY_REQUIRE_SESSION_ID": "false", "CMD_LINE_MCP_SECURITY_AUTO_APPROVE_DIRECTORIES_IN_DESKTOP_MODE": "true" } } } }

Configuración recomendada de escritorio de Claude

Para una mejor experiencia, configure:

  • require_session_id: false - Esencial para evitar bucles de aprobación
  • auto_approve_directories_in_desktop_mode: true - Opcional para un acceso conveniente
  • Incluya directorios comunes en su lista blanca

Después de la configuración, reinicie Claude for Desktop.

Herramientas de asistencia de IA

El servidor proporciona estas herramientas MCP para asistentes de IA:

HerramientaObjetivoNecesita aprobación
execute_commandEjecutar cualquier tipo de comandoSí, para comandos de escritura/sistema
execute_read_commandEjecutar comandos de solo lecturaSólo aprobación del directorio
approve_directoryOtorgar acceso a un directorioN/A - es una herramienta de aprobación
approve_command_typeOtorgar permiso para la categoría de comandoN/A - es una herramienta de aprobación
list_directoriesMostrar directorios autorizadosNo
list_available_commandsMostrar categorías de comandosNo
get_command_helpObtenga orientación sobre el uso de comandosNo
get_configurationVer la configuración actualNo

Ejemplos de herramientas

Gestión de directorios

# Check available directories dirs = await list_directories(session_id="session123") whitelisted = dirs["whitelisted_directories"] approved = dirs["session_approved_directories"] # Request permission for a directory if "/projects/my-data" not in whitelisted and "/projects/my-data" not in approved: result = await approve_directory( directory="/projects/my-data", session_id="session123" )

Ejecución de comandos

# Read commands (read permissions enforced) result = await execute_read_command("ls -la ~/Documents") # Any command type (may require command type approval) result = await execute_command( command="mkdir -p ~/Projects/new-folder", session_id="session123" )

Obtener configuración

# Check current settings config = await get_configuration() whitelist = config["directory_whitelisting"]["whitelisted_directories"]

Sistema de seguridad de directorios

El servidor restringe la ejecución de comandos a directorios específicos, evitando el acceso a archivos confidenciales.

Modos de seguridad de directorio

El sistema admite tres modos de seguridad:

ModoDescripciónMejor paraConfiguración
EstrictoSolo se permiten directorios incluidos en la lista blancaMáxima seguridadauto_approve_directories_in_desktop_mode: false
AprobaciónLos directorios no incluidos en la lista blanca requieren aprobación explícitaUso interactivoComportamiento predeterminado para clientes estándar
Aprobación automáticaAprueba automáticamente directorios para Claude DesktopConvenienciaauto_approve_directories_in_desktop_mode: true

Configuración de directorio en lista blanca

"security": { "whitelisted_directories": [ "/home", // System directories "/tmp", "~", // User's home "~/Documents" // Common user directories ], "auto_approve_directories_in_desktop_mode": false // Set to true for convenience }

Flujo de aprobación del directorio

  1. Se solicita el comando en un directorio
  2. Comprobaciones del sistema:
    • ¿Está el directorio en la lista blanca global? → Permitir
    • ¿Se ha aprobado el directorio en esta sesión? → Permitir
    • ¿Ninguno? → Solicitar aprobación
  3. Después de la aprobación, el directorio permanece aprobado durante toda la sesión.

Compatibilidad con formatos de ruta

  • Rutas absolutas: /home/user/documents
  • Directorio de inicio: ~ (se expande al inicio del usuario)
  • Subdirectorios de usuario: ~/Downloads

Integración de escritorio de Claude

El servidor mantiene una sesión persistente para Claude Desktop, lo que garantiza que las aprobaciones de directorio persistan entre solicitudes y evita bucles de aprobación.

Personalización de comandos

El sistema utiliza la categorización de comandos para controlar el acceso:

CategoríaDescripciónComandos de ejemploRequiere aprobación
LeerOperaciones segurasls, gato, encontrarNo
EscribirModificación de datosmkdir, rm, tocar
SistemaOperaciones del sistemaps, ping, ifconfig
ObstruidoÓrdenes peligrosassudo, bash, evalSiempre negado

Métodos de personalización

// In config.json { "commands": { "read": ["ls", "cat", "grep", "awk", "jq"], "write": ["mkdir", "touch", "rm"], "system": ["ping", "ifconfig", "kubectl"], "blocked": ["sudo", "bash", "eval"] } }

Método de variable de entorno:

# Add to existing lists, not replace (comma-separated) export CMD_LINE_MCP_COMMANDS_READ="awk,jq" export CMD_LINE_MCP_COMMANDS_BLOCKED="npm,pip"

El servidor MCP fusiona estas adiciones con comandos existentes, lo que le permite ampliar la funcionalidad sin tener que recrear listas de comandos completas.

Encadenamiento de comandos

El servidor admite tres métodos de encadenamiento de comandos:

MétodoSímboloEjemploConfiguración
Tubería```lsgrep txt`allow_command_separators: true
Secuencia;mkdir dir; cd dirallow_command_separators: true
Fondo&find . -name "*.log" &allow_command_separators: true

Todos los comandos de una cadena deben pertenecer a la lista de comandos compatibles. Las comprobaciones de seguridad se aplican a toda la cadena.

Configuración rápida:

"security": { "allow_command_separators": true // Set to false to disable all chaining }

Para deshabilitar separadores específicos, agréguelos a la lista dangerous_patterns .

Licencia

Instituto Tecnológico de Massachusetts (MIT)

ID: s6abb0eqxm