powershell-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PWSH_MCP_EXE | No | Override the PowerShell executable path. Default is to prefer pwsh (PowerShell 7+) and fall back to powershell.exe. | |
| POWERSHELL_MCP_NO_TELEMETRY | No | Set to '1' to disable anonymous telemetry. | |
| POWERSHELL_MCP_TELEMETRY_URL | No | Override the telemetry endpoint URL. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| run_powershellA | Run a PowerShell script/command on this Windows host in a hidden process (no console window appears). Returns stdout, stderr and exit code. Use for any Windows command, file, or system task. |
| list_servicesA | List Windows services, optionally filtered by a name pattern. Returns Name, DisplayName, Status. |
| get_serviceA | Get detailed status of one Windows service by name. |
| control_serviceB | Start, stop, or restart a Windows service (requires the MCP host process to have sufficient privileges). |
| system_infoA | Return OS, CPU, memory and disk summary for this Windows host. |
| ssh_execA | Run a command on a remote host over SSH, fully in-process (no ssh.exe, no WSL — works headless). Use for Linux hosts or any OpenSSH target. Auth via privateKeyPath or password. Returns stdout, stderr, exit code. |
| winrm_execA | Run a command on a remote Windows host via PowerShell Remoting (WinRM / Invoke-Command). Native to Windows Server — no SSH server or agent needed on the target, only WinRM enabled. Output captured in-process (no console window). |
| sftp_uploadA | Upload a local file to a remote host over SFTP, in-process (ssh2 — no scp.exe, no WSL, headless). Use to deploy scripts/configs to Linux hosts. |
| sftp_downloadC | Download a file from a remote host to this Windows host over SFTP, in-process (ssh2 — no scp.exe, no WSL, headless). |
| run_programA | Run a native executable DIRECTLY (no shell) in a hidden process and capture clean stdout/stderr + exit code. Use this for console programs like gh, git, docker, node, python, etc. -- direct execution captures their stdout/stderr without PowerShell pipeline semantics. Historical hidden-shell native stdout loss is executable/environment-specific; it is not universal. Provide the program and an args array (no shell quoting needed). |
| start_remote_batchA | Opt-in process-local SSH/WinRM batch; 1–32 explicit targets, up to 8 concurrent, per-target deadline. No discovery or retry. SSH supports at most four explicit jumps. Unknown after server restart. |
| remote_batch_statusB | Read ordered per-target batch records; unavailable after process restart. |
| cancel_remote_batchB | Stop dispatch of queued targets; active targets become unknown, not confirmed terminated. |
| runtime_capabilitiesA | Read-only runtime package, protocol, supported and available engines, transports and limits; no identity, environment or secrets. |
| start_executionB | Start a local executable directly with durable idempotency and bounded output. No shell; remote targets unsupported. |
| execution_statusB | Read a local execution state. Unknown after restart means no automatic replay or verified ownership. |
| read_execution_outputB | Read a bounded base64 output page, including while running. |
| cancel_executionC | Request local cancellation. Windows confirms Job Object tree termination asynchronously; failures remain unknown. |
| read_output_logB | Read a bounded raw byte page from an opt-in session log; base64 encoded. Handles are process-local and expire after one hour. |
| delete_output_logC | Delete a session log by opaque handle. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 20 tools
Several tools overlap around execution: run_powershell, run_program, and start_execution all run local code/executables; ssh_exec/winrm_exec overlap with start_remote_batch for remote commands; read_execution_output and read_output_log both page output. Descriptions do distinguish shell vs direct, durable vs one-shot, and single vs batch, but an agent must carefully choose and misselection is plausible.
All names are snake_case, but the pattern is mixed: verb_noun (run_powershell, list_services, start_execution), noun_verb (ssh_exec, sftp_upload), noun-only (system_info, runtime_capabilities), and status suffixes (remote_batch_status, execution_status). Still readable, but not a predictable convention throughout.
20 tools sits in the heavy 16-25 band for a server whose core purpose could be served by fewer primitives. The remote batch, local execution lifecycle, and output-log management families each add surface area, and while most tools earn a role, the set feels over-expanded for the apparent scope.
Coverage is broad: local shell/direct execution, service inspection/control, system info, SSH/WinRM/SFTP remote operations, batch lifecycle, local execution lifecycle, and output log read/delete. Minor gaps such as remote file listing or richer service configuration exist but are workaroundable via run_powershell or ssh_exec.