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 enconfig.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:
- Node.js: Versión 18.0.0 o posterior. Descargar desde nodejs.org . (Incluye npm).
- 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.
- 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.
- Clonar este repositorio:
- Lugar NSSM:
- Descargue NSSM desde nssm.cc .
- Extraiga el archivo zip.
- Copie el archivo
nssm.exe
de la carpeta de arquitectura adecuada (win32
owin64
) al directorio raíz de este proyecto (la misma carpeta queinstall-service.ps1
).
- 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 carpetadist
.
- Configurar
config.json
:- Copiar: haga una copia de
config.sample.json
y nómbrelaconfig.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 rutacommand
(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
.
- Copiar: haga una copia de
- 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 ejecutarnode.exe dist/index.js
comoLocalSystem
y comenzar automáticamente.
- 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.
- En la misma ventana administrativa de PowerShell, ejecute:
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. SirestrictWorkingDirectory
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 deallowedPaths
para el directorio de trabajo. Se recomienda mantenerlotrue
.logCommands
: Booleano. Si es verdadero, los comandos ejecutados y su salida (truncada) se almacenan en memoria (hastamaxHistorySize
").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 sienableInjectionProtection
es verdadero).
ssh
: configura la ejecución remota de comandos a través de SSH.enabled
: Booleano. Habilita las herramientasssh_execute
yssh_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ónsecurity
oshells
, dicha sección reemplaza la configuración predeterminada. No se fusionan campos individuales dentro de las seccionessecurity
oshells
. La secciónssh
se fusiona de forma más granular. Asegúrese de que suconfig.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)
- Abra PowerShell como administrador .
- Navegue hasta el directorio raíz del proyecto.
- Ejecute el script de desinstalación:
.\uninstall-service.ps1
- 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:
- Asegúrese de haber ejecutado
npm install
. - Asegúrese de que
config.json
exista y esté configurado. - Abra una terminal normal (PowerShell/CMD) en la raíz del proyecto.
- Ejecutar:
npm run start
- 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.
This server cannot be installed
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.