超级Win CLI管理服务器
一个命令行界面服务器,它以SYSTEM级权限为Windows环境提供无限制的系统访问,允许对文件、进程和配置设置进行完全控制。
服务介绍
Super Windows CLI MCP Server
这是 Windows CLI MCP 服务器的一个增强版本,通过命令行界面 (MCP) 提供对 Windows 环境的无限制系统访问。
基于: win-cli-mcp-server 由 SimonB97 创建。
⚠️ 重要安全警告 ⚠️
此服务器设计为在 Windows 上以 SYSTEM 级别权限 运行。这赋予它对整个操作系统(包括所有文件、进程和配置设置)的完全且无限制的访问权。
- 不要 安装或运行此服务器,除非您完全理解授予 SYSTEM 级别访问权的影响。
- 仅 在您完全控制网络访问的 高度受信任环境 中使用此服务器。
- 网络安全至关重要: 由于应用程序级别的限制设计得非常少,请依赖防火墙、网络分段和严格的访问控制列表 (ACLs) 来保护运行此服务器的机器。
- 仔细检查配置: 请特别注意
config.json中的allowedPaths、blockedCommands和其他安全设置。配置错误很容易使您的系统暴露在外。
负责任地使用此软件,并自行承担风险。维护者不对因使用此软件而造成的滥用或安全漏洞承担责任。
功能
- 对 Windows shell 环境(PowerShell、CMD、Git Bash - 可配置)的完全访问。
- 无限制的命令执行(可通过
config.json配置)。 - 对文件系统的完全访问(可通过
config.json配置)。 - 通过 NSSM 进行 SYSTEM 级别的服务安装,以实现持久性和自动恢复。
- 由 NSSM 提供的自动服务恢复功能。
- 网络绑定控制(意图如此,但主要在网络/防火墙级别管理)。
- 禁用 PowerShell 的遥测功能以增强隐私。
- 为了性能重用进程(对于 shell)。
- 对长时间运行操作的扩展超时时间(可配置)。
前提条件
开始之前,请确保已安装以下内容:
- Node.js: 版本 18.0.0 或更高。从 nodejs.org 下载。(包含 npm)。
- NSSM (Non-Sucking Service Manager): 用于可靠的服务安装。从 nssm.cc 下载最新版本。
安装(使用 NSSM - 推荐)
此方法将服务器安装为一个持久的 Windows 服务,该服务以 SYSTEM 权限运行并自动启动。
-
克隆或下载:
- 克隆此仓库:
git clone <repository-url> - 或者下载源代码的
.zip文件并将其解压到一个合适的位置(例如,C:\Servers\SuperWinCLIServer)。避免使用用户配置文件夹。
- 克隆此仓库:
-
放置 NSSM:
- 从 nssm.cc 下载 NSSM。
- 解压 zip 文件。
- 从适当的架构文件夹(
win32或win64)中复制nssm.exe文件到本项目的根目录(与install-service.ps1文件相同的文件夹)。
-
安装依赖项并构建:
- 在项目的根目录下打开终端(PowerShell 或 CMD)。
- 运行:
npm install - 该命令会安装必要的 Node.js 包,并自动运行
npm run build将 TypeScript 代码编译到dist文件夹中。
-
配置
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文件。
- 复制: 复制
-
运行安装脚本:
- 以管理员身份打开 PowerShell。
- 导航到项目的根目录(
cd C:\Servers\SuperWinCLIServer)。 - 执行安装脚本:
.\install-service.ps1 - 该脚本使用 NSSM 安装并配置
MCPServer服务,使其以LocalSystem身份运行node.exe dist/index.js,并设置为自动启动。
-
验证服务状态:
- 在同一个管理员 PowerShell 窗口中,运行:
Get-Service MCPServer - 状态应为
Running。如果是Stopped,请检查 NSSM 日志或 Windows 事件查看器(应用程序和服务日志)中的错误。
- 在同一个管理员 PowerShell 窗口中,运行:
配置 (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_execute和ssh_disconnect工具。connections: 包含命名连接配置的对象(主机、端口、用户名、密码/私钥路径)。
- 配置合并: 当加载
config.json时,如果它包含security或shells部分,则该整个部分替换该部分的默认配置。它不会在security或shells内部合并单个字段。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)
- 以管理员身份打开 PowerShell。
- 导航到项目的根目录。
- 执行卸载脚本:
.\uninstall-service.ps1 - 这将使用 NSSM 停止并移除
MCPServer服务。
替代执行方式(手动/调试)
您可以直接运行服务器,而无需将其安装为服务,以便进行测试或调试:
- 确保已运行
npm install。 - 确保
config.json存在并且已配置。 - 在项目根目录下打开一个普通终端(PowerShell/CMD)。
- 运行:
npm run start - 服务器将在前台运行。按
Ctrl + C停止它。
许可证
本项目根据 MIT 许可证发布 - 有关详细信息,请参阅 LICENSE 文件。