Super Windows CLI MCP Server

Servidor MCP de Super Windows CLI

Una bifurcación mejorada del servidor MCP de Windows CLI que proporciona acceso sin restricciones al sistema de entornos Windows a través de una interfaz de línea de comandos (MCP).

Basado en: win-cli-mcp-server por SimonB97.


⚠️ ADVERTENCIA DE SEGURIDAD CRÍTICA ⚠️

Este servidor está diseñado para ejecutarse con privilegios de sistema en Windows. Esto le otorga acceso completo y sin restricciones a todo el sistema operativo, incluyendo todos los archivos, procesos y configuraciones.

  • NO instale ni ejecute este servidor a menos que comprenda completamente las implicaciones de otorgar acceso a nivel de SISTEMA.
  • Utilice este servidor SÓLO en entornos de alta confianza donde tenga control total sobre el acceso a la red.
  • LA SEGURIDAD DE LA RED ES PRINCIPAL: dado que las restricciones a nivel de aplicación son mínimas por diseño, confíe en gran medida en firewalls, segmentación de red y listas de control de acceso estrictas (ACL) para proteger la máquina que ejecuta este servidor.
  • REVISE LA CONFIGURACIÓN CUIDADOSAMENTE: Preste mucha atención a allowedPaths , blockedCommands y otras configuraciones de seguridad en config.json . Una configuración incorrecta puede exponer fácilmente su sistema.

Utilice este software de forma responsable y bajo su propio riesgo. Los responsables del mantenimiento no se responsabilizan del mal uso ni de las brechas de seguridad derivadas de su uso.


Características

  • Acceso completo a entornos de shell de Windows (PowerShell, CMD, Git Bash - configurable).
  • Ejecución de comandos sin restricciones (configurable mediante config.json ).
  • Acceso completo al sistema de archivos (configurable a través de config.json ).
  • Instalación de servicios a nivel de SISTEMA a través de NSSM para persistencia y recuperación automática.
  • Funciones de recuperación automática del servicio proporcionadas por NSSM.
  • Controles de enlace de red (previstos, pero gestionados principalmente a nivel de red/firewall).
  • Se deshabilitó la telemetría de PowerShell para mejorar la privacidad.
  • Reutilización de procesos para mejorar el rendimiento (para shells).
  • Tiempos de espera extendidos para operaciones de larga duración (configurables).

Prerrequisitos

Antes de comenzar, asegúrese de tener instalado lo siguiente:

  1. Node.js: Versión 18.0.0 o posterior. Descargar desde nodejs.org . (Incluye npm).
  2. NSSM (Administrador de Servicios No Succionador): Necesario para una instalación fiable del servicio. Descargue la última versión desde nssm.cc.

Instalación (usando NSSM - Recomendado)

Este método instala el servidor como un servicio persistente de Windows que se ejecuta con privilegios de SISTEMA y se inicia automáticamente.

  1. Clonar o descargar:
    • Clonar este repositorio: git clone <repository-url>
    • O descargue el código fuente .zip y extráigalo a una ubicación adecuada (p. ej., C:\Servers\SuperWinCLIServer ). Evite las carpetas de perfil de usuario.
  2. Lugar NSSM:
    • Descargue NSSM desde nssm.cc .
    • Extraiga el archivo zip.
    • Copie el archivo nssm.exe de la carpeta de arquitectura adecuada ( win32 o win64 ) al directorio raíz de este proyecto (la misma carpeta que install-service.ps1 ).
  3. Instalar dependencias y compilar:
    • Abra una terminal (PowerShell o CMD) en el directorio raíz del proyecto.
    • Ejecutar: npm install
    • Este comando instala los paquetes Node.js necesarios y ejecuta automáticamente npm run build para compilar el código TypeScript en la carpeta dist .
  4. Configurar config.json :
    • Copiar: haga una copia de config.sample.json y nómbrela config.json en el directorio raíz del proyecto.
    • Editar: Abra config.json y revise y modifique cuidadosamente la configuración:
      • security.allowedPaths : ¡CRÍTICO! Cambie las rutas de ejemplo a los directorios a los que el servidor necesita acceder. Por seguridad, sea lo más específico posible. Si no está seguro, comience con el directorio del proyecto (p. ej., "C:\\Servers\\SuperWinCLIServer" ; recuerde las barras invertidas dobles \\ ). El servicio se ejecuta como SYSTEM, por lo que las rutas deben ser válidas para esa cuenta.
      • security.blockedCommands / blockedArguments : Revisa las listas predeterminadas. Agrega o elimina comandos/argumentos según tu política de seguridad.
      • shells : habilitar/deshabilitar shells (PowerShell, CMD, Git Bash) y verificar la ruta command (especialmente para Git Bash).
      • ssh : configure si desea utilizar la función de ejecución SSH (deshabilitada de manera predeterminada).
    • Guarde el archivo config.json .
  5. Ejecutar script de instalación:
    • Abra PowerShell como administrador .
    • Navegue al directorio raíz del proyecto ( cd C:\Servers\SuperWinCLIServer ).
    • Ejecute el script de instalación: .\install-service.ps1
    • Este script utiliza NSSM para instalar y configurar el servicio MCPServer para ejecutar node.exe dist/index.js como LocalSystem y comenzar automáticamente.
  6. Verificar el estado del servicio:
    • En la misma ventana administrativa de PowerShell, ejecute: Get-Service MCPServer
    • El estado debe ser Running . Si está " Stopped , revise los registros de NSSM o el Visor de eventos de Windows (registros de aplicación y del sistema) para detectar errores.

Detalles de configuración ( config.json )

  • security :
    • maxCommandLength : Máximo de caracteres permitidos en una cadena de comando.
    • blockedCommands : Matriz de nombres de comandos (sin extensión) para bloquear (sin distinción entre mayúsculas y minúsculas).
    • blockedArguments : Matriz de argumentos exactos a bloquear (sin distinguir entre mayúsculas y minúsculas).
    • allowedPaths : Configuración crucial. Matriz de rutas absolutas. Si restrictWorkingDirectory es verdadero, los comandos solo se pueden ejecutar si su directorio de trabajo comienza con una de estas rutas. Las rutas se comparan sin distinción entre mayúsculas y minúsculas después de la normalización. Use barras invertidas dobles (p. ej., "C:\\Tools\\Scripts" ).
    • restrictWorkingDirectory : Booleano. Si es verdadero, se aplica la comprobación de allowedPaths para el directorio de trabajo. Se recomienda mantenerlo true .
    • logCommands : Booleano. Si es verdadero, los comandos ejecutados y su salida (truncada) se almacenan en memoria (hasta maxHistorySize ").
    • maxHistorySize : Número máximo de comandos que se mantendrán en el historial en memoria.
    • commandTimeout : Segundos antes de que un comando en ejecución se elimine automáticamente.
    • enableInjectionProtection : Booleano. Si es verdadero, intenta bloquear los operadores de shell ( & , | , ; , etc., definidos por shell) en los comandos.
  • shells : configura los shells locales disponibles (powershell, cmd, gitbash).
    • enabled : Booleano. Permite el uso de este shell.
    • command : Ruta al ejecutable del shell.
    • args : Matriz de argumentos predeterminados pasados al shell antes del comando del usuario.
    • blockedOperators : Matriz de cadenas/caracteres para bloquear dentro de los comandos para este shell específico (se usa si enableInjectionProtection es verdadero).
  • ssh : configura la ejecución remota de comandos a través de SSH.
    • enabled : Booleano. Habilita las herramientas ssh_execute y ssh_disconnect .
    • connections : Objeto que contiene configuraciones de conexión con nombre (host, puerto, nombre de usuario, contraseña/privateKeyPath).
  • Fusión de la configuración: Al cargar config.json , si contiene una sección security o shells , dicha sección reemplaza la configuración predeterminada. No se fusionan campos individuales dentro de las secciones security o shells . La sección ssh se fusiona de forma más granular. Asegúrese de que su config.json incluya todos los campos necesarios para estas secciones si las personaliza.

Gestión de servicios (NSSM)

Una vez instalado a través de install-service.ps1 , puede administrar el servicio utilizando herramientas estándar de Windows o comandos NSSM desde un PowerShell/CMD administrativo en el directorio del proyecto:

  • Inicio: Start-Service MCPServer o .\nssm.exe start MCPServer
  • Detener: Stop-Service MCPServer o .\nssm.exe stop MCPServer
  • Reiniciar: Restart-Service MCPServer o .\nssm.exe restart MCPServer
  • Estado: Get-Service MCPServer o .\nssm.exe status MCPServer
  • Editar configuración (avanzado): .\nssm.exe edit MCPServer (abre el editor de GUI de NSSM)
  • Ver configuración: .\nssm.exe dump MCPServer

Desinstalación (NSSM)

  1. Abra PowerShell como administrador .
  2. Navegue hasta el directorio raíz del proyecto.
  3. Ejecute el script de desinstalación: .\uninstall-service.ps1
  4. Esto utiliza NSSM para detener y eliminar el servicio MCPServer .

Ejecución alternativa (manual/depuración)

Puede ejecutar el servidor directamente sin instalarlo como un servicio para fines de prueba o depuración:

  1. Asegúrese de haber ejecutado npm install .
  2. Asegúrese de que config.json exista y esté configurado.
  3. Abra una terminal normal (PowerShell/CMD) en la raíz del proyecto.
  4. Ejecutar: npm run start
  5. El servidor se ejecutará en primer plano. Presione Ctrl + C para detenerlo.

Licencia

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

-
security - not tested
-
license - not tested
-
quality - not tested

Un servidor de interfaz de línea de comandos que proporciona acceso irrestricto al sistema en entornos Windows con privilegios de nivel de SISTEMA, lo que permite un control total sobre archivos, procesos y configuraciones.

  1. ⚠️ CRITICAL SECURITY WARNING ⚠️
    1. Features
      1. Prerequisites
        1. Installation (Using NSSM - Recommended)
          1. Configuration (config.json) Details
            1. Service Management (NSSM)
              1. Uninstallation (NSSM)
                1. Alternative Execution (Manual/Debug)
                  1. License
                    ID: w1n3t3gdec