ESPN DeportesD-backs obligado a vencer a Yankeesוואלהרבבות השתתפו בסליחות בכותל; נתניהו ובן גביר הגיעו למקוםThe Jerusalem PostAn unimaginable idea: When does God ignore idolatry by Jews?PunchKwara no longer needs APC, PDP – NDC gov candidate, AjiaCNN TürkDoğu Karadeniz için kuvvetli yağış uyarısı! Sel ve heyelana dikkatESPNRams' Nacua again misses practice, questionable for MNFHet Laatste NieuwsTickets massaal gedumpt, tientallen demonstranten, extra politie ingezet: eerste concert van Ed Sheeran sinds controverse staat onder hoogspanningNew Straits TimesCzechs beat USA to qualify for Davis Cup finals조선일보韓 축구 역사상 이런 에이스 있었나! 'MVP 수집가' 이강인 '빅 더비' 정조준…'레알 마드리드 상대로 이미 승리→득점 경험' 기대감 폭발Screen RantDC’s Supergirl Hits Colossal Milestone After James Gunn’s Superman Series Return自由時報水利署工程車現身嘉科二期引熱議!台積電AP7先進封裝廠動工真相揭曉La NaciónGavin Newsom celebra el Mes de la Herencia Hispana: “Los latinos son la fuerza impulsora de California”
The Daily Newsstand · Free, Always
Sunday, September 20, 2026

Управляем VMware Cloud Director через MCP-сервер: от API к текстовым командам

Translate

Каждый раз управляя облаком, мы совершаем повторяющиеся действия: создаем сеть, виртуальную машину, настраиваем правила Firewall и NAT… Все это интересно и удобно первые несколько раз, а потом тебя начинает напрягать не самый отзывчивый интерфейс и кликов по UI набегают сотни, а то и тысячи в месяц. Но ведь можно же делегировать все эти рутинные приседания ИИ-агенту?

Да, именно так мы и сделали у себя в Облаке VMware, но спокойствие, в этой статье мы его вам продавать не будем. Здесь расскажем тем, кто администрирует свой дата-центр или облачный тенант на базе VMware, как прикрутить к нему Claude Code, Open Code или любого другого MCP-совместимого агента без написания собственной обертки над API. Ну и само собой, мы сделаем это так, чтобы разбушевавшийся агент не смог наворотить лишнего, даже если очень захочет.

«А почему бы просто не дать агенту curl?»

Когда я только начал изучать, какие ИИ-возможности управления VMware Cloud Director есть, выяснилось, что ничего готового вендор не предлагает (по крайней мере на момент публикации). А хотелось, чтобы у наших заказчиков была возможность управлять облаком просто обозначив задачку агенту. Но как это провернуть? Может просто стоит дать LLM-агенту доступ к сырому API через универсальный HTTP-инструмент? Если этот вопрос возник и у вас, отвечу вам мемом:

А если серьезно, то при таком исполнении, нас ждет ряд проблем.

1. Мало того что VMware Cloud Director API — это несколько сотен эндпоинтов. Начиная с версии 9.5 у продукта появился еще и второй параллельный API, который живет рядом с унаследованным. Дальше — больше: он отдает ответы в JSON, тогда как предыдущий вариант — в XML. И что самое печальное, два этих API не взаимозаменяемы. Если не прописать инструкции ясно, скорее всего агент будет тратить лишние токены на угадывание правильного пути и параметров запроса.

2. По той же причине агент может начать дергать не ту «ручку» или дергать не в том порядке: например, будет пытаться получить детали о виртуалке до того, как получил ее ID.

3. У агента буквально не будет никаких ограничений на деструктивные операции, а это неизбежно приведет кого-нибудь из пользователей к ситуации: «я что-то сказал и все исчезло» (от создателей «я что-то нажал и все пропало»). А мы хотим следовать принципу safe by design и не наделять лишними полномочиями ни агента, ни юзера от греха подальше.

В общем, мы сочли, что без MCP-сервера тут не обойтись, поскольку в случае с ним, не будет сложностей, перечисленных выше, а наиболее частотные сценарии превратятся в именованные тулзы. Агент больше не будет составлять запрос к API с нуля — он просто вызовет vm_power_action(vm_id, action="restart"), и сервер сам соберет нужный HTTP-запрос к нужной версии API. Дело осталось за малым, написать сам MCP-сервер. Мы собрали операции, которые требуются нашим клиентам чаще всего, написали свой инструмент и выложили на Git. Чтобы модель не заблудилась в названиях, действовали по принципу «одна задача — один инструмент». Подробнее про группы задач расскажу далее.

Архитектура решения и первые шаги

Использовать MCP сервер можно с любым удобным ИИ-агентом, главное организовать доступ от него к тенанту VMware. У нас получилась следующая комбинация:

Для настройки нам понадобится:

  • ИИ-агент;

  • Docker Compose;

  • MCP Server VMware Cloud Director;

  • Username и API Token от учетной записи тенанта VMware Cloud Director.

Шаг 1. Клонируем репозиторий и собираем образ

git clone https://github.com/cloud-ru/vmware-clouddirector-mcp.git 
cd vmware-clouddirector-mcp 
docker build -t vmware-clouddirector-mcp:latest 

Шаг 2. Проверяем, что сервер поднимается и видит тенант

docker run -i --rm \  --name vmware-clouddirector-mcp \  -e VCD_BASE_URL=https://your\_vcd\_instance\_address \ 
-e VCD_USERNAME=your_username \ 
-e VCD_API_TOKEN=your_api_token \ 
-e VCD_ORG=your_organization \ 
-e VCD_API_VERSION=39.1 \ 
vmware-clouddirector-mcp:latest & 

docker logs -f vmware-clouddirector-mcp 

Если в логах нет ошибок аутентификации — останавливаем тестовый контейнер (docker stop vmware-clouddirector-mcp) и переходим к подключению агента.

Шаг 3. Подключаем Claude Code

claude mcp add vmware-cloud-director \ -e 
VCD_BASE_URL=https://your\_vcd\_instance\_address \ -e 
VCD_USERNAME=your_username \ -e VCD_API_TOKEN=your_api_token \ -e 
VCD_ORG=your_organization \ -e VCD_API_VERSION=39.1 \ -- \ docker run --rm -i --network host -e VCD_BASE_URL -e VCD_USERNAME -e VCD_API_TOKEN -e VCD_ORG -e 
VCD_API_VERSION vmware-clouddirector-mcp:latest

Подробнее в документации Claude Code по MCP. Для OpenCode процесс аналогичен, актуальный синтаксис — в доке OpenCode.
Рабочий лайфхак: попросите агента настроить подключение, большинство современных агентов с этим справляются.

Что может наш MCP-сервер и почему именно это

На момент публикации наш MCP-сервер поддерживает 36 инструментов в 8 категориях: Аутентификация и core‑запросы

  • ovcd_login — аутентификация в VMware Cloud Director;

  • list_orgs — вывод доступных организаций (Tenant);

  • list_vdcs — вывод доступных виртуальных дата центров (VDC);

  • get_vdc_details — получение детальной информации по VDC;

  • get_resource_usage — получение подробной статистики использования ресурсов.

Управление приложениями

  • olist_vapps — вывод списка виртуальных приложений;

  • vapp_power_action — управление активностью виртуальных приложений (start, stop, restart, suspend, resume);

  • vapp_clone — клонирование виртуального приложения.

Управление виртуалками

  • olist_vms — вывод списка виртуальных машин;

  • search_vms — поиск виртуальной машины по имени или VDC;

  • get_vm_details — получение детальной информации по виртуальной машине;

  • get_vm_details_with_id — получение детальной информации по виртуальной машине с определенным id;

  • vm_power_action — управление активностью виртуальной машины (start, stop, restart, suspend, resume)

  • vm_configure — изменение конфигурации виртуальной машины (CPU и RAM).

Снапшоты

  • vm_create_snapshot — создание снапшота виртуальной машины;

  • vm_list_snapshots — вывод списка снапшотов виртуальной машины;

  • vm_restore_snapshot — восстановление из снапшота виртуальной машины.

Хранилище

  • list_datastores — вывод списка доступных storage profiles;

  • vm_add_disk — добавление нового диска виртуальной машине;

  • vm_list_disks — вывод списка дисков виртуальной машины;

  • vm_resize_disk — изменение размера диска виртуальной машины.

Сети

  • list_networks — вывод списка виртуальных сетей;

  • list_firewall_rules — вывод списка правил фаервола с EdgeGWs;

  • create_org_network — создание виртуальной сети;

  • list_nat_rules — ввод списка NAT правил с EdgeGWs;

  • list_dhcp_pools — вывод списка DHCP пулов с EdgeGWs;

  • list_ip_allocations — вывод списка аллоцированных IP адресов с EdgeGWs.

Шаблоны и каталоги

  • list_catalogs — вывод списка каталогов в организации;

  • list_catalog_items — вывод списка объектов в каталоге;

  • get_template_details — получение детальной информации по шаблонам виртуальных машин.

Мониторинг

  • list_tasks — вывод списка задач и операций;

  • get_vm_metrics — получение метрик производительности виртуальной машины;

  • list_events — вывод списка событий;

  • get_org_health — получение статуса состояния организации;

  • get_resource_metrics — получение метрик использования ресурсов;

  • health_check — проверка статуса подключения к VMware Cloud Director.

У вас, наверное, возник вопрос: «почему есть возможность создать ВМ, но нет возможности ее удалить»? Деструктивные вызовы мы не стали добавлять сознательно: если вашей команде нужны операции удаления, их придется выполнять вручную или через отдельный, явно подтверждаемый путь. А то дадим «из коробки» возможность удалять, а завтра ваш агент деградирует и снесет половину инфраструктуры. Если уж очень хочется, можно взять за основу наш код и прописать себе все, что душе угодно, кто мы такие чтобы вам запрещать? Главное делайте все осознанно. По итогу ваш агент должен получить ограниченную, но все-таки власть над облаком. Я вот после установки и подключения спросил агента, что он знает про мои ресурсы:

Как убедиться в том, что через MCP-сервер ваш агент не пытался удалить все, что нажито непосильным трудом? Элементарно: заходите в разделы Task и Events и смотрите что делалось с инфраструктурой пока вы спали, сидели на очередном митинге или пили кофе. Запросы вывода состояния там отображаться не будут, но любые включения, выключения, создания, изменения видны как на ладони.

Практическая польза и крошечный недостаток

Благодаря возможности управлять облаком с помощью текстовых команд, можно автоматизировать часть регулярных задач без привязки к рабочему месту или коду: передаем задачу агенту, а там он уже сам уточняет, что понадобится для готового результата. Вот пример:

Но есть во всем этом крошечный недостаток, который я пока не придумал как обойти, не теряя в безопасности. MCP-сервер авторизуется в тенанте Cloud Director с помощью API Token, который принадлежит конкретному пользователю (например, админу организации). Но если сценарий нужно реализовать для нескольких пользователей, под каждого придется создавать отдельный MCP. В целом, это не то чтобы проблема: вы сами видели, что создание MCP-сервера не такой уж сложный и длительный процесс. Но если у вас есть идеи, как дать нескольким пользователям возможность пользоваться одним сервером, не плодя секреты в .env-файликах, делитесь в комментариях.

Код доступен as is. И, конечно, перед использованием MCP для автоматизации вашего облака, мы рекомендуем сначала провести тестирование ваших рабочих сценариев в stage-среде.

Всем побольше правильных ответов от ИИ-агентов и стабильной инфраструктуры!

View the original on Хабр

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.