ESXi MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ESXI_HOST | No | Credential override: ESXi host address | |
| ESXI_PORT | No | Credential override: ESXi port | |
| ESXI_USER | No | Credential override: ESXi username | |
| ESXI_CA_FILE | No | Private CA path | |
| ESXI_PASSWORD | No | Credential override: ESXi password | |
| ESXI_STATE_DIR | No | Private SQLite journal and staged transfer files; default beside config | |
| ESXI_AUDIT_FILE | No | Private audit location | |
| ESXI_VERIFY_SSL | No | TLS validation override | |
| ESXI_CONFIG_FILE | No | Private credentials file path. Defaults to ~/.config/esxi-mcp/credentials.json | ~/.config/esxi-mcp/credentials.json |
| ESXI_ENABLE_WRITES | No | Explicit ordinary write override; default false | false |
| ESXI_POLICY_PROFILE | No | Policy profile: read_only, operator (default), or administrator | operator |
| ESXI_CONNECT_TIMEOUT | No | API HTTP timeout (30s default) | 30 |
| ESXI_ENABLE_SSH_ADMIN | No | Optional ESXi SSH backend | |
| ESXI_PROTECTED_VM_IDS | No | Exact comma-separated management VM IDs | |
| ESXI_DEPLOY_CONFIG_FILE | No | Private deployment settings file path. Defaults to a sibling config.json (e.g., ~/.config/esxi-mcp/config.json) | ~/.config/esxi-mcp/config.json |
| ESXI_SSH_CREDENTIALS_FILE | No | Optional ESXi SSH backend and private credentials file path | |
| ESXI_LEASE_SESSION_TIMEOUT | No | Process-local task/lease retention upper bound, default 86400 seconds | 86400 |
| ESXI_ALLOW_PROTECTED_IMPACT | No | Deployment opt-in; a call must also explicitly allow protected impact | |
| ESXI_ENABLE_ADVANCED_WRITES | No | Additional API/upload/OVF/SSH write opt-in; default false | false |
| ESXI_ALLOW_MANAGEMENT_DISRUPTION | No | Deployment opt-in; a call must also acknowledge disruption |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| esxi_healthA | ESXi 主机整体健康状态(连接态/维护模式/overallStatus/uptime/quickStats 即时负载)。 |
| esxi_list_vmsA | 列出所有 VM(可按名称/IP 过滤)。内存字段为配置值,非物理内存占用。 |
| esxi_get_vmC | 按 vm_id(MoRef)查询单台 VM 详情。 |
| esxi_host_summaryB | 主机容量摘要。quickstats_* 为物理已用量;VM 配置内存总和另列,勿混淆。 |
| esxi_list_datastoresD | – |
| esxi_list_networksD | – |
| esxi_list_snapshotsB | 递归列出指定 VM 的快照树,输出 snapshot_id。 |
| esxi_get_taskB | 查询异步任务状态:queued/running/success/error。 |
| esxi_power_vmA | 电源操作:power_on / shutdown(优雅,需Tools) / power_off / reboot_guest(需Tools) / reset。 |
| esxi_configure_vmB | 修改 CPU/内存(核数、MHz limit/reservation、MB limit/reservation)。未传字段不变。 |
| esxi_create_vmA | 创建 VM(明确名称/CPU/内存/磁盘/datastore/network/guest_id,使用正确 resourcePool)。 新建 VM 的 name 就是目标本身,无需额外 expected_name。datastore 和 network 必须 从查询结果中明确指定。创建空 VM,不安装操作系统;不包含 clone/migrate。 |
| esxi_rename_vmD | – |
| esxi_create_snapshotD | – |
| esxi_revert_snapshotD | – |
| esxi_delete_snapshotD | – |
| esxi_expand_diskC | 仅允许增长,由 device_key 精确定位;有快照时拒绝。 |
| esxi_delete_vmB | 删除 VM(必须已关机;dry-run 明示删除磁盘)。 |
| esxi_inventoryC | 列出 SDK 管理实体的准确类型/ID/名称:VM、HostSystem、Datastore、Network、Folder、ResourcePool。 |
| esxi_managersB | 发现服务与 HostConfigManager 的网络、存储、服务、防火墙、账户、硬件等管理器引用。 |
| esxi_api_schemaB | 查看官方 SDK 类型、属性、方法、参数及返回类型。SDK 包含的方法仍可能不被当前 ESXi 支持。 |
| esxi_api_getC | 读取发现引用的已声明属性;可查询硬件、PCI、VM 设备、网络、存储、服务、账户信息。秘密字段脱敏。 |
| esxi_api_invokeA | 高级类型化调用:覆盖服务器支持的 vSphere API 管理方法(网络/存储/硬件/服务/账户/guest/主机)。 先 managers/inventory → schema/get → dry_run。真实调用需要写开关、 ESXI_ENABLE_ADVANCED_WRITES=true、expected_target='准确_type:准确_moId'。 非 VM 对象的调用需 allow_disruption=true,可能影响主机/共享资源/管理链路。 直接 VM 引用仍受 protected_vm_ids 限制;共享资源修改须由调用者审查其依赖。 不执行任意 Python 或 shell。异步返回 task_id 后继续查询状态。 |
| esxi_datastore_transferA | Datastore 文件 stat/download/upload。可上传 ISO/OVF/VMDK 等文件(不等于部署完成)。 upload 用 base64 或 HTTPS source_url;默认只预览,真实写要求普通和高级写开关。 默认不覆盖,保护管理 VM 目录。URL 上传可流式接收大文件;max_bytes 最大 8GiB。 download 的 base64 响应最多 8MiB。服务端不读取任意本地文件。 |
| esxi_api_transferA | 处理 GuestFileManager 或 HttpNfcLease 返回的 HTTPS URL,完成 guest 文件/OVF-NFC 的 HTTP 阶段。 仅连接当前 ESXi 的 guestFile/NFC 路径。上传默认预览,执行需普通和高级写开关。 lease 传发现的 HttpNfcLease 引用以在下载源文件/上传时刷新进度,最后用 API 调用 Complete/Abort。 OVF 流式 VMDK 通常用 POST 和 application/x-vnd.vmware-streamVmdk;guest 文件用 PUT。 该工具不是一键 OS 安装器;guest 需要 Tools 和认证,OVA 需先取得描述符和独立磁盘数据。 |
| esxi_resource_schemaC | 专用资源操作目录和准确参数:network/datastore/storage/service/firewall/account/permissions/license/time/pci/certificate/patch/host。 |
| esxi_resource_getC | 按资源域直接查询状态,无需手工拼管理器 ID;只允许已声明属性。 |
| esxi_network_manageA | 专用 network 管理:switch_create, switch_update, switch_remove, portgroup_create, portgroup_update, portgroup_remove, vmkernel_create, vmkernel_update, vmkernel_remove, dns_update, route_update, routes_update, physical_link_update, configuration_update。先 resource_schema/get 和默认预览;实际执行精确 expected_host、写开关与依赖确认,支持 request_id 防止重复执行。 |
| esxi_datastore_manageA | 专用 datastore 管理:nfs_create, vmfs_create, vmfs_expand, vmfs_extend, remove, local_create, vvol_create, swap_update。先 resource_schema/get 和默认预览;实际执行精确 expected_host、写开关与依赖确认,支持 request_id 防止重复执行。 |
| esxi_storage_manageB | 专用 storage 管理:rescan, rescan_vmfs, vmfs_format, partition_update, vmfs_mount, vmfs_unmount, lun_attach, lun_detach, iscsi_enable, iscsi_discovery, iscsi_authentication, iscsi_send_targets_add, iscsi_send_targets_remove, multipath_policy, nvme_connect, nvme_disconnect。先 resource_schema/get 和默认预览;实际执行精确 expected_host、写开关与依赖确认,支持 request_id 防止重复执行。 |
| esxi_service_manageA | 专用 service 管理:start, stop, restart, startup_policy。先 resource_schema/get 和默认预览;实际执行精确 expected_host、写开关与依赖确认,支持 request_id 防止重复执行。 |
| esxi_firewall_manageB | 专用 firewall 管理:enable, disable, rules_update, default_policy。先 resource_schema/get 和默认预览;实际执行精确 expected_host、写开关与依赖确认,支持 request_id 防止重复执行。 |
| esxi_account_manageB | 专用 account 管理:create, update, remove, password_change。先 resource_schema/get 和默认预览;实际执行精确 expected_host、写开关与依赖确认,支持 request_id 防止重复执行。 |
| esxi_permissions_manageB | 专用 permissions 管理:role_create, role_update, role_remove, permission_set, permission_remove。先 resource_schema/get 和默认预览;实际执行精确 expected_host、写开关与依赖确认,支持 request_id 防止重复执行。 |
| esxi_license_manageA | 专用 license 管理:add, remove, update, labels_update。先 resource_schema/get 和默认预览;实际执行精确 expected_host、写开关与依赖确认,支持 request_id 防止重复执行。 |
| esxi_time_manageB | 专用 time 管理:configuration_update, clock_update。先 resource_schema/get 和默认预览;实际执行精确 expected_host、写开关与依赖确认,支持 request_id 防止重复执行。 |
| esxi_pci_manageA | 专用 pci 管理:configuration_update, refresh。先 resource_schema/get 和默认预览;实际执行精确 expected_host、写开关与依赖确认,支持 request_id 防止重复执行。 |
| esxi_certificate_manageA | 专用 certificate 管理:csr_create, csr_by_dn, install, ca_replace, notify_services。先 resource_schema/get 和默认预览;实际执行精确 expected_host、写开关与依赖确认,支持 request_id 防止重复执行。 |
| esxi_patch_manageA | 专用 patch 管理:check, scan, stage, install, uninstall, query。先 resource_schema/get 和默认预览;实际执行精确 expected_host、写开关与依赖确认,支持 request_id 防止重复执行。 |
| esxi_host_manageA | 专用 host 管理:maintenance_enter, maintenance_exit, reboot, shutdown, lockdown_enter, lockdown_exit, disconnect, reconnect。先 resource_schema/get 和默认预览;实际执行精确 expected_host、写开关与依赖确认,支持 request_id 防止重复执行。 |
| esxi_options_manageB | 专用 options 管理:update。先 resource_schema/get 和默认预览;实际执行精确 expected_host、写开关与依赖确认,支持 request_id 防止重复执行。 |
| esxi_dependenciesB | VM→网络/存储/文件依赖及管理 VMkernel 连接,供共享资源变更前审查。 |
| esxi_capabilitiesC | 实际主机版本、许可证、可发现管理器、工具操作目录及部署开关;不把 SDK schema 当作实测支持。 |
| esxi_operation_statusB | 持久化操作记录:submitted 任务可重新连接查询;中断的 executing 操作不自动重复。 |
| esxi_operation_historyB | 查询当前主机/账户的持久化操作清单;不会输出密码或 signed URL。 |
| esxi_vm_hardwareC | 增删/编辑虚拟磁盘、网卡、光驱、控制器、PCI 设备。device_changes 使用官方 VirtualDeviceSpec,保留其余 VM 配置。 |
| esxi_vm_registerB | 将已有 VMX 注册到该 ESXi 的 VM 文件夹与资源池;不创建或覆盖 VM 文件。 |
| esxi_transfer_startA | 后台流式 datastore/guest/NFC 下载或上传(最多64TiB显式上限,受暂存磁盘空间约束)。立即返回 job_id,status 查询,read_chunk 分块取回。 |
| esxi_transfer_statusB | 传输/暂存进度、字节数、校验和、错误;不输出 signed URL 或服务器任意路径。 |
| esxi_transfer_read_chunkA | 读取已完成的下载/暂存文件;每块最多1MiB,用offset拼接并核对最终SHA256。 |
| esxi_transfer_cancelA | 请求停止后台传输,保留部分数据;不会自动删除/覆盖远端文件。 |
| esxi_transfer_resumeA | 显式恢复失败/取消/中断传输。下载验证ETag/Last-Modified与Range;上传重新发送,远端已有文件需明确overwrite。NFC需原租约仍活着。 |
| esxi_stage_uploadB | 创建私有大文件暂存句柄;客户端随后write_chunk并finalize,不接收任意服务器本地路径。 |
| esxi_stage_write_chunkC | 追加<=1MiB块;相同offset/内容的重试幂等,拒绝空洞或覆盖不同内容。 |
| esxi_stage_finalizeC | 核对完整字节数及SHA256,完成暂存后可作为transfer_start的source_job_id。 |
| esxi_guest_processA | Guest 进程start/terminate:显式OS内路径和认证;start返回PID,再process_status查看exitCode。不会自动用ESXi shell替代guest。 |
| esxi_guest_process_statusB | 查询guest进程状态、PID、启动/结束时间与exitCode;只读,可检查受保护VM。 |
| esxi_guest_filesB | Guest 文件list/mkdir/delete/move/attributes/upload_url/download_url。HTTP传输用后台transfer_start(kind=guest),大文件不经LLM传整个base64。 |
| esxi_esxcli_queryC | 可选SSH后端的固定只读ESXCLI查询。查询白名单由服务器判断,不接受调用者自报read_only。 |
| esxi_esxcliB | ESXCLI完整argv入口,用于SDK之外的主机配置/补丁/驱动/存储操作。SSH默认关闭,执行需管理员、独立host-key校验与全部影响确认。 |
| esxi_shellB | 显式整台ESXi shell管理入口,仅administrator+SSH独立开关+管理链路/保护影响双重允许。任意shell无法做完整依赖推断,不自动重试。 |
| esxi_ovf_exportA | 完整OVF导出:VM须已关机,后台导出磁盘、生成OVF与SHA256 manifest,并Complete/Abort租约。operation_status查询,transfer_read_chunk取回files句柄。 |
| esxi_ovf_importA | 完整OVF导入:验证描述符/网络/数据存储/文件映射,后台NFC上传、完成租约;失败Abort,不删除已有VM。disks按OVF文件path映射source_job_id或HTTPS source_url。 |
| esxi_execute_planA | 后台顺序执行明确步骤;每步先预览,异步任务等到成功再下一步。可指定compensate,失败按逆序执行;不承诺原子回滚、不自动重试。 |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 63 tools
Most tools are named for a distinct domain (firewall, license, time, snapshots), but there is real overlap between the generic catch-alls (esxi_api_get, esxi_api_invoke, esxi_resource_get) and the specialized *_manage tools, plus four or more file-transfer paths (datastore_transfer, api_transfer, transfer_start/stage_upload, guest_files upload_url/download_url). Descriptions provide guidance ('managers/inventory → schema/get → dry_run'), which helps, but an agent can still reasonably misselect between the generic and domain-specific layers.
All names share the esxi_ prefix and snake_case, but the verb/noun ordering is inconsistent: verb_noun (esxi_list_vms, esxi_create_snapshot), noun_verb (esxi_transfer_start, esxi_stage_upload), noun-only (esxi_inventory, esxi_capabilities, esxi_managers), and bare verbs (esxi_shell, esxi_esxcli). Readable overall, but the mixed conventions reduce predictability.
63 tools is far above the practical range for reliable tool selection, and several clusters (transfer, API access, plans) could be consolidated. The breadth of ESXi management justifies many tools, but the count still creates a heavy selection surface with substantial redundancy.
The surface covers VM lifecycle (create/configure/power/delete/register/hardware), snapshots, datastores, networks, storage, services, firewall, accounts, permissions, license, time, PCI, certificates, patching, guest processes/files, OVF import/export, and raw esxcli/shell access. Only niche operations like VM clone/migrate are explicitly excluded, so coverage is effectively complete for standalone ESXi management.