MCP PowerShell服务器
用于在Windows上执行PowerShell命令的内存优化MCP服务器。
为什么存在
创建此服务器是为了解决一个常见的Windows开发问题:许多AI编码助手(如Claude Code)试图通过Bash在Windows上执行PowerShell命令,但由于Bash不理解PowerShell语法而失败。此服务器通过适当的引用、路径处理和内存优化提供直接的PowerShell执行。
而不是与Bash翻译层斗争或不断提醒AI使用 cmd.exe,此MCP服务器为AI助手提供了对PowerShell的直接、可靠访问,以及他们所需的所有Windows特定功能。
特性
- 仅使用-EncodedCommand执行PowerShell,以实现可靠的引用
- 内存优化,默认输出限制为64KB,最大2MB
- 基于缓冲区的输出处理,防止内存泄漏
- 使用taskkill/t/f杀死进程树
- 超时保护(默认60秒,最长10分钟)
- 跨平台MCP客户端兼容性
安装
npm install用法
启动服务器
node mcp-shell-server.mjs使用MCP客户端进行配置
添加到您的MCP客户端配置中(例如,Gemini CLI settings.json):
{
"mcpServers": {
"mcp-powershell-server": {
"command": "node",
"args": ["path/to/mcp-shell-server/mcp-shell-server.mjs"],
"env": {
"MCP_SHELL_EXE": "pwsh.exe" // Optional: override shell executable
}
}
}
}工具:run_shell_command
执行具有内存和超时保护的PowerShell命令。
参数
command(必需):要执行的PowerShell命令/脚本cwd(可选):工作目录timeoutMs(可选):超时(毫秒)(最多10分钟)maxOutputBytes(可选):每个流的最大输出字节数(默认64KB,最大2MB)
响应
{
"stdout": "...",
"stderr": "...",
"exitCode": 0,
"signal": null,
"truncated": false,
"timedOut": false,
"platform": "win32",
"shell": "pwsh.exe"
}例子
列出文件
{
"command": "Get-ChildItem -Path ."
}获取系统信息
{
"command": "Get-ComputerInfo"
}具有自定义超时和输出限制
{
"command": "Get-Process",
"timeoutMs": 30000,
"maxOutputBytes": 128000
}内存优化
- 默认输出限制:每个流64KB
- 最大输出限制:每个流2MB
- 缓冲区块而不是字符串连接
- 自动清理事件侦听器
- 进程树在超时/截断时终止
安全说明
- 命令以用户权限运行
- MCP命令绕过PowerShell执行策略
- 考虑实施命令白名单以供生产使用
- 如果需要,使用工作目录限制
环境变量
MCP_SHELL_EXE:覆盖PowerShell可执行文件(pwsh.exe或PowerShell.exe)- 标准环境变量传递给子进程
需求
- Node.js 18+
- Windows操作系统
- PowerShell(建议使用pwsh.exe)
许可证
麻省理工学院
