ESXi MCP服务器
用于VMware ESXi管理的模型控制协议(MCP)服务器,为独立ESXi主机提供实时监控和信息检索功能。
特性
- 主机信息:具有实时使用指标的CPU、内存和存储统计信息
- 虚拟机管理:详细的VM信息,包括资源使用情况
- 数据存储管理:浏览并列出所有数据存储中的ISO/VMDK映像
- 实时监控:实时CPU和内存使用百分比
- 双模式操作:既可以作为MCP服务器运行,也可以作为独立的CLI工具运行
安装
先决条件
- Python 3.7+
- VMware vSphere API Python绑定
- FastMCP库
再进行
pip install pyvmomi fastmcp用法
作为MCP服务器
运行服务器以通过MCP公开ESXi管理工具:
python exsi-mcp-server.py作为CLI工具
直接从命令行查询ESXi信息:
# Get overall ESXi host information
python exsi-mcp-server.py --host 192.168.1.100 --user root --password yourpassword
# Get specific VM information
python exsi-mcp-server.py --host 192.168.1.100 --user root --password yourpassword --vm "VM-Name"MCP工具可用
当作为MCP服务器运行时,将公开以下工具:
1. get_esxi_info
检索有关ESXi主机的全面信息,包括:
- CPU内核、线程、速度和使用率百分比
- 内存大小和使用百分比
- 数据存储容量、可用空间和使用情况
- VM计数和基本VM信息
参数:
host:ESXi主机IP地址或FQDNuser:ESXi用户名(通常为“root”)password:ESXi密码
2. get_vm_info
获取特定虚拟机的详细信息。
参数:
host:ESXi主机IP地址或FQDNuser:ESXi用户名password:ESXi密码vm_name:虚拟机的名称
3. get_datastore_images
列出ESXi主机上所有数据存储中的所有ISO和VMDK文件。
参数:
host:ESXi主机IP地址或FQDNuser:ESXi用户名password:ESXi密码
输出示例
主机信息
{
"host": "192.168.1.100",
"cpu": {
"cores": 8,
"threads": 16,
"speed_GHz": 3.2,
"usage_pct": 25.4,
"usage_MHz": 2032
},
"memory": {
"total_GB": 64.0,
"usage_MB": 16384,
"usage_pct": 25.0
},
"storage": [
{
"name": "datastore1",
"capacity_GB": 500.0,
"free_GB": 350.2,
"used_pct": 29.96
}
],
"vm_count": 3,
"vms": [...]
}VM信息
{
"name": "Ubuntu-Server",
"cpu": 2,
"memory_MB": 4096,
"power_state": "poweredOn",
"guest_OS": "Ubuntu Linux (64-bit)",
"cpu_usage_MHz": 150,
"memory_usage_MB": 2048
}安全考虑
- 此工具对ESXi连接使用未经验证的SSL上下文
- 安全地存储凭据,避免硬编码密码
- 考虑使用环境变量或安全凭据存储
- 确保MCP服务器和ESXi主机之间的网络连接安全
配置
ESXi主机要求
- ESXi 6.0或更高版本
- 已启用SSH/neneneba API访问
- 具有适当权限的有效用户帐户
网络要求
- 端口443上与ESXi主机的网络连接(HTTPS)
- 允许从MCP服务器出站连接的防火墙规则
错误处理
该服务器包括全面的错误处理功能,用于:
- ESXi主机连接失败
- 身份验证错误
- 缺少虚拟机
- 数据存储访问问题
发展
项目结构
├── exsi-mcp-server.py # Main server implementation
└── README.md # This file关键功能
connect_esxi():建立与ESXi主机的连接get_host_object():检索ESXi主机系统对象fetch_esxi_info():收集全面的主机信息fetch_vm_info():检索特定VM详细信息fetch_datastore_images():列出数据存储内容
贡献
请随时提交问题、功能请求或拉取请求,以改进此ESXi MCP服务器。
许可证
这个项目是开源的。请确保遵守VMware的API使用条款和条件。
故障排除
常见问题
- 连接被拒绝:确保ESXi主机已启用API访问
- 认证失败:验证用户名和密码
- SSL错误:服务器为实验室环境设计使用未经验证的SSL上下文
- 找不到VM:检查VM名称拼写和区分大小写
调试提示
- 首先使用vSphere Client测试连接
- 通过ping验证ESXi主机的可访问性
- 检查ESXi日志中的身份验证尝试
- 确保正确安装Python依赖项
