Skip to main content
Glama

Super Windows CLI MCP Server

by Faucet94
README.md8.74 kB
# Super Windows CLI MCP Server An enhanced fork of the Windows CLI MCP Server providing unrestricted system access to Windows environments via a command-line interface (MCP). **Based on:** [win-cli-mcp-server](https://github.com/SimonB97/win-cli-mcp-server) by SimonB97. --- ## ⚠️ CRITICAL SECURITY WARNING ⚠️ This server is designed to run with **SYSTEM-level privileges** on Windows. This grants it **complete and unrestricted access** to the entire operating system, including all files, processes, and configuration settings. * **DO NOT** install or run this server unless you fully understand the implications of granting SYSTEM-level access. * **ONLY** use this server in **highly trusted environments** where you have full control over network access. * **NETWORK SECURITY IS PARAMOUNT:** Since application-level restrictions are minimal by design, rely heavily on firewalls, network segmentation, and strict access control lists (ACLs) to protect the machine running this server. * **REVIEW THE CONFIGURATION CAREFULLY:** Pay close attention to `allowedPaths`, `blockedCommands`, and other security settings in `config.json`. A misconfiguration can easily expose your system. **Use this software responsibly and at your own risk. The maintainers assume no liability for misuse or security breaches resulting from its use.** --- ## Features * Complete access to Windows shell environments (PowerShell, CMD, Git Bash - configurable). * Unrestricted command execution (configurable via `config.json`). * Full file system access (configurable via `config.json`). * SYSTEM-level service installation via NSSM for persistence and auto-recovery. * Automatic service recovery features provided by NSSM. * Network binding controls (intended, but primarily managed at the network/firewall level). * Disabled PowerShell telemetry for enhanced privacy. * Process reuse for performance (for shells). * Extended timeouts for long-running operations (configurable). ## Prerequisites Before you begin, ensure you have the following installed: 1. **Node.js:** Version 18.0.0 or later. Download from [nodejs.org](https://nodejs.org/). (Includes npm). 2. **NSSM (Non-Sucking Service Manager):** Required for reliable service installation. Download the latest version from [nssm.cc](https://nssm.cc/download). ## Installation (Using NSSM - Recommended) This method installs the server as a persistent Windows service that runs with SYSTEM privileges and starts automatically. 1. **Clone or Download:** * Clone this repository: `git clone <repository-url>` * Or download the source code `.zip` and extract it to a suitable location (e.g., `C:\Servers\SuperWinCLIServer`). Avoid user profile folders. 2. **Place NSSM:** * Download NSSM from [nssm.cc](https://nssm.cc/download). * Extract the zip file. * Copy the `nssm.exe` file from the appropriate architecture folder (`win32` or `win64`) into the **root directory** of this project (the same folder as `install-service.ps1`). 3. **Install Dependencies & Build:** * Open a terminal (PowerShell or CMD) in the project's root directory. * Run: `npm install` * This command installs necessary Node.js packages and automatically runs `npm run build` to compile the TypeScript code into the `dist` folder. 4. **Configure `config.json`:** * **Copy:** Make a copy of `config.sample.json` and name it `config.json` in the project's root directory. * **Edit:** Open `config.json` and **carefully review and modify** the settings: * `security.allowedPaths`: **CRITICAL!** Change this from the sample paths to the *actual* directories the server needs access to. For security, be as specific as possible. Start with the project directory itself if unsure (e.g., `"C:\\Servers\\SuperWinCLIServer"` - remember double backslashes `\\`). The service runs as SYSTEM, so paths must be valid for that account. * `security.blockedCommands` / `blockedArguments`: Review the default lists. Add or remove commands/arguments based on your security policy. * `shells`: Enable/disable shells (PowerShell, CMD, Git Bash) and verify the `command` path (especially for Git Bash). * `ssh`: Configure if you intend to use the SSH execution feature (disabled by default). * **Save** the `config.json` file. 5. **Run Installation Script:** * Open **PowerShell as Administrator**. * Navigate to the project's root directory (`cd C:\Servers\SuperWinCLIServer`). * Execute the installation script: `.\install-service.ps1` * This script uses NSSM to install and configure the `MCPServer` service to run `node.exe dist/index.js` as `LocalSystem`, starting automatically. 6. **Verify Service Status:** * In the same administrative PowerShell window, run: `Get-Service MCPServer` * The status should be `Running`. If it's `Stopped`, check the NSSM logs or Windows Event Viewer (Application and System logs) for errors. ## Configuration (`config.json`) Details * **`security`**: * `maxCommandLength`: Max characters allowed in a command string. * `blockedCommands`: Array of command names (without extension) to block (case-insensitive). * `blockedArguments`: Array of exact arguments to block (case-insensitive). * `allowedPaths`: **Crucial setting.** Array of absolute paths. If `restrictWorkingDirectory` is true, commands can only be executed if their working directory starts with one of these paths. Paths are compared case-insensitively after normalization. Use double backslashes (e.g., `"C:\\Tools\\Scripts"`). * `restrictWorkingDirectory`: Boolean. If true, enforce the `allowedPaths` check for the working directory. Highly recommended to keep `true`. * `logCommands`: Boolean. If true, executed commands and their output (truncated) are stored in memory (up to `maxHistorySize`). * `maxHistorySize`: Max number of commands to keep in the in-memory history. * `commandTimeout`: Seconds before a running command is killed automatically. * `enableInjectionProtection`: Boolean. If true, attempts to block shell operators (`&`, `|`, `;`, etc. defined per shell) in commands. * **`shells`**: Configure available local shells (powershell, cmd, gitbash). * `enabled`: Boolean. Allow use of this shell. * `command`: Path to the shell executable. * `args`: Array of default arguments passed to the shell before the user's command. * `blockedOperators`: Array of strings/characters to block within commands for this specific shell (used if `enableInjectionProtection` is true). * **`ssh`**: Configure remote command execution via SSH. * `enabled`: Boolean. Enable the `ssh_execute` and `ssh_disconnect` tools. * `connections`: Object containing named connection configurations (host, port, username, password/privateKeyPath). * **Configuration Merging:** When `config.json` is loaded, if it contains a `security` or `shells` section, that entire section **replaces** the default configuration for that section. It does *not* merge individual fields within `security` or `shells`. The `ssh` section is merged more granularly. Ensure your `config.json` includes all necessary fields for these sections if you customize them. ## Service Management (NSSM) Once installed via `install-service.ps1`, you can manage the service using standard Windows tools or NSSM commands from an **administrative PowerShell/CMD** in the project directory: * **Start:** `Start-Service MCPServer` or `.\nssm.exe start MCPServer` * **Stop:** `Stop-Service MCPServer` or `.\nssm.exe stop MCPServer` * **Restart:** `Restart-Service MCPServer` or `.\nssm.exe restart MCPServer` * **Status:** `Get-Service MCPServer` or `.\nssm.exe status MCPServer` * **Edit Configuration (Advanced):** `.\nssm.exe edit MCPServer` (Opens the NSSM GUI editor) * **View Configuration:** `.\nssm.exe dump MCPServer` ## Uninstallation (NSSM) 1. Open **PowerShell as Administrator**. 2. Navigate to the project's root directory. 3. Execute the uninstallation script: `.\uninstall-service.ps1` 4. This uses NSSM to stop and remove the `MCPServer` service. ## Alternative Execution (Manual/Debug) You can run the server directly without installing it as a service for testing or debugging purposes: 1. Ensure you have run `npm install`. 2. Ensure `config.json` exists and is configured. 3. Open a normal terminal (PowerShell/CMD) in the project root. 4. Run: `npm run start` 5. The server will run in the foreground. Press `Ctrl + C` to stop it. ## License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Faucet94/super-win-cli-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server