188 lines
3.7 KiB
Markdown
188 lines
3.7 KiB
Markdown
# ESXi MCP Server
|
||
|
||
一个基于 MCP (Machine Control Protocol) 的 VMware ESXi/vCenter 管理服务器,提供简单的 REST API 接口来管理虚拟机。
|
||
|
||
## 功能特性
|
||
|
||
- 支持 ESXi 和 vCenter Server 连接
|
||
- 提供基于 SSE (Server-Sent Events) 的实时通信
|
||
- RESTful API 接口,支持 JSON-RPC
|
||
- 支持 API 密钥认证
|
||
- 完整的虚拟机生命周期管理
|
||
- 实时性能监控
|
||
- 支持 SSL/TLS 安全连接
|
||
- 灵活的配置选项(YAML/JSON/环境变量)
|
||
|
||
## 主要功能
|
||
|
||
- 虚拟机管理
|
||
- 创建虚拟机
|
||
- 克隆虚拟机
|
||
- 删除虚拟机
|
||
- 开机/关机操作
|
||
- 列出所有虚拟机
|
||
- 性能监控
|
||
- CPU 使用率
|
||
- 内存使用情况
|
||
- 存储空间使用
|
||
- 网络流量统计
|
||
|
||
## 安装要求
|
||
|
||
- Python 3.7+
|
||
- pyVmomi
|
||
- PyYAML
|
||
- uvicorn
|
||
- mcp-core (Machine Control Protocol 核心库)
|
||
|
||
## 快速开始
|
||
|
||
1. 安装依赖:
|
||
|
||
```bash
|
||
pip install pyvmomi pyyaml uvicorn mcp-core
|
||
```
|
||
|
||
2. 创建配置文件 `config.yaml`:
|
||
|
||
```yaml
|
||
vcenter_host: "your-vcenter-ip"
|
||
vcenter_user: "administrator@vsphere.local"
|
||
vcenter_password: "your-password"
|
||
datacenter: "your-datacenter" # 可选
|
||
cluster: "your-cluster" # 可选
|
||
datastore: "your-datastore" # 可选
|
||
network: "VM Network" # 可选
|
||
insecure: true # 是否跳过SSL证书验证
|
||
api_key: "your-api-key" # API访问密钥
|
||
log_file: "./logs/vmware_mcp.log" # 日志文件路径
|
||
log_level: "INFO" # 日志级别
|
||
```
|
||
|
||
3. 运行服务器:
|
||
|
||
```bash
|
||
python server.py -c config.yaml
|
||
```
|
||
|
||
## API 接口
|
||
|
||
### 认证
|
||
|
||
所有需要权限的操作都需要先进行认证:
|
||
|
||
```http
|
||
POST /sse/messages
|
||
Authorization: Bearer your-api-key
|
||
```
|
||
|
||
### 主要工具接口
|
||
|
||
1. 创建虚拟机
|
||
```json
|
||
{
|
||
"name": "vm-name",
|
||
"cpu": 2,
|
||
"memory": 4096,
|
||
"datastore": "datastore-name",
|
||
"network": "network-name"
|
||
}
|
||
```
|
||
|
||
2. 克隆虚拟机
|
||
```json
|
||
{
|
||
"template_name": "source-vm",
|
||
"new_name": "new-vm-name"
|
||
}
|
||
```
|
||
|
||
3. 删除虚拟机
|
||
```json
|
||
{
|
||
"name": "vm-name"
|
||
}
|
||
```
|
||
|
||
4. 电源操作
|
||
```json
|
||
{
|
||
"name": "vm-name"
|
||
}
|
||
```
|
||
|
||
### 资源监控接口
|
||
|
||
获取虚拟机性能数据:
|
||
```http
|
||
GET vmstats://{vm_name}
|
||
```
|
||
|
||
## 配置说明
|
||
|
||
| 配置项 | 说明 | 必填 | 默认值 |
|
||
|--------|------|------|--------|
|
||
| vcenter_host | vCenter/ESXi服务器地址 | 是 | - |
|
||
| vcenter_user | 登录用户名 | 是 | - |
|
||
| vcenter_password | 登录密码 | 是 | - |
|
||
| datacenter | 数据中心名称 | 否 | 自动选择第一个 |
|
||
| cluster | 集群名称 | 否 | 自动选择第一个 |
|
||
| datastore | 存储名称 | 否 | 自动选择最大可用空间 |
|
||
| network | 网络名称 | 否 | VM Network |
|
||
| insecure | 是否跳过SSL验证 | 否 | false |
|
||
| api_key | API访问密钥 | 否 | - |
|
||
| log_file | 日志文件路径 | 否 | 控制台输出 |
|
||
| log_level | 日志级别 | 否 | INFO |
|
||
|
||
## 环境变量支持
|
||
|
||
所有配置项都支持通过环境变量设置,环境变量名称规则:
|
||
- VCENTER_HOST
|
||
- VCENTER_USER
|
||
- VCENTER_PASSWORD
|
||
- VCENTER_DATACENTER
|
||
- VCENTER_CLUSTER
|
||
- VCENTER_DATASTORE
|
||
- VCENTER_NETWORK
|
||
- VCENTER_INSECURE
|
||
- MCP_API_KEY
|
||
- MCP_LOG_FILE
|
||
- MCP_LOG_LEVEL
|
||
|
||
## 安全建议
|
||
|
||
1. 生产环境建议:
|
||
- 使用有效的SSL证书
|
||
- 启用API密钥认证
|
||
- 设置适当的日志级别
|
||
- 限制API访问范围
|
||
|
||
2. 测试环境可以:
|
||
- 设置 insecure: true 跳过SSL验证
|
||
- 使用更详细的日志级别(DEBUG)
|
||
|
||
## 许可证
|
||
|
||
MIT License
|
||
|
||
## 贡献指南
|
||
|
||
欢迎提交 Issue 和 Pull Request!
|
||
|
||
## 更新日志
|
||
|
||
### v0.0.1
|
||
- 初始版本发布
|
||
- 基本的虚拟机管理功能
|
||
- SSE 通信支持
|
||
- API 密钥认证
|
||
- 性能监控
|
||
|
||
## 作者
|
||
|
||
Bright8192
|
||
|
||
## 致谢
|
||
|
||
- VMware pyvmomi 团队
|
||
- MCP Protocol 开发团队 |