MCP server for PowerShell
Disclaimer
Unofficial Implementation: This project is an independent open-source software project. It is not affiliated with, endorsed by, sponsored by, or associated with Microsoft Corporation or the PowerShell team.
Trademarks: "PowerShell" and the PowerShell logo are trademarks or registered trademarks of Microsoft Corporation in the United States and/or other countries. All other trademarks cited herein are the property of their respective owners. Use of these names is for descriptive purposes only (nominative fair use) to indicate compatibility.
Installation
Run directly with :
uvx mcp-server-for-powershellpip:
pip install mcp-server-for-powershelluv:
uv pip install mcp-server-for-powershell
Configuration
The server can be configured using the following command-line arguments:
Argument | Description | Default |
| List of allowed PowerShell commands. If empty, all are allowed (subject to restrictions). |
|
| List of restricted PowerShell commands. | Safe defaults |
| List of restricted directories. | System directories |
| PowerShell Language Mode: |
|
| Initial working directory. | Current Directory |
Language Modes
0 (NoLanguage): No script execution allowed.
1 (ConstrainedLanguage): Restricts access to sensitive language elements (default).
2 (RestrictedLanguage): Only allows basic commands.
3 (FullLanguage): Unrestricted access.
Security Profiles
We recommend different configurations based on your security needs:
Default (Balanced)
By default, the server runs in ConstrainedLanguage mode with a curated blocklist of dangerous commands and restricted system directories. This provides "good enough" defaults for general use, preventing common dangerous operations while allowing most read-only and safe actions.
Safe Mode (Strict)
For environments requiring stricter controls, use NoLanguage mode (--language-mode 0). Only built-in commands and cmdlets can be executed.
Nuclear Mode (Allow-List Only)
For the highest security "nuclear" option, explicitly whitelist ONLY the commands you need (e.g., allow get-items only). This blocks everything else by default.
License
mcp-server-for-powershell is provided as-is under the MIT license.