Windows CLI MCP Server

by SimonB97
Verified

local-only server

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

Integrations

  • Provides access to Git Bash shell for executing Git commands and scripts on Windows, allowing repository management and version control operations.

  • Supports SSH connections to Raspberry Pi devices for remote command execution, configured through the SSH connection profiles.

  • Enables controlled execution of shell commands across PowerShell, CMD, and Git Bash with security restrictions, command blocking, and history tracking.

Servidor MCP de la CLI de Windows

Servidor MCP para interacciones seguras de línea de comandos en sistemas Windows, lo que permite el acceso controlado a PowerShell, CMD, shells de Git Bash y sistemas remotos mediante SSH. Permite a los clientes MCP (como Claude Desktop ) realizar operaciones en el sistema, de forma similar a Open Interpreter .

[!IMPORTANTE] Este servidor MCP proporciona acceso directo a la interfaz de línea de comandos de su sistema y a sistemas remotos mediante SSH. Al habilitarse, otorga acceso a sus archivos, variables de entorno, funciones de ejecución de comandos y administración remota del servidor.

  • Revisar y restringir las rutas permitidas y las conexiones SSH
  • Habilitar restricciones de directorio
  • Configurar bloques de comandos
  • Considere las implicaciones de seguridad

Consulte Configuración para obtener más detalles.

Características

  • Compatibilidad con múltiples shells : ejecute comandos en PowerShell, Símbolo del sistema (CMD) y Git Bash
  • Compatibilidad con SSH : ejecute comandos en sistemas remotos a través de SSH
  • Exposición de recursos : ver conexiones SSH, directorio actual y configuración como recursos MCP
  • Controles de seguridad :
    • Bloqueo de comandos y comandos SSH (rutas completas, variaciones de mayúsculas y minúsculas)
    • Validación del directorio de trabajo
    • Límites máximos de longitud de comando
    • Registro de comandos y seguimiento del historial
    • Validación de argumentos inteligentes
  • Configurable :
    • Reglas de seguridad personalizadas
    • Configuraciones específicas del Shell
    • Perfiles de conexión SSH
    • Restricciones de ruta
    • Listas de comandos bloqueados

Consulte la sección API para obtener más detalles sobre las herramientas y recursos que el servidor proporciona a los clientes MCP.

Nota : El servidor solo permitirá operaciones dentro de directorios configurados, con comandos permitidos y en conexiones SSH configuradas.

Uso con Claude Desktop

Agregue esto a su claude_desktop_config.json :

{ "mcpServers": { "windows-cli": { "command": "npx", "args": ["-y", "@simonb97/server-win-cli"] } } }

Para usar con un archivo de configuración específico, agregue el indicador --config :

{ "mcpServers": { "windows-cli": { "command": "npx", "args": [ "-y", "@simonb97/server-win-cli", "--config", "path/to/your/config.json" ] } } }

Después de la configuración, puedes:

  • Ejecutar comandos directamente utilizando las herramientas disponibles
  • Ver las conexiones SSH configuradas y la configuración del servidor en la sección Recursos
  • Administrar conexiones SSH a través de las herramientas proporcionadas

Configuración

El servidor utiliza un archivo de configuración JSON para personalizar su comportamiento. Puede especificar la configuración de los controles de seguridad, la configuración del shell y las conexiones SSH.

  1. Para crear un archivo de configuración predeterminado, realice una de las siguientes acciones:

a) copiar config.json.example a config.json , o

b) ejecutar:

npx @simonb97/server-win-cli --init-config ./config.json
  1. Luego, configure el indicador --config para que apunte a su archivo de configuración como se describe en la sección Uso con Claude Desktop .

Ubicaciones de configuración

El servidor busca la configuración en las siguientes ubicaciones (en orden):

  1. Ruta especificada por el indicador --config
  2. ./config.json en el directorio actual
  3. ~/.win-cli-mcp/config.json en el directorio de inicio del usuario

Si no se encuentra ningún archivo de configuración, el servidor utilizará una configuración predeterminada (restringida):

Configuración predeterminada

Nota : La configuración predeterminada está diseñada para ser restrictiva y segura. Encuentre más detalles sobre cada ajuste en la sección "Ajustes de configuración" .

{ "security": { "maxCommandLength": 2000, "blockedCommands": [ "rm", "del", "rmdir", "format", "shutdown", "restart", "reg", "regedit", "net", "netsh", "takeown", "icacls" ], "blockedArguments": [ "--exec", "-e", "/c", "-enc", "-encodedcommand", "-command", "--interactive", "-i", "--login", "--system" ], "allowedPaths": ["User's home directory", "Current working directory"], "restrictWorkingDirectory": true, "logCommands": true, "maxHistorySize": 1000, "commandTimeout": 30, "enableInjectionProtection": true }, "shells": { "powershell": { "enabled": true, "command": "powershell.exe", "args": ["-NoProfile", "-NonInteractive", "-Command"], "blockedOperators": ["&", "|", ";", "`"] }, "cmd": { "enabled": true, "command": "cmd.exe", "args": ["/c"], "blockedOperators": ["&", "|", ";", "`"] }, "gitbash": { "enabled": true, "command": "C:\\Program Files\\Git\\bin\\bash.exe", "args": ["-c"], "blockedOperators": ["&", "|", ";", "`"] } }, "ssh": { "enabled": false, "defaultTimeout": 30, "maxConcurrentSessions": 5, "keepaliveInterval": 10000, "keepaliveCountMax": 3, "readyTimeout": 20000, "connections": {} } }

Ajustes de configuración

El archivo de configuración se divide en tres secciones principales: security , shells y ssh .

Configuración de seguridad

{ "security": { // Maximum allowed length for any command "maxCommandLength": 1000, // Commands to block - blocks both direct use and full paths // Example: "rm" blocks both "rm" and "C:\\Windows\\System32\\rm.exe" // Case-insensitive: "del" blocks "DEL.EXE", "del.cmd", etc. "blockedCommands": [ "rm", // Delete files "del", // Delete files "rmdir", // Delete directories "format", // Format disks "shutdown", // Shutdown system "restart", // Restart system "reg", // Registry editor "regedit", // Registry editor "net", // Network commands "netsh", // Network commands "takeown", // Take ownership of files "icacls" // Change file permissions ], // Arguments that will be blocked when used with any command // Note: Checks each argument independently - "cd warm_dir" won't be blocked just because "rm" is in blockedCommands "blockedArguments": [ "--exec", // Execution flags "-e", // Short execution flags "/c", // Command execution in some shells "-enc", // PowerShell encoded commands "-encodedcommand", // PowerShell encoded commands "-command", // Direct PowerShell command execution "--interactive", // Interactive mode which might bypass restrictions "-i", // Short form of interactive "--login", // Login shells might have different permissions "--system" // System level operations ], // List of directories where commands can be executed "allowedPaths": ["C:\\Users\\YourUsername", "C:\\Projects"], // If true, commands can only run in allowedPaths "restrictWorkingDirectory": true, // If true, saves command history "logCommands": true, // Maximum number of commands to keep in history "maxHistorySize": 1000, // Timeout for command execution in seconds (default: 30) "commandTimeout": 30, // Enable or disable protection against command injection (covers ;, &, |, \`) "enableInjectionProtection": true } }

Configuración de Shell

{ "shells": { "powershell": { // Enable/disable this shell "enabled": true, // Path to shell executable "command": "powershell.exe", // Default arguments for the shell "args": ["-NoProfile", "-NonInteractive", "-Command"], // Optional: Specify which command operators to block "blockedOperators": ["&", "|", ";", "`"] // Block all command chaining }, "cmd": { "enabled": true, "command": "cmd.exe", "args": ["/c"], "blockedOperators": ["&", "|", ";", "`"] // Block all command chaining }, "gitbash": { "enabled": true, "command": "C:\\Program Files\\Git\\bin\\bash.exe", "args": ["-c"], "blockedOperators": ["&", "|", ";", "`"] // Block all command chaining } } }

Configuración de SSH

{ "ssh": { // Enable/disable SSH functionality "enabled": false, // Default timeout for SSH commands in seconds "defaultTimeout": 30, // Maximum number of concurrent SSH sessions "maxConcurrentSessions": 5, // Interval for sending keepalive packets (in milliseconds) "keepaliveInterval": 10000, // Maximum number of failed keepalive attempts before disconnecting "keepaliveCountMax": 3, // Timeout for establishing SSH connections (in milliseconds) "readyTimeout": 20000, // SSH connection profiles "connections": { // NOTE: these examples are not set in the default config! // Example: Local Raspberry Pi "raspberry-pi": { "host": "raspberrypi.local", // Hostname or IP address "port": 22, // SSH port "username": "pi", // SSH username "password": "raspberry", // Password authentication (if not using key) "keepaliveInterval": 10000, // Override global keepaliveInterval "keepaliveCountMax": 3, // Override global keepaliveCountMax "readyTimeout": 20000 // Override global readyTimeout }, // Example: Remote server with key authentication "dev-server": { "host": "dev.example.com", "port": 22, "username": "admin", "privateKeyPath": "C:\\Users\\YourUsername\\.ssh\\id_rsa", // Path to private key "keepaliveInterval": 10000, "keepaliveCountMax": 3, "readyTimeout": 20000 } } } }

API

Herramientas

  • ejecutar_comando
    • Ejecutar un comando en el shell especificado
    • Entradas:
      • shell (cadena): Shell a utilizar ("powershell", "cmd" o "gitbash")
      • command (cadena): Comando a ejecutar
      • workingDir (cadena opcional): Directorio de trabajo
    • Devuelve la salida del comando como texto o un mensaje de error si falla la ejecución.
  • obtener_historial_de_comandos
    • Obtener el historial de comandos ejecutados
    • Entrada: limit (número opcional)
    • Devuelve el historial de comandos con marca de tiempo y salidas
  • ssh_execute
    • Ejecutar un comando en un sistema remoto a través de SSH
    • Entradas:
      • connectionId (cadena): ID de la conexión SSH a utilizar
      • command (cadena): Comando a ejecutar
    • Devuelve la salida del comando como texto o un mensaje de error si falla la ejecución.
  • Desconexión ssh
    • Desconectarse de un servidor SSH
    • Aporte:
      • connectionId (cadena): ID de la conexión SSH que se desconectará
    • Devuelve un mensaje de confirmación
  • crear_conexión_ssh
    • Crear una nueva conexión SSH
    • Entradas:
      • connectionId (cadena): ID de la nueva conexión SSH
      • connectionConfig (objeto): Detalles de configuración de la conexión, incluidos host, puerto, nombre de usuario y contraseña o privateKeyPath
    • Devuelve un mensaje de confirmación
  • leer_conexiones_ssh
    • Leer todas las conexiones SSH configuradas
    • Devuelve una lista de todas las conexiones SSH de la configuración
  • actualizar_conexión_ssh
    • Actualizar una conexión SSH existente
    • Entradas:
      • connectionId (cadena): ID de la conexión SSH a actualizar
      • connectionConfig (objeto): nuevos detalles de configuración de la conexión
    • Devuelve un mensaje de confirmación
  • eliminar_conexión_ssh
    • Eliminar una conexión SSH
    • Aporte:
      • connectionId (cadena): ID de la conexión SSH que se eliminará
    • Devuelve un mensaje de confirmación
  • obtener_directorio_actual
    • Obtener el directorio de trabajo actual del servidor
    • Devuelve la ruta del directorio de trabajo actual

Recursos

  • Conexiones SSH
    • Formato de URI: ssh://{connectionId}
    • Contiene detalles de conexión con información confidencial enmascarada
    • Un recurso para cada conexión SSH configurada
    • Ejemplo: ssh://raspberry-pi muestra la configuración para la conexión "raspberry-pi"
  • Configuración de SSH
    • URI: ssh://config
    • Contiene la configuración general de SSH y todas las conexiones (con contraseñas enmascaradas)
    • Muestra configuraciones como defaultTimeout, maxConcurrentSessions y la lista de conexiones
  • Directorio actual
    • URI: cli://currentdir
    • Contiene el directorio de trabajo actual del servidor CLI
    • Muestra la ruta donde se ejecutarán los comandos de forma predeterminada
  • Configuración de CLI
    • URI: cli://config
    • Contiene la configuración del servidor CLI (excluyendo datos confidenciales)
    • Muestra configuraciones de seguridad, configuraciones de shell y configuraciones de SSH

Consideraciones de seguridad

Funciones de seguridad integradas (siempre activas)

Las siguientes características de seguridad están codificadas en el servidor y no se pueden desactivar:

  • Bloqueo de comandos sin distinción entre mayúsculas y minúsculas : todos los bloqueos de comandos no distinguen entre mayúsculas y minúsculas (por ejemplo, "DEL.EXE", "del.cmd", etc. se bloquean si "del" está en blockingCommands)
  • Análisis de ruta inteligente : el servidor analiza las rutas de comandos completas para evitar intentos de omisión (bloqueando "C:\Windows\System32\rm.exe" si "rm" está bloqueado)
  • Inteligencia de análisis de comandos : se evitan los falsos positivos (por ejemplo, "warm_dir" no se bloquea solo porque "rm" está en blockingCommands)
  • Validación de entrada : todas las entradas del usuario se validan antes de la ejecución
  • Gestión de procesos de Shell : Los procesos se finalizan correctamente después de la ejecución o el tiempo de espera
  • Enmascaramiento de datos confidenciales : las contraseñas se enmascaran automáticamente en los recursos (se reemplazan con ********)

Funciones de seguridad configurables (activas de forma predeterminada)

Estas características de seguridad se pueden configurar a través del archivo config.json:

  • Bloqueo de comandos : los comandos especificados en la matriz blockedCommands se bloquean (el valor predeterminado incluye comandos peligrosos como rm, del, format)
  • Bloqueo de argumentos : los argumentos especificados en la matriz blockedArguments se bloquean (el valor predeterminado incluye indicadores potencialmente peligrosos)
  • Protección contra inyección de comandos : evita el encadenamiento de comandos (habilitado de forma predeterminada a través de enableInjectionProtection: true )
  • Restricción del directorio de trabajo : limita la ejecución de comandos a directorios específicos (habilitado de manera predeterminada a través de restrictWorkingDirectory: true )
  • Límite de longitud del comando : restringe la longitud máxima del comando (valor predeterminado: 2000 caracteres)
  • Tiempo de espera de comando : finaliza los comandos que se ejecutan durante demasiado tiempo (valor predeterminado: 30 segundos)
  • Registro de comandos : registra el historial de comandos (habilitado de forma predeterminada a través de logCommands: true )

Advertencias de seguridad importantes

Estas no son características sino consideraciones de seguridad importantes a tener en cuenta:

  • Acceso al entorno : Los comandos pueden tener acceso a variables de entorno, que podrían contener información confidencial
  • Acceso al sistema de archivos : los comandos pueden leer/escribir archivos dentro de las rutas permitidas; configure cuidadosamente allowedPaths para evitar el acceso a datos confidenciales

Licencia

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

You must be authenticated.

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

Un servidor de protocolo de contexto de modelo que proporciona acceso seguro a la línea de comandos de los sistemas Windows, lo que permite a los clientes MCP como Claude Desktop ejecutar comandos de forma segura en shells de PowerShell, CMD y Git Bash con controles de seguridad configurables.

  1. Features
    1. Usage with Claude Desktop
      1. Configuration
        1. Configuration Locations
        2. Default Configuration
        3. Configuration Settings
      2. API
        1. Tools
        2. Resources
      3. Security Considerations
        1. Built-in Security Features (Always Active)
        2. Configurable Security Features (Active by Default)
        3. Important Security Warnings
      4. License
        ID: 5hiwtoqo31