使用说明
超级Windows CLI MCP服务器
Windows CLI MCP Server的增强分支,通过命令行界面(MCP)提供对Windows环境的无限制系统访问。
基于: win-cli-mcp服务器 SimonB97。
⚠️ 严重安全警告⚠️
此服务器旨在与以下设备一起运行 系统级权限 在Windows上。这赋予了它 完全和不受限制的访问 到整个操作系统,包括所有文件、进程和配置设置。
- 不要 除非您完全理解授予SYSTEM级访问权限的含义,否则请安装或运行此服务器。
- 仅 在中使用此服务器 高度信任的环境 您可以完全控制网络访问。
- 网络安全至关重要: 由于应用程序级限制在设计上是最小的,因此严重依赖防火墙、网络分段和严格的访问控制列表(ACL)来保护运行此服务器的机器。
- 仔细检查配置: 密切关注
allowedPaths,blockedCommands,以及中的其他安全设置config.json。配置错误很容易暴露您的系统。
负责任地使用本软件,并自行承担风险。维护人员对因使用而导致的误用或安全漏洞不承担任何责任。
特性
- 完全访问Windows shell环境(PowerShell、CMD、Git Bash-可配置)。
- 无限制的命令执行(可通过配置
config.json). - 完全文件系统访问权限(可通过配置
config.json). - 通过NSSM安装系统级服务,以实现持久性和自动恢复。
- NSSM提供的自动服务恢复功能。
- 网络绑定控制(预期,但主要在网络/防火墙级别进行管理)。
- 禁用PowerShell遥测以增强隐私。
- 流程重用以提高性能(用于shell)。
- 长时间运行操作的延长超时(可配置)。
先决条件
在开始之前,请确保已安装以下内容:
- Node.js: 版本18.0.0或更高版本。下载自 nodejs.org(包括npm)。
- NSSM(非吸吮服务经理): 需要可靠的服务安装。从下载最新版本 nssm.cc.
安装(使用NSSM-推荐)
此方法将服务器安装为以SYSTEM权限运行并自动启动的持久Windows服务。
-
克隆或下载:
- 克隆此存储库:
git clone <repository-url> - 或者下载源代码
.zip并将其提取到合适的位置(例如。,C:\Servers\SuperWinCLIServer).避免使用用户配置文件文件夹。
- 克隆此存储库:
-
地点NSSM:
- 从下载NSSM nssm.cc.
- 解压缩zip文件。
- 复制
nssm.exe从相应的体系结构文件夹中选择文件(win32或win64)进入 根目录 此项目的(与相同的文件夹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要运行的服务node.exe dist/index.js像LocalSystem,自动启动。
-
验证服务状态:
- 在同一个PowerShell管理窗口中,运行:
Get-Service MCPServer - 状态应该是
Running如果是Stopped,检查NSSM日志或Windows事件查看器(应用程序和系统日志)是否有错误。
- 在同一个PowerShell管理窗口中,运行:
配置(config.json)详细信息
security:maxCommandLength:命令字符串中允许的最大字符数。blockedCommands:要阻止的命令名数组(不带扩展名)(不区分大小写)。blockedArguments:要阻止的精确参数数组(不区分大小写)。allowedPaths: 关键设置。 绝对路径数组。如果restrictWorkingDirectory如果为true,则只有当命令的工作目录以这些路径之一开头时,才能执行命令。归一化后,路径的比较不区分大小写。使用双反睫毛(例如。,"C:\\Tools\\Scripts").restrictWorkingDirectory:布尔值。如果为真,则强制执行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是真的)。
ssh:通过SSH配置远程命令执行。enabled:布尔值。启用ssh_execute和ssh_disconnect工具。connections:包含命名连接配置(主机、端口、用户名、密码/privateKeyPath)的对象。
- 配置合并: 当
config.json如果它包含security或shells部分,整个部分 替换 该部分的默认配置。确实如此 不 合并内部的各个字段security或shellsThessh该部分被更精细地合并。确保您的config.json如果您对这些部分进行自定义,则包括它们的所有必要字段。
服务管理(NSSM)
一旦通过安装 install-service.ps1,您可以使用标准Windows工具或NSSM命令从 管理PowerShell/CMD 在项目目录中:
- 开始:
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许可证获得许可-请参阅 许可证 文件以获取详细信息。