Server data from the Official MCP Registry
Headless Windows ops over MCP: hidden PowerShell + in-process SSH, WinRM & SFTP.
Headless Windows ops over MCP: hidden PowerShell + in-process SSH, WinRM & SFTP.
This is a well-engineered PowerShell/SSH/WinRM MCP server with proper error handling and reasonable security defaults. However, the server's design intentionally executes arbitrary scripts and commands provided by the AI host without sandboxing or allow-list policies, which is a significant security concern that users must understand. The README acknowledges this risk, but the lack of built-in gating mechanisms and the broad access to local/remote execution elevate the risk profile. Permissions are appropriate for the server's stated purpose, and code quality is solid. Supply chain analysis found 4 known vulnerabilities in dependencies (2 critical, 2 high severity). Package verification found 1 issue.
7 files analyzed · 13 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-imrrd-powershell-mcp": {
"args": [
"-y",
"powershell-mcp"
],
"command": "npx"
}
}
}From the project's GitHub README.
A Model Context Protocol server that gives AI agents real, non-intrusive access to Windows PowerShell.
Most tools that let an agent run Windows commands spawn a visible console window for every call — which steals focus and interrupts whatever you're typing. powershell-mcp runs everything in a hidden process (windowsHide: true / no CreateWindow), captures structured output, enforces hard timeouts, and exposes purpose-built tools for service and system management. Built for running unattended next to a human at the keyboard.
{ stdout, stderr, exit_code, duration, timed_out }. Hard timeout with tree-kill. Output is capped so a runaway command can't flood the context.pwsh (PowerShell 7+) and falls back to powershell.exe; override with PWSH_MCP_EXE.| Tool | Description |
|---|---|
run_powershell | Run any PowerShell script/command (hidden). { script, cwd?, timeoutMs? } |
list_services | List services, optional filter wildcard. |
get_service | Detailed status of one service by name. |
control_service | start / stop / restart / status a service. |
system_info | OS, CPU, memory, and per-drive disk summary. |
ssh_exec | Run a command on a remote host over SSH, fully in-process (no ssh.exe, no WSL — works headless). { host, username, command, port?, privateKeyPath?, passphrase?, password?, timeoutMs? } |
winrm_exec | Run a command on a remote Windows host via PowerShell Remoting (WinRM / Invoke-Command). No SSH server or agent needed on the target. { computerName, command, username?, password?, useSsl?, authentication?, timeoutMs? } |
sftp_upload | Upload a local file to a remote host over SFTP, in-process (ssh2 — no scp.exe/WSL, headless). { localPath, remotePath, host, username, port?, privateKeyPath?, passphrase?, password?, timeoutMs? } |
sftp_download | Download a remote file to this host over SFTP, in-process. Same params as sftp_upload. |
Real calls, real output — headless, no console window, structured results:
# ssh_exec — run a command on a Linux box, in-process (no ssh.exe, no WSL)
> ssh_exec host=192.168.0.5 username=isak command="uptime; systemctl is-active app"
$ ssh isak@192.168.0.5 (exit=0, 818ms)
2 days, 23:53, load average: 0.00, 0.01, 0.04
active
# sftp_upload — deploy a file, in-process (no scp.exe)
> sftp_upload localPath=C:\deploy\app.py remotePath=/home/isak/app.py host=192.168.0.5 ...
sftp upload: C:\deploy\app.py → isak@192.168.0.5:/home/isak/app.py
OK (9129 bytes, 714ms)
powershell-mcp manages more than the local box. Windows' own ssh.exe produces no capturable output when run from a windowless/background process, and shipping WSL to every server doesn't scale — so remote exec is built in:
ssh_exec uses the pure-JS ssh2 client (no external binary), so it works headless and needs nothing on the target beyond an SSH server. Ideal for Linux hosts.winrm_exec uses native PowerShell Remoting, so a Windows fleet needs only WinRM enabled — no per-server install.npm install
npm run build
Then register it with your MCP host. For Claude Desktop, add to claude_desktop_config.json (see examples/):
{
"mcpServers": {
"powershell": { "command": "node", "args": ["C:\\path\\to\\powershell-mcp\\dist\\index.js"] }
}
}
npm run dev # run from source (tsx)
npm test # unit + (where a shell is present) integration tests
npm run typecheck
CI runs build + tests on both windows-latest and ubuntu-latest.
control_service and many commands require the MCP host process to run with sufficient privileges.MIT © IMR Research & Development (UK)
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.