Windows CLI MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
configNoPath to a custom configuration file (optional). If not specified, the server will look for config.json in the current directory or ~/.win-cli-mcp/config.json in the user's home directory.
init-configNoPath where a default configuration file should be created (e.g., './config.json')

Schema

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
Current Working DirectoryThe current working directory of the CLI server
SSH ConfigurationAll SSH connection configurations
CLI Server ConfigurationMain CLI server configuration (excluding sensitive data)

Tools

Functions exposed to the LLM to take actions

NameDescription
execute_command

Execute a command in the specified shell (powershell, cmd, or gitbash)

Example usage (PowerShell):

{ "shell": "powershell", "command": "Get-Process | Select-Object -First 5", "workingDir": "C:\Users\username" }

Example usage (CMD):

{ "shell": "cmd", "command": "dir /b", "workingDir": "C:\Projects" }

Example usage (Git Bash):

{ "shell": "gitbash", "command": "ls -la", "workingDir": "/c/Users/username" }
get_command_history

Get the history of executed commands

Example usage:

{ "limit": 5 }

Example response:

[ { "command": "Get-Process", "output": "...", "timestamp": "2024-03-20T10:30:00Z", "exitCode": 0 } ]
ssh_execute

Execute a command on a remote host via SSH

Example usage:

{ "connectionId": "raspberry-pi", "command": "uname -a" }

Configuration required in config.json:

{ "ssh": { "enabled": true, "connections": { "raspberry-pi": { "host": "raspberrypi.local", "port": 22, "username": "pi", "password": "raspberry" } } } }
ssh_disconnect

Disconnect from an SSH server

Example usage:

{ "connectionId": "raspberry-pi" }

Use this to cleanly close SSH connections when they're no longer needed.

create_ssh_connection

Create a new SSH connection

read_ssh_connections

Read all SSH connections

update_ssh_connection

Update an existing SSH connection

delete_ssh_connection

Delete an existing SSH connection

get_current_directory

Get the current working directory