PowerShell执行服务器

一个内存优化的MCP服务器,用于在Windows上执行PowerShell命令,适用于AI编码助手直接调用PowerShell的场景。

  • by saimanish1
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 saimanish1/mcp-powershell-server

使用说明

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)

许可证

麻省理工学院