超级Win CLI管理服务器

@Faucet94/super-win-cli-mcp-server
0 Stars 37 次浏览 Faucet94 更新于 2026-08-23

一个命令行界面服务器,它以SYSTEM级权限为Windows环境提供无限制的系统访问,允许对文件、进程和配置设置进行完全控制。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

Super Windows CLI MCP Server

这是 Windows CLI MCP 服务器的一个增强版本,通过命令行界面 (MCP) 提供对 Windows 环境的无限制系统访问。

基于: win-cli-mcp-server 由 SimonB97 创建。


⚠️ 重要安全警告 ⚠️

此服务器设计为在 Windows 上以 SYSTEM 级别权限 运行。这赋予它对整个操作系统(包括所有文件、进程和配置设置)的完全且无限制的访问权

  • 不要 安装或运行此服务器,除非您完全理解授予 SYSTEM 级别访问权的影响。
  • 在您完全控制网络访问的 高度受信任环境 中使用此服务器。
  • 网络安全至关重要: 由于应用程序级别的限制设计得非常少,请依赖防火墙、网络分段和严格的访问控制列表 (ACLs) 来保护运行此服务器的机器。
  • 仔细检查配置: 请特别注意 config.json 中的 allowedPathsblockedCommands 和其他安全设置。配置错误很容易使您的系统暴露在外。

负责任地使用此软件,并自行承担风险。维护者不对因使用此软件而造成的滥用或安全漏洞承担责任。


功能

  • 对 Windows shell 环境(PowerShell、CMD、Git Bash - 可配置)的完全访问。
  • 无限制的命令执行(可通过 config.json 配置)。
  • 对文件系统的完全访问(可通过 config.json 配置)。
  • 通过 NSSM 进行 SYSTEM 级别的服务安装,以实现持久性和自动恢复。
  • 由 NSSM 提供的自动服务恢复功能。
  • 网络绑定控制(意图如此,但主要在网络/防火墙级别管理)。
  • 禁用 PowerShell 的遥测功能以增强隐私。
  • 为了性能重用进程(对于 shell)。
  • 对长时间运行操作的扩展超时时间(可配置)。

前提条件

开始之前,请确保已安装以下内容:

  1. Node.js: 版本 18.0.0 或更高。从 nodejs.org 下载。(包含 npm)。
  2. NSSM (Non-Sucking Service Manager): 用于可靠的服务安装。从 nssm.cc 下载最新版本。

安装(使用 NSSM - 推荐)

此方法将服务器安装为一个持久的 Windows 服务,该服务以 SYSTEM 权限运行并自动启动。

  1. 克隆或下载:

    • 克隆此仓库:git clone <repository-url>
    • 或者下载源代码的 .zip 文件并将其解压到一个合适的位置(例如,C:\Servers\SuperWinCLIServer)。避免使用用户配置文件夹。
  2. 放置 NSSM:

    • nssm.cc 下载 NSSM。
    • 解压 zip 文件。
    • 从适当的架构文件夹(win32win64)中复制 nssm.exe 文件到本项目的根目录(与 install-service.ps1 文件相同的文件夹)。
  3. 安装依赖项并构建:

    • 在项目的根目录下打开终端(PowerShell 或 CMD)。
    • 运行:npm install
    • 该命令会安装必要的 Node.js 包,并自动运行 npm run build 将 TypeScript 代码编译到 dist 文件夹中。
  4. 配置 config.json

    • 复制: 复制 config.sample.json 并将其命名为 config.json 放在项目的根目录中。
    • 编辑: 打开 config.json仔细检查和修改设置:
      • security.allowedPaths非常重要! 将示例路径更改为服务器实际需要访问的实际目录。为了安全起见,请尽可能具体。如果不确定,可以从项目目录本身开始(例如,"C:\\Servers\\SuperWinCLIServer" - 请记住双反斜杠 \\)。服务以 SYSTEM 身份运行,因此路径必须对该帐户有效。
      • security.blockedCommands / blockedArguments:查看默认列表。根据您的安全策略添加或删除命令/参数。
      • shells:启用/禁用 shell(PowerShell、CMD、Git Bash),并验证 command 路径(特别是对于 Git Bash)。
      • ssh:如果您打算使用 SSH 执行功能,请进行配置(默认情况下禁用)。
    • 保存 config.json 文件。
  5. 运行安装脚本:

    • 以管理员身份打开 PowerShell
    • 导航到项目的根目录(cd C:\Servers\SuperWinCLIServer)。
    • 执行安装脚本:.\install-service.ps1
    • 该脚本使用 NSSM 安装并配置 MCPServer 服务,使其以 LocalSystem 身份运行 node.exe dist/index.js,并设置为自动启动。
  6. 验证服务状态:

    • 在同一个管理员 PowerShell 窗口中,运行:Get-Service MCPServer
    • 状态应为 Running。如果是 Stopped,请检查 NSSM 日志或 Windows 事件查看器(应用程序和服务日志)中的错误。

配置 (config.json) 详细信息

  • security:
    • maxCommandLength: 命令字符串允许的最大字符数。
    • blockedCommands: 要阻止的命令名称数组(不带扩展名,不区分大小写)。
    • blockedArguments: 要阻止的确切参数数组(不区分大小写)。
    • allowedPaths: 关键设置。 绝对路径数组。如果 restrictWorkingDirectory 为 true,则只有工作目录以这些路径之一开头时,命令才能执行。路径在规范化后进行不区分大小写的比较。使用双反斜杠(例如,"C:\\Tools\\Scripts")。
    • restrictWorkingDirectory: 布尔值。如果为 true,则强制执行 allowedPaths 对工作目录的检查。强烈建议保持为 true
    • logCommands: 布尔值。如果为 true,则将执行的命令及其输出(截断后的)存储在内存中(最多 maxHistorySize 条)。
    • maxHistorySize: 保存在内存历史记录中的最大命令数量。
    • commandTimeout: 运行命令自动终止前的秒数。
    • enableInjectionProtection: 布尔值。如果为 true,则尝试阻止 shell 操作符(如 &, |, ; 等,具体取决于所使用的 shell)在命令中出现。
  • shells: 配置可用的本地 shell(powershell, cmd, gitbash)。
    • enabled: 布尔值。允许使用此 shell。
    • command: shell 可执行文件的路径。
    • args: 在用户命令之前传递给 shell 的默认参数数组。
    • blockedOperators: 要在此特定 shell 的命令中阻止的字符串/字符数组(当 enableInjectionProtection 为 true 时使用)。
  • ssh: 通过 SSH 配置远程命令执行。
    • enabled: 布尔值。启用 ssh_executessh_disconnect 工具。
    • connections: 包含命名连接配置的对象(主机、端口、用户名、密码/私钥路径)。
  • 配置合并: 当加载 config.json 时,如果它包含 securityshells 部分,则该整个部分替换该部分的默认配置。它不会在 securityshells 内部合并单个字段。ssh 部分则更细粒度地合并。如果你自定义了这些部分,请确保你的 config.json 包含这些部分所需的所有必要字段。

服务管理 (NSSM)

通过 install-service.ps1 安装后,你可以使用标准 Windows 工具或从项目目录中的管理员 PowerShell/CMD 使用 NSSM 命令来管理服务:

  • 启动: Start-Service MCPServer.\nssm.exe start MCPServer
  • 停止: Stop-Service MCPServer.\nssm.exe stop MCPServer
  • 重启: Restart-Service MCPServer.\nssm.exe restart MCPServer
  • 状态: Get-Service MCPServer.\nssm.exe status MCPServer
  • 编辑配置 (高级): .\nssm.exe edit MCPServer(打开 NSSM GUI 编辑器)
  • 查看配置: .\nssm.exe dump MCPServer

卸载 (NSSM)

  1. 以管理员身份打开 PowerShell
  2. 导航到项目的根目录。
  3. 执行卸载脚本:.\uninstall-service.ps1
  4. 这将使用 NSSM 停止并移除 MCPServer 服务。

替代执行方式(手动/调试)

您可以直接运行服务器,而无需将其安装为服务,以便进行测试或调试:

  1. 确保已运行 npm install
  2. 确保 config.json 存在并且已配置。
  3. 在项目根目录下打开一个普通终端(PowerShell/CMD)。
  4. 运行:npm run start
  5. 服务器将在前台运行。按 Ctrl + C 停止它。

许可证

本项目根据 MIT 许可证发布 - 有关详细信息,请参阅 LICENSE 文件。