cli-mcp-server

by MladenSU
Verified

local-only server

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

Integrations

  • Allows execution of whitelisted shell commands with comprehensive security features including command and flag whitelisting, path validation, and protection against injection attacks.

Servidor CLI MCP


Una implementación de servidor de Protocolo de contexto de modelo (MCP) seguro para ejecutar operaciones de línea de comandos controladas con funciones de seguridad integrales.


Tabla de contenido

  1. Descripción general
  2. Características
  3. Configuración
  4. Herramientas disponibles
  5. Uso con Claude Desktop
  6. Características de seguridad
  7. Manejo de errores
  8. Desarrollo
  9. Licencia

Descripción general

Este servidor MCP permite la ejecución segura de la línea de comandos con sólidas medidas de seguridad, como la creación de listas blancas de comandos, la validación de rutas y los controles de ejecución. Es perfecto para proporcionar acceso CLI controlado a aplicaciones LLM, manteniendo la seguridad.

Características

  • 🔒 Ejecución segura de comandos con validación estricta
  • ⚙️ Lista blanca de comandos y banderas configurables con opción "todos"
  • 🛡️ Prevención y validación de recorridos de ruta
  • Protección contra inyecciones del operador de Shell
  • ⏱️ Tiempos de espera de ejecución y límites de longitud
  • 📝 Informe detallado de errores
  • 🔄 Soporte para operaciones asíncronas
  • 🎯 Restricción y validación del directorio de trabajo

Configuración

Configurar el servidor usando variables de entorno:

VariableDescripciónPor defecto
ALLOWED_DIRDirectorio base para la ejecución de comandos (obligatorio)Ninguno (obligatorio)
ALLOWED_COMMANDSLista separada por comas de comandos permitidos o 'todos'ls,cat,pwd
ALLOWED_FLAGSLista separada por comas de banderas permitidas o 'todas'-l,-a,--help
MAX_COMMAND_LENGTHLongitud máxima de la cadena de comandos1024
COMMAND_TIMEOUTTiempo de espera de ejecución del comando (segundos)30
ALLOW_SHELL_OPERATORSPermitir operadores de shell (&&,

Nota: Establecer ALLOWED_COMMANDS o ALLOWED_FLAGS en 'all' permitirá cualquier comando o bandera respectivamente.

Instalación

Para instalar CLI MCP Server para Claude Desktop automáticamente a través de Smithery :

npx @smithery/cli install cli-mcp-server --client claude

Herramientas disponibles

comando_ejecutar

Ejecuta comandos CLI incluidos en la lista blanca dentro de directorios permitidos.

Esquema de entrada:

{ "command": { "type": "string", "description": "Single command to execute (e.g., 'ls -l' or 'cat file.txt')" } }

Notas de seguridad:

  • Los operadores de shell (&&, |, >, >>) no son compatibles de forma predeterminada, pero se pueden habilitar con ALLOW_SHELL_OPERATORS=true
  • Los comandos deben estar en la lista blanca a menos que ALLOWED_COMMANDS='all'
  • Las banderas deben estar en la lista blanca a menos que ALLOWED_FLAGS='all'
  • Se validan todas las rutas para que estén dentro de ALLOWED_DIR

mostrar_reglas_de_seguridad

Muestra la configuración de seguridad actual y las restricciones, incluidas:

  • Directorio de trabajo
  • Comandos permitidos
  • Banderas permitidas
  • Límites de seguridad (longitud máxima del comando y tiempo de espera)

Uso con Claude Desktop

Agregue a su ~/Library/Application\ Support/Claude/claude_desktop_config.json :

Configuración de servidores no publicados/desarrollo

{ "mcpServers": { "cli-mcp-server": { "command": "uv", "args": [ "--directory", "<path/to/the/repo>/cli-mcp-server", "run", "cli-mcp-server" ], "env": { "ALLOWED_DIR": "</your/desired/dir>", "ALLOWED_COMMANDS": "ls,cat,pwd,echo", "ALLOWED_FLAGS": "-l,-a,--help,--version", "MAX_COMMAND_LENGTH": "1024", "COMMAND_TIMEOUT": "30", "ALLOW_SHELL_OPERATORS": "false" } } } }

Configuración de servidores publicados

{ "mcpServers": { "cli-mcp-server": { "command": "uvx", "args": [ "cli-mcp-server" ], "env": { "ALLOWED_DIR": "</your/desired/dir>", "ALLOWED_COMMANDS": "ls,cat,pwd,echo", "ALLOWED_FLAGS": "-l,-a,--help,--version", "MAX_COMMAND_LENGTH": "1024", "COMMAND_TIMEOUT": "30", "ALLOW_SHELL_OPERATORS": "false" } } } }

En caso de que no funcione o no se muestre en la interfaz de usuario, borre su caché mediante uv clean .

Características de seguridad

  • ✅ Implementación de la lista blanca de comandos con la opción "todos"
  • ✅ Validación de bandera con opción 'todas'
  • ✅ Prevención y normalización de recorridos de ruta
  • ✅ Bloqueo del operador de Shell (con soporte opt-in a través de ALLOW_SHELL_OPERATORS=true )
  • ✅ Límites de longitud de comandos
  • ✅ Tiempos de espera de ejecución
  • ✅ Restricciones del directorio de trabajo
  • ✅ Resolución y validación de enlaces simbólicos

Manejo de errores

El servidor proporciona mensajes de error detallados para:

  • Violaciones de seguridad (CommandSecurityError)
  • Tiempos de espera de comandos (CommandTimeoutError)
  • Formatos de comando no válidos
  • Violaciones de seguridad de ruta
  • Errores de ejecución (CommandExecutionError)
  • Errores de comando generales (CommandError)

Desarrollo

Prerrequisitos

  • Python 3.10+
  • Biblioteca de protocolos MCP

Construcción y publicación

Para preparar el paquete para su distribución:

  1. Sincronizar dependencias y actualizar el archivo de bloqueo:
    uv sync
  2. Distribuciones de paquetes de compilación:
    uv build

    Esto creará distribuciones de origen y de rueda en el directorio dist/ .

  3. Publicar en PyPI:
    uv publish --token {{YOUR_PYPI_API_TOKEN}}

Depuración

Dado que los servidores MCP se ejecutan en stdio, la depuración puede ser complicada. Para una experiencia óptima, recomendamos usar el Inspector MCP .

Puede iniciar el Inspector MCP a través de npm con este comando:

npx @modelcontextprotocol/inspector uv --directory {{your source code local directory}}/cli-mcp-server run cli-mcp-server

Al iniciarse, el Inspector mostrará una URL a la que podrá acceder en su navegador para comenzar a depurar.

Licencia

Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.


Para obtener más información o ayuda, abra un problema en el repositorio del proyecto.

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Interfaz de línea de comandos con ejecución segura y políticas de seguridad personalizables

  1. Table of Contents
    1. Overview
    2. Features
    3. Configuration
    4. Installation
    5. Available Tools
    6. Usage with Claude Desktop
    7. Security Features
    8. Error Handling
    9. Development
    10. License
ID: q89277vzl1