Windows CLI

by MCP-Mirror

468 downloads
Not rated
GitHub

About

MCP server for secure command-line interactions on Windows systems, enabling controlled access to PowerShell, CMD, and Git Bash shells.

Details

Author
MCP-Mirror
Downloads
468
Categories
Developer Tools, Community, Other

The following security features are hard-coded into the server and cannot be disabled:

- Case-insensitive command blocking: All command blocking is case-insensitive (e.g., "DEL.EXE", "del.cmd", etc. are all blocked if "del" is in blockedCommands)
- Smart path parsing: The server parses full command paths to prevent bypass attempts (blocking "C:\Windows\System32\rm.exe" if "rm" is blocked)
- Command parsing intelligence: False positives are avoided (e.g., "warm_dir" is not blocked just because "rm" is in blockedCommands)
- Input validation: All user inputs are validated before execution
- Shell process management: Processes are properly terminated after execution or timeout
- Sensitive data masking: Passwords are automatically masked in resources (replaced with )

These security features are configurable through the config.json file:

- Command blocking: Commands specified inblockedCommandsarray are blocked (default includes dangerous commands like rm, del, format)
-
Argument blocking: Arguments specified inblockedArgumentsarray are blocked (default includes potentially dangerous flags)
-
Command injection protection: Prevents command chaining (enabled by default throughenableInjectionProtection: true)
-
Working directory restriction: Limits command execution to specified directories (enabled by default throughrestrictWorkingDirectory: true)
-
Command length limit: Restricts maximum command length (default: 2000 characters)
-
Command timeout: Terminates commands that run too long (default: 30 seconds)
-
Command logging: Records command history (enabled by default throughlogCommands: true)

These are not features but important security considerations to be aware of:

- Environment access: Commands may have access to environment variables, which could contain sensitive information
-
File system access**: Commands can read/write files within allowed paths - carefully configureallowedPathsto prevent access to sensitive data

This project is licensed under the MIT License - see theLICENSEfile for details.

This is a web browser that enables your coding agent, such as Claude Code, to visit websites on your behalf and assist you in identifying bugs or creating UI test cases.

A Model Context Protocol (MCP) server that enables AI assistants to integrate with Prometheus Alertmanager

A comprehensive MCP server for tooling interactions(40+) and resource accessibility(60+) plus many useful prompts to interact with Algorand Blockchain.

An MCP server that provides control over Android devices through ADB. Offers device screenshot capture, UI layout analysis, package management, and ADB command execution capabilities.

A Binary Ninja plugin, MCP server, and bridge that seamlessly integrates Binary Ninja with your favorite MCP client.

integration that connects BloodHound with AI through MCP, allowing security professionals to analyze Active Directory attack paths using natural language queries instead of Cypher.

A specialized MCP gateway for LLM enhancement prompts and jailbreaks with dynamic schema adaptation. Provides prompts for different LLMs using an enum-based approach.

Obtains latest dependency details for Clojure libraries.

A Model Context Protocol (MCP) server for CODESYS V3 programming environments.

Analyze large codebases and document collections using high-context models via OpenRouter, OpenAI, or Google AI -- very useful, e.g., with Claude Code

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Windows CLI
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Configurable Security Features Active By Default

These security features are configurable through the config.json file:

- Command blocking: Commands specified inblockedCommandsarray are blocked (default includes dangerous commands like rm, del, format)
- Argument blocking: Arguments specified inblockedArgumentsarray are blocked (default includes potentially dangerous flags)
- Command injection protection: Prevents command chaining (enabled by default throughenableInjectionProtection: true)
- Working directory restriction: Limits command execution to specified directories (enabled by default throughrestrictWorkingDirectory: true)
- Command length limit: Restricts maximum command length (default: 2000 characters)
- Command timeout: Terminates commands that run too long (default: 30 seconds)
- Command logging: Records command history (enabled by default throughlogCommands: true)

These are not features but important security considerations to be aware of:

- Environment access: Commands may have access to environment variables, which could contain sensitive information
- File system access: Commands can read/write files within allowed paths - carefully configureallowedPathsto prevent access to sensitive data

This project is licensed under the MIT License - see theLICENSEfile for details.

This is a web browser that enables your coding agent, such as Claude Code, to visit websites on your behalf and assist you in identifying bugs or creating UI test cases.

A Model Context Protocol (MCP) server that enables AI assistants to integrate with Prometheus Alertmanager

A comprehensive MCP server for tooling interactions(40+) and resource accessibility(60+) plus many useful prompts to interact with Algorand Blockchain.

An MCP server that provides control over Android devices through ADB. Offers device screenshot capture, UI layout analysis, package management, and ADB command execution capabilities.

A Binary Ninja plugin, MCP server, and bridge that seamlessly integrates Binary Ninja with your favorite MCP client.

integration that connects BloodHound with AI through MCP, allowing security professionals to analyze Active Directory attack paths using natural language queries instead of Cypher.

A specialized MCP gateway for LLM enhancement prompts and jailbreaks with dynamic schema adaptation. Provides prompts for different LLMs using an enum-based approach.

Obtains latest dependency details for Clojure libraries.

A Model Context Protocol (MCP) server for CODESYS V3 programming environments.

Analyze large codebases and document collections using high-context models via OpenRouter, OpenAI, or Google AI -- very useful, e.g., with Claude Code

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "windows cli": {
            "SimonB97_win-cli-mcp-server": {
                "command": "npx",
                "args": [
                    "@simonb97/server-win-cli",
                    "--init-config",
                    "./config.json"
                ]
            }
        }
    }
}

McpServers

{
    "SimonB97_win-cli-mcp-server": {
        "command": "npx",
        "args": [
            "@simonb97/server-win-cli",
            "--init-config",
            "./config.json"
        ]
    }
}

[!CAUTION]PROJECT DEPRECATED- No longer maintained. Usehttps://github.com/wonderwhy-er/DesktopCommanderMCPinstead for similar functionality.

MCP serverfor secure command-line interactions on Windows systems, enabling controlled access to PowerShell, CMD, Git Bash shells, and remote systems via SSH. It allows MCP clients (likeClaude Desktop) to perform operations on your system, similar toOpen Interpreter.

[!IMPORTANT] This MCP server provides direct access to your system's command line interface and remote systems via SSH. When enabled, it grants access to your files, environment variables, command execution capabilities, and remote server management.

- Review and restrict allowed paths and SSH connections
- Enable directory restrictions
- Configure command blocks
- Consider security implications

- Features
-
Usage with Claude Desktop
-
Configuration

- Configuration Locations
-
Default Configuration
-
Configuration Settings

- Security Settings
-
Shell Configuration
-
SSH Configuration

- Multi-Shell Support: Execute commands in PowerShell, Command Prompt (CMD), and Git Bash
- SSH Support: Execute commands on remote systems via SSH
- Resource Exposure: View SSH connections, current directory, and configuration as MCP resources
- Security Controls:

- Command and SSH command blocking (full paths, case variations)
- Working directory validation
- Maximum command length limits
- Command logging and history tracking
- Smart argument validation

- Custom security rules
- Shell-specific settings
- SSH connection profiles
- Path restrictions
- Blocked command lists

See theAPIsection for more details on the tools and resources the server provides to MCP clients.

Note: The server will only allow operations within configured directories, with allowed commands, and on configured SSH connections.

Add this to yourclaude_desktop_config.json:

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

For use with a specific config file, add the--configflag:

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

- Execute commands directly using the available tools
- View configured SSH connections and server configuration in the Resources section
- Manage SSH connections through the provided tools

The server uses a JSON configuration file to customize its behavior. You can specify settings for security controls, shell configurations, and SSH connections.
- To create a default config file, either:

a)copyconfig.json.exampletoconfig.json, or

npx @simonb97/server-win-cli --init-config ./config.json

- Then set the--configflag to point to your config file as described in theUsage with Claude Desktopsection.

The server looks for configuration in the following locations (in order):
- Path specified by--configflag
- ./config.json in current directory
- ~/.win-cli-mcp/config.json in user's home directory

If no configuration file is found, the server will use a default (restricted) configuration:

Note: The default configuration is designed to be restrictive and secure. Find more details on each setting in theConfiguration Settingssection.

{ "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": {} } }

The configuration file is divided into three main sections:security,shells, andssh.

{ "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 } }
{ "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 } } }
{ "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 } } } }

- Execute a command in the specified shell
- Inputs:

- shell(string): Shell to use ("powershell", "cmd", or "gitbash")
-
command(string): Command to execute
-
workingDir(optional string): Working directory

- Get the history of executed commands
- Input:
limit(optional number)
- Returns timestamped command history with outputs

- Execute a command on a remote system via SSH
- Inputs:

- connectionId(string): ID of the SSH connection to use
-
command(string): Command to execute

- Disconnect from an SSH server
- Input:

- connectionId(string): ID of the SSH connection to disconnect

- Create a new SSH connection
- Inputs:

- connectionId(string): ID for the new SSH connection
-
connectionConfig(object): Connection configuration details including host, port, username, and either password or privateKeyPath

- Read all configured SSH connections
- Returns a list of all SSH connections from the configuration

- Update an existing SSH connection
- Inputs:

- connectionId(string): ID of the SSH connection to update
-
connectionConfig(object): New connection configuration details

- Delete an SSH connection
- Input:

- connectionId(string): ID of the SSH connection to delete

- Get the current working directory of the server
- Returns the current working directory path

- URI format:ssh://{connectionId}
- Contains connection details with sensitive information masked
- One resource for each configured SSH connection
- Example:
ssh://raspberry-pishows configuration for the "raspberry-pi" connection

- URI:ssh://config
- Contains overall SSH configuration and all connections (with passwords masked)
- Shows settings like defaultTimeout, maxConcurrentSessions, and the list of connections

- URI:cli://currentdir
- Contains the current working directory of the CLI server
- Shows the path where commands will execute by default

- URI:cli://config
- Contains the CLI server configuration (excluding sensitive data)
- Shows security settings, shell configurations, and SSH settings

Built-in Security Features (Always Active)

The following security features are hard-coded into the server and cannot be disabled:

- Case-insensitive command blocking: All command blocking is case-insensitive (e.g., "DEL.EXE", "del.cmd", etc. are all blocked if "del" is in blockedCommands)
- Smart path parsing: The server parses full command paths to prevent bypass attempts (blocking "C:\Windows\System32\rm.exe" if "rm" is blocked)
- Command parsing intelligence: False positives are avoided (e.g., "warm_dir" is not blocked just because "rm" is in blockedCommands)
- Input validation: All user inputs are validated before execution
- Shell process management: Processes are properly terminated after execution or timeout
- Sensitive data masking: Passwords are automatically masked in resources (replaced with )

Configurable Security Features (Active by Default)

These security features are configurable through the config.json file:

- Command blocking: Commands specified inblockedCommandsarray are blocked (default includes dangerous commands like rm, del, format)
-
Argument blocking: Arguments specified inblockedArgumentsarray are blocked (default includes potentially dangerous flags)
-
Command injection protection: Prevents command chaining (enabled by default throughenableInjectionProtection: true)
-
Working directory restriction: Limits command execution to specified directories (enabled by default throughrestrictWorkingDirectory: true)
-
Command length limit: Restricts maximum command length (default: 2000 characters)
-
Command timeout: Terminates commands that run too long (default: 30 seconds)
-
Command logging: Records command history (enabled by default through
logCommands: true)

These are not features but important security considerations to be aware of:

- Environment access: Commands may have access to environment variables, which could contain sensitive information
-
File system access**: Commands can read/write files within allowed paths - carefully configure
allowedPaths`to prevent access to sensitive data

This project is licensed under the MIT License - see theLICENSEfile for details.

This is a web browser that enables your coding agent, such as Claude Code, to visit websites on your behalf and assist you in identifying bugs or creating UI test cases.

A Model Context Protocol (MCP) server that enables AI assistants to integrate with Prometheus Alertmanager

A comprehensive MCP server for tooling interactions(40+) and resource accessibility(60+) plus many useful prompts to interact with Algorand Blockchain.

An MCP server that provides control over Android devices through ADB. Offers device screenshot capture, UI layout analysis, package management, and ADB command execution capabilities.

A Binary Ninja plugin, MCP server, and bridge that seamlessly integrates Binary Ninja with your favorite MCP client.

integration that connects BloodHound with AI through MCP, allowing security professionals to analyze Active Directory attack paths using natural language queries instead of Cypher.

A specialized MCP gateway for LLM enhancement prompts and jailbreaks with dynamic schema adaptation. Provides prompts for different LLMs using an enum-based approach.

Obtains latest dependency details for Clojure libraries.

A Model Context Protocol (MCP) server for CODESYS V3 programming environments.

Analyze large codebases and document collections using high-context models via OpenRouter, OpenAI, or Google AI -- very useful, e.g., with Claude Code

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.