🚀 超級Windows CLI MCP服務器
超級Windows CLI MCP服務器是Windows CLI MCP服務器的增強分支,可通過命令行界面(MCP)為Windows環境提供不受限制的系統訪問權限。
🔍 項目基礎
本項目基於 win-cli-mcp-server,由SimonB97開發。
⚠️ 重要安全警告 ⚠️
本服務器設計為在Windows上以系統級權限運行,這使其能夠完全且不受限制地訪問整個操作系統,包括所有文件、進程和配置設置。
- 請勿在未充分了解授予系統級訪問權限的影響之前安裝或運行此服務器。
- 僅在您能完全控制網絡訪問的高度可信環境中使用此服務器。
- 網絡安全至關重要:由於應用程序級別的限制設計得較少,因此要高度依賴防火牆、網絡分段和嚴格的訪問控制列表(ACL)來保護運行此服務器的計算機。
- 仔細審查配置:密切關注
config.json 中的 allowedPaths、blockedCommands 和其他安全設置。配置錯誤很容易使您的系統暴露風險。
請謹慎使用此軟件,並自行承擔風險。維護者對因使用此軟件而導致的濫用或安全漏洞不承擔任何責任。
✨ 主要特性
- 可完全訪問Windows shell環境(PowerShell、CMD、Git Bash - 可配置)。
- 可不受限制地執行命令(可通過
config.json 配置)。
- 可完全訪問文件系統(可通過
config.json 配置)。
- 可通過NSSM以系統級服務形式安裝,實現持久化和自動恢復。
- NSSM提供自動服務恢復功能。
- 具備網絡綁定控制(有此設計,但主要在網絡/防火牆級別進行管理)。
- 禁用PowerShell遙測功能,增強隱私保護。
- 為提高性能,可重用進程(針對shell)。
- 為長時間運行的操作設置了可配置的延長超時時間。
📦 安裝指南
前提條件
在開始之前,請確保已安裝以下軟件:
- Node.js:版本18.0.0或更高。可從 nodejs.org 下載(包含npm)。
- NSSM(Non-Sucking Service Manager):可靠安裝服務所必需。可從 nssm.cc 下載最新版本。
使用NSSM安裝(推薦)
此方法會將服務器作為持久的Windows服務安裝,該服務以系統權限運行並自動啟動。
- 克隆或下載項目:
- 克隆此倉庫:
git clone <repository-url>
- 或者下載源代碼
.zip 文件,並將其解壓到合適的位置(例如 C:\Servers\SuperWinCLIServer)。避免使用用戶配置文件文件夾。
- 放置NSSM:
- 從 nssm.cc 下載NSSM。
- 解壓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" - 請使用雙反斜槓 \\)。由於服務以系統身份運行,因此路徑必須對該賬戶有效。
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事件查看器(應用程序和系統日誌)以查找錯誤。
📚 詳細文檔
配置文件 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:在 enableInjectionProtection 為 true 時,用於阻止此特定shell命令中的字符串/字符數組。
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 文件。