WindowsInstall MCP
by kaip-c
README.md
# WindowsInstall MCP
基于 MCP (Model Context Protocol) 的 Windows 批量部署管理工具,支持远程重启、PXE 重装、定时任务等功能。
## 功能概览
| 功能 | 说明 |
|------|------|
| 机器管理 | 查看、添加、修改、删除机器配置 |
| WinRM 远程操作 | 通过 WinRM 重启远程 Windows 机器 |
| PXE 重装 | 通过 iVentoy + WinRM 实现无人值守重装 |
| 定时任务 | 定时重启/重装,到时间自动执行 |
| TrustedHosts 管理 | 自动管理 WinRM 信任列表 |
## 环境要求
- Windows 10/11 或 Windows Server
- Python 3.10+
- PowerShell 5.1+
- **管理员权限**AI 客户端需以管理员身份运行
- WinRM 已启用(运行 `winrm quickconfig` 或在 PowerShell 中执行以下命令):
```powershell
Enable-PSRemoting -Force
Set-Item WSMan:\localhost\Client\TrustedHosts * -Concatenate -Force
```
- iVentoy 已安装并在运行(PXE 重装功能依赖,默认监听 `http://127.0.0.1:26000`)
## 前置配置
### 1. 生成机器凭据
MCP 会通过 PowerShell `Export-Clixml` 自动生成 `<机器名>.credential.xml` 加密文件,用于 WinRM 认证。
> **注意**:同一个 Windows 用户创建的 XML 才能读取。MCP Server 需以创建凭据的同一用户身份运行。如果换人使用这台 MCP Server,需要重新为所有机器生成凭据。
通过 MCP 对话添加机器(推荐),MCP 会自动生成凭据文件并写入 `machines.json`:
```
添加 PC-03
IP 是 172.30.8.203
MAC 是 AA-BB-CC-DD-EE-03
用户名 public
密码 123456
```
也可以手动编辑 `machines.json`,但需要先生成凭据文件:
```json
{
"PC-01": {
"ip": "172.30.8.200",
"mac": "AA-BB-CC-DD-EE-01",
"credential_file": "PC-01.credential.xml"
}
}
```
### 2. MCP 客户端配置
详见 [根目录 README](../README.md)。
## 功能用法
### 查看机器
```
查看所有电脑
查看 PC-01
```
### 添加机器
```
添加 PC-03
IP 是 172.30.8.203
MAC 是 AA-BB-CC-DD-EE-03
用户名 public
密码 123456
```
也可以一次提供多台机器的信息。
### 修改机器
```
把 PC-01 的 IP 改成 172.30.8.201
把 PC-01 的 MAC 改成 AA-BB-CC-DD-EE-02
更新 PC-01 的登录凭据,用户名 public,密码 123456
```
### 删除机器
```
删除 PC-01
同时删除 PC-01 和 PC-02
```
### 重启机器
```
重启 PC-01
同时重启 PC-01、PC-02、PC-03
```
### 重装机器(PXE 无人值守安装)
```
重装 PC-01
同时重装 PC-01 和 PC-02
```
流程:添加 MAC 到 iVentoy → 等待 60 秒自动移除 → WinRM 重启 → PXE 启动 → 无人值守安装。
### 定时重启
```
2026-08-19 02:00 重启 PC-01
2026-08-19 02:00 同时重启 PC-01 和 PC-02
```
时间格式:`YYYY-MM-DD HH:MM`
### 定时重装
```
2026-08-19 03:00 重装 PC-01
2026-08-19 03:00 同时重装 PC-01、PC-02、PC-03
```
### 查看/取消定时任务
```
查看所有定时任务
取消任务 MCP_Reboot_20260819_0200_xxxxxxxx
取消 MCP_Reboot_xxx 和 MCP_Reinstall_xxx
取消全部定时任务
```
### 查看 TrustedHosts
```
查看 TrustedHosts
```
## 项目结构
```
.
├── server.py # MCP Server 主程序
├── machines.json # 机器配置(本地 JSON 文件存储)
├── scheduled_tasks.json # 定时任务记录(本地 JSON 文件存储)
├── scheduled_jobs/ # 定时任务详情(本地 JSON 文件存储)
├── *.credential.xml # 认证凭据(本地加密 XML 文件)
├── mcp.json # MCP 客户端连接配置
├── requirements.txt # Python 依赖
└── README.md
```
## 安全说明
- **凭证文件**:`*.credential.xml` 使用 PowerShell `Export-Clixml` 加密,仅创建者可读取
- **敏感文件已加入 `.gitignore`**:`.credential.xml`、`machines.json`、`scheduled_tasks.json` 不会被提交到 Git
- **运行用户**:MCP Server 需以创建凭据的同一 Windows 用户身份运行。不同用户创建的凭据互不兼容,换人使用需重新生成所有凭据
- **网络暴露**:iVentoy API 默认监听 `127.0.0.1:26000`,仅限本机访问。如需远程调用,请确认防火墙规则
## License
MIT
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues