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 (см. ниже) |
Запуск
По умолчанию сервер работает как автономный удалённый сервер через 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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server exposing the Backtest360 engine API as tools for AI agents.
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/mdegrasse/vcf-ops-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server