Skip to main content
Glama
michaelrice
by michaelrice

vcenter-mcp

Сервер Model Context Protocol, который предоставляет инструменты жизненного цикла виртуальных машин VMware vCenter / ESXi для Claude Code и других MCP-клиентов. Построен на базе pyVmomi.

Что он делает

  • Перечисляет виртуальные машины в дата-центре vCenter (сгруппированные по хостам) или на отдельном хосте ESXi

  • Создает виртуальную машину (сначала сетевая загрузка; тонкое или толстое выделение ресурсов; опция вложенной виртуализации для целей ESXi)

  • Включает и выключает виртуальные машины

  • Удаляет виртуальные машины (сначала выключает, если они запущены, затем удаляет с диска)

Поиск принимает либо отображаемое имя, либо ID moref (например, vm-42) — путь moref пропускает сканирование инвентаря и работает быстрее в крупных средах.

Предварительные требования

  • Python 3.10 или новее

  • Сервер vCenter или отдельный хост 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/.... Вы можете вместо этого выполнить source .venv/bin/activate один раз для каждой оболочки и опустить префикс — результат будет тем же.

Настройка цели

Запустите интерактивную настройку, используя Python из venv:

.venv/bin/python -m vcenter_mcp setup

Вам будет предложено ввести:

  1. Имя цели (например, lab-vcenter) — используется для обращения к этой цели в дальнейшем

  2. Хост или IP vCenter / ESXi

  3. Имя пользователя и пароль

  4. Тип цели: vcenter или esxi

  5. (Только для vCenter) Имена дата-центра и кластера

  6. Имя хранилища данных (datastore)

  7. Один или несколько сетевых профилей, каждый из которых состоит из имени и одной или нескольких групп портов (portgroup)

Настройка записывает конфигурацию в ~/.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 — строки vm_type, передаваемые в create_vm, сопоставляются с этим словарем.

Регистрация в Claude Code

Зарегистрируйте MCP-сервер, используя Python из venv по абсолютному пути. Claude Code запускает сервер в новой оболочке, которая не наследует вашу активированную 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) можно безопасно разрешить без запроса подтверждения. Добавьте их в permissions.allow в ~/.claude/settings.json:

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

Деструктивные инструменты (create_vm, power_on_vm, power_off_vm, delete_vm) намеренно не включены в список разрешенных по умолчанию — Claude будет запрашивать подтверждение при каждом вызове.

Инструменты

Инструмент

Что он делает

list_vms

Перечисляет виртуальные машины на цели. Цели vCenter группируются по хостам внутри дата-центра; цели ESXi перечисляют все на хосте.

create_vm

Создает виртуальную машину с сетевой загрузкой. Выберите vm_type (шаблон), дополнительные переопределения CPU/RAM/диска, опциональный network_profile.

power_on_vm

Включает виртуальную машину по отображаемому имени или ID moref.

power_off_vm

Принудительно выключает виртуальную машину по отображаемому имени или ID moref.

delete_vm

Безвозвратно удаляет виртуальную машину (сначала выключает, если запущена, затем удаляет с диска).

Примечания по TLS

vcenter-mcp подключается с непроверенным SSL-контекстом, что является тем же значением по умолчанию, которое используют govc и большинство примеров кода pyVmomi, поскольку лабораторные vCenter очень часто имеют самоподписанные сертификаты. Если ваша цель использует должным образом подписанный сертификат и вы предпочитаете настоящую проверку, замените _ssl_context() в src/vcenter_mcp/client.py.

Разработка

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

Тесты запускаются на Python 3.10, 3.11 и 3.12 в CI (см. .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