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:
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.
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.
Related MCP server: Lilith Shell
Características principales
Seguridad | Usabilidad | Integración |
Lista blanca de directorios | Categorización de comandos (lectura/escritura/sistema) | Compatibilidad con Claude Desktop |
Filtrado de comandos | Permisos de sesión persistentes | Protocolo MCP estándar |
Coincidencia de patrones | Encadenamiento de comandos (tuberías, etc.) | Opciones de aprobación automática |
Bloqueo de comandos peligroso | Flujo de trabajo de aprobación intuitivo | Mú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 configOpciones de configuración
El servidor admite cuatro métodos de configuración en orden de precedencia:
Configuración predeterminada incorporada (default_config.json)
Archivo de configuración JSON (recomendado para personalización)
cmd-line-mcp --config config.jsonVariables de entorno (para modificaciones específicas)
export CMD_LINE_MCP_SECURITY_WHITELISTED_DIRECTORIES="~,/tmp"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
Instalar Claude para escritorio
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ónauto_approve_directories_in_desktop_mode: true- Opcional para un acceso convenienteIncluya 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:
Herramienta | Objetivo | Necesita aprobación |
| Ejecutar cualquier tipo de comando | Sí, para comandos de escritura/sistema |
| Ejecutar comandos de solo lectura | Sólo aprobación del directorio |
| Otorgar acceso a un directorio | N/A - es una herramienta de aprobación |
| Otorgar permiso para la categoría de comando | N/A - es una herramienta de aprobación |
| Mostrar directorios autorizados | No |
| Mostrar categorías de comandos | No |
| Obtenga orientación sobre el uso de comandos | No |
| Ver la configuración actual | No |
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:
Modo | Descripción | Mejor para | Configuración |
Estricto | Solo se permiten directorios incluidos en la lista blanca | Máxima seguridad |
|
Aprobación | Los directorios no incluidos en la lista blanca requieren aprobación explícita | Uso interactivo | Comportamiento predeterminado para clientes estándar |
Aprobación automática | Aprueba automáticamente directorios para Claude Desktop | Conveniencia |
|
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
Se solicita el comando en un directorio
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
Después de la aprobación, el directorio permanece aprobado durante toda la sesión.
Compatibilidad con formatos de ruta
Rutas absolutas:
/home/user/documentsDirectorio 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ía | Descripción | Comandos de ejemplo | Requiere aprobación |
Leer | Operaciones seguras | ls, gato, encontrar | No |
Escribir | Modificación de datos | mkdir, rm, tocar | Sí |
Sistema | Operaciones del sistema | ps, ping, ifconfig | Sí |
Obstruido | Órdenes peligrosas | sudo, bash, eval | Siempre 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étodo | Símbolo | Ejemplo | Configuración | ||
Tubería | ` | ` | `ls | grep txt` |
|
Secuencia |
|
|
| ||
Fondo |
|
|
|
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)