Windows命令行服务器

一个提供Windows系统命令行访问权限的增强型服务器,支持PowerShell、CMD和Git Bash等环境,需谨慎使用以避免安全风险。

  • by Faucet94
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 faucet94/super-win-cli-mcp-server

使用说明

超级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)。
  • 长时间运行操作的延长超时(可配置)。

先决条件

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

  1. Node.js: 版本18.0.0或更高版本。下载自 nodejs.org(包括npm)。
  2. NSSM(非吸吮服务经理): 需要可靠的服务安装。从下载最新版本 nssm.cc.

安装(使用NSSM-推荐)

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

  1. 克隆或下载:

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

    • 从下载NSSM nssm.cc.
    • 解压缩zip文件。
    • 复制 nssm.exe 从相应的体系结构文件夹中选择文件(win32 或 win64)进入 根目录 此项目的(与相同的文件夹 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 要运行的服务 node.exe dist/index.js 像 LocalSystem,自动启动。
  6. 验证服务状态:

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

配置(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 或 shellsThe ssh 该部分被更精细地合并。确保您的 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)

  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许可证获得许可-请参阅 许可证 文件以获取详细信息。