vcf-ops-mcp
vcf-ops-mcp
MCP-сервер, который является обёрткой над REST API suite-api VCF Operations (vROps) и предоставляет ресурсы, метрики и оповещения в виде инструментов MCP, чтобы LLM-клиент мог напрямую запрашивать наблюдаемую инфраструктуру.
Настройка
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env # then fill in your VCF Operations detailsТребуемая конфигурация (через .env или фактические переменные окружения):
Переменная | Описание |
| Базовый URL экземпляра VCF Operations, например |
| Пользователь для аутентификации |
| Пароль этого пользователя |
| Имя источника аутентификации (по умолчанию |
| Установите |
| Тайм-аут запроса в секундах (по умолчанию |
Сервер при первом использовании получает токен из /suite-api/api/auth/token/acquire, кэширует его и прозрачно запрашивает снова, когда срок его действия близок к истечению либо он отклонён с кодом 401.
Конфигурация транспорта/аутентификации (также через .env или фактические переменные окружения):
Переменная | Описание |
|
|
| Хост для привязки в режиме streamable-http (по умолчанию |
| Порт для привязки в режиме streamable-http (по умолчанию |
| Требуется для streamable-http. Клиенты должны отправлять |
| Разделённый запятыми список разрешённых заголовков Host для защиты от DNS-rebinding (см. ниже) |
Related MCP server: VMware-Monitor
Запуск
По умолчанию сервер работает как автономный удалённый сервер через streamable-http, привязанный к 127.0.0.1:8000, и требует bearer-токен при каждом запросе:
export VCFOPS_MCP_BEARER_TOKEN="$(openssl rand -hex 32)"
vcf-ops-mcp
# or
python -m vcf_ops_mcpGET /healthz не требует аутентификации (проверка живости балансировщиком/оркестратором); всё остальное требует bearer-токен. 127.0.0.1 слушает только локально — чтобы достучаться до него с другого хоста, укажите VCFOPS_MCP_HOST=0.0.0.0 (или запустите за обратным прокси) и убедитесь, что между сетью и учётными данными, способными запрашивать всё ваше наблюдаемое окружение, находится только bearer-токен. Относитесь к нему как к любому другому секрету и предпочитайте терминирование TLS (например, на реверс-прокси) перед ним, а не передачу открытым текстом по HTTP через недоверенную сеть.
Когда VCFOPS_MCP_HOST не равен 127.0.0.1/localhost, собственная защита FastMCP от DNS-rebinding (проверка заголовка Host входящего запроса по списку разрешений) по умолчанию не имеет в этом списке ни одной записи, поскольку он автоматически настраивается только для loopback-хоста. Если параметр не задан, проверка заголовка Host не выполняется, и ваш единственный барьер — bearer-токен. В доверенной сети это нормально, но на общей или недоверенной сети задайте VCFOPS_MCP_ALLOWED_HOSTS: перечислите через запятую имена хостов/IP:port, через которые клиенты реально подключаются, — для эшелонированной защиты.
Укажите MCP-клиенту на этот сервер как на streamable-http-сервер, например в Claude Code:
claude mcp add --transport http vcf-operations http://<host>:8000/mcp \
--header "Authorization: Bearer <your-token>"Запуск через stdio
Для локального использования, когда MCP-клиент сам запускает сервер как подпроцесс (без необходимости открывать доступ из сети), установите VCFOPS_MCP_TRANSPORT=stdio — в этом режиме bearer-токен не требуется. Пример конфигурации Claude Desktop:
{
"mcpServers": {
"vcf-operations": {
"command": "/absolute/path/to/.venv/bin/vcf-ops-mcp",
"env": {
"VCFOPS_MCP_TRANSPORT": "stdio",
"VCFOPS_BASE_URL": "https://ops.example.com",
"VCFOPS_USERNAME": "admin",
"VCFOPS_PASSWORD": "changeme"
}
}
}
}Инструменты
Ресурсы
list_resources— поиск наблюдаемых объектов по имени/типу адаптера/типу ресурса/состояниюget_resource— полное описание одного ресурсаget_resource_properties— собранные свойства конфигурацииget_resource_relationships— родительские/дочерние объекты
Метрики
list_metric_keys— доступныеstatKeysдля пары адаптер/тип ресурсаget_latest_stats— последние значения метрик для ресурсаquery_stats— исторические временные ряды по ресурсам, с агрегацией (rollup)/интервалом
Оповещения
list_alerts— активные/все оповещения, возможно ограниченные ресурсом или критичностьюget_alert— полное описание одного оповещенияlist_alert_definitions— определения правил, стоящих за оповещениями
Тестирование
pip install -e ".[dev]"
pytestТесты имитируют HTTP API VCF Operations с помощью respx — живой экземпляр не требуется.
Примечания
Зафиксировано ограничение
mcp<2.0.0: в ветке 2.x MCP Python SDK классFastMCPпереименован вMCPServerи перенесён вmcp.server.mcpserver. Этот проект ориентируется на хорошо зарекомендовавший себя API версии 1.x —mcp.server.fastmcp.FastMCP.
This server cannot be deployed
Maintenance
Related MCP Connectors
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
Related MCP Servers
- AlicenseAqualityAmaintenanceAI-powered VMware vCenter/ESXi monitoring and operations. 20 MCP tools for inventory queries, health monitoring, VM lifecycle management, fast provisioning (Linked Clone, OVA, template deploy), snapshot management, and datastore browsing. Supports vSphere 6.5–8.0. Works with local models via Ollama/LM Studio.44270 PyPI74MIT
- AlicenseAqualityAmaintenanceRead-only VMware vCenter/ESXi monitoring. 8 MCP tools for VM inventory, host status, datastore capacity, cluster info, alarms, events, and VM details. Code-level enforced safety — no destructive operations exist in the codebase. Supports vSphere 6.5–8.0. Works with local models via Ollama/LM Studio.32491 PyPI15MIT
- FlicenseNot gradedqualityDmaintenanceExposes MCP tools that enable remote LLMs to query local Docker containers, OS processes, and system services in real time.-
- FlicenseAqualityDmaintenanceExposes two MCP tools (discover and execute) that enable agents to query an OpenAPI schema via natural language and execute matched API operations.2-