Skip to main content
Glama
michaelrice
by michaelrice

vcenter-mcp

一个 Model Context Protocol 服务器,用于向 Claude Code 和其他 MCP 客户端公开 VMware vCenter / ESXi 虚拟机生命周期管理工具。基于 pyVmomi 构建。

功能

  • 列出 vCenter 数据中心(按主机分组)或独立 ESXi 主机上的虚拟机

  • 创建虚拟机(优先网络启动;支持精简或厚置备;ESXi 目标支持嵌套虚拟化选项)

  • 虚拟机开关机

  • 删除虚拟机(若正在运行则先关机,然后从磁盘销毁)

查找时可接受显示名称或 moref ID(例如 vm-42)——使用 moref 路径可跳过清单扫描,在大型环境中速度更快。

前置要求

  • Python 3.10 或更高版本

  • 可通过网络访问的 vCenter Server 或独立 ESXi 主机

  • 拥有执行所需操作权限的 vSphere 账户(list_vms 仅需只读权限;创建/删除操作需要相应的虚拟机和资源池权限)

安装

安装到项目本地的虚拟环境中。使用 venv 可以将 vcenter-mcp 及其依赖项(主要是 pyVmomi)与系统 Python 隔离开来。

从本仓库克隆后安装:

python3 -m venv .venv
.venv/bin/pip install --upgrade pip
.venv/bin/pip install -e .

开发环境安装(同时安装 pytest):

.venv/bin/pip install -e ".[dev]"

在本 README 中,命令均使用 .venv/bin/...。你也可以在每个 shell 中执行一次 source .venv/bin/activate 并省略前缀——效果相同。

配置目标

使用虚拟环境的 Python 运行交互式设置:

.venv/bin/python -m vcenter_mcp setup

系统将提示你输入:

  1. 目标名称(例如 lab-vcenter)——用于后续引用此目标

  2. vCenter / ESXi 的主机名或 IP

  3. 用户名和密码

  4. 目标类型:vcenteresxi

  5. (仅 vCenter) 数据中心和集群名称

  6. 数据存储名称

  7. 一个或多个网络配置文件,每个包含一个名称以及一个或多个端口组名称

设置程序会将配置写入 ~/.config/vcenter-mcp/config.json(模式 0600)。你可以随时重新运行以添加新目标或更新现有目标。

配置文件结构

{
  "default_target": "lab-vcenter",
  "targets": {
    "lab-vcenter": {
      "host": "vcenter.lab.example.com",
      "user": "admin@vsphere.local",
      "password": "...",
      "type": "vcenter",
      "datacenter": "Lab DC",
      "cluster": "Lab Cluster",
      "datastore": "datastore1",
      "networks": {
        "standard": ["VM Network"],
        "secure-boot": ["pg-secure-1", "pg-secure-2"]
      },
      "default_network": "standard"
    }
  },
  "templates": {
    "esxi":   { "cpu": 4, "ram_mb": 16384, "disk_gb": 100, "disk_provisioning": "thin", "guest_id": "vmkernel7Guest", "vhv": true },
    "ubuntu": { "cpu": 2, "ram_mb": 4096,  "disk_gb": 40,  "disk_provisioning": "thin", "guest_id": "ubuntu64Guest",  "vhv": false },
    "rhel":   { "cpu": 2, "ram_mb": 4096,  "disk_gb": 40,  "disk_provisioning": "thin", "guest_id": "rhel9_64Guest",  "vhv": false }
  }
}

网络配置文件是端口组的列表;第一个条目将成为启动网卡。要添加自定义虚拟机类型,请在 templates 中添加条目——传递给 create_vmvm_type 字符串将与此字典进行匹配。

在 Claude Code 中注册

使用虚拟环境的 Python 通过绝对路径注册 MCP 服务器。Claude Code 会在一个全新的 shell 中启动服务器,该 shell 不会 继承你已激活的 venv,因此必须使用绝对路径——在此处指向普通的 python 将导致无法导入 vcenter_mcp

VCENTER_MCP_DIR="$(pwd)"   # run this from the repo root, after install
claude mcp add --scope user vcenter -- "$VCENTER_MCP_DIR/.venv/bin/python" -m vcenter_mcp

或者直接内联你想要的绝对路径:

claude mcp add --scope user vcenter -- /absolute/path/to/vcenter-mcp/.venv/bin/python -m vcenter_mcp

读取工具(list_vms)可以安全地允许而不进行提示。将其添加到 ~/.claude/settings.json 中的 permissions.allow

{
  "permissions": {
    "allow": [
      "mcp__vcenter__list_vms"
    ]
  }
}

破坏性工具(create_vmpower_on_vmpower_off_vmdelete_vm)默认不在允许列表中——Claude 会在每次调用时提示你。

工具

工具

功能

list_vms

列出目标上的虚拟机。vCenter 目标按数据中心内的主机分组;ESXi 目标列出主机上的所有内容。

create_vm

创建一个优先网络启动的虚拟机。选择一个 vm_type(模板),可选 CPU/RAM/磁盘覆盖,可选 network_profile

power_on_vm

通过显示名称或 moref ID 开启虚拟机。

power_off_vm

通过显示名称或 moref ID 强制关闭虚拟机。

delete_vm

永久删除虚拟机(若正在运行则先关机,然后从磁盘销毁)。

关于 TLS 的说明

vcenter-mcp 使用未验证的 SSL 上下文进行连接,这与 govc 和大多数 pyVmomi 示例代码使用的默认设置相同,因为实验室 vCenter 通常使用自签名证书。如果你的目标使用正确签名的证书,并且你希望进行真正的验证,请替换 src/vcenter_mcp/client.py 中的 _ssl_context()

开发

python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/pytest

测试在 CI 中的 Python 3.10、3.11 和 3.12 上运行(参见 .github/workflows/test.yml)。

许可证

Apache-2.0

Install Server
A
license - permissive license
A
quality
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/michaelrice/vcenter-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server