vcenter-mcp
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Вам будет предложено ввести:
Имя цели (например,
lab-vcenter) — используется для обращения к этой цели в дальнейшемХост или IP vCenter / ESXi
Имя пользователя и пароль
Тип цели:
vcenterилиesxi(Только для vCenter) Имена дата-центра и кластера
Имя хранилища данных (datastore)
Один или несколько сетевых профилей, каждый из которых состоит из имени и одной или нескольких групп портов (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 будет запрашивать подтверждение при каждом вызове.
Инструменты
Инструмент | Что он делает |
| Перечисляет виртуальные машины на цели. Цели vCenter группируются по хостам внутри дата-центра; цели ESXi перечисляют все на хосте. |
| Создает виртуальную машину с сетевой загрузкой. Выберите |
| Включает виртуальную машину по отображаемому имени или ID moref. |
| Принудительно выключает виртуальную машину по отображаемому имени или ID moref. |
| Безвозвратно удаляет виртуальную машину (сначала выключает, если запущена, затем удаляет с диска). |
Примечания по 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).
Лицензия
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