vcf-ops-mcp
Sentania VCF Ops MCP (неофициальный)
vcf-ops-mcp — это контейнеризированный MCP-сервер, по умолчанию доступный только для чтения, с небольшим административным интерфейсом для VCF Operations. Текущий MVP предоставляет реализованные чтения инвентаря, метрик, оповещений, определений отчётов, целей и навыков через аутентифицированный Streamable HTTP. Каждый вызов инструмента MCP проходит через долговечный аудит-диспетчер.
Это неофициальный проект для личной лаборатории. Это не продукт Broadcom или VMware.
Запуск тестового набора
Требуется Python 3.12 или новее.
python3 -m venv .venv
.venv/bin/python -m pip install --upgrade pip hatchling
.venv/bin/python -m pip install -e '.[test]'
.venv/bin/pytest tests/
./tools/generate_agents_md.sh --check
./tools/consensus-check.py --self-testУровень live-appliance пропускается, если не предоставлены его явные переменные-ограничители. Обычные тесты используют только синтетические ответы VCF Ops.
Related MCP server: afc-mcp
Сборка и запуск контейнера локально
Сервис создаёт свой секрет подписи сеансов и связку ключей учётных данных на томе /keys при первом запуске. Ручной SESSION_SECRET не требуется.
docker build -t vcf-ops-mcp:local .
docker volume create vcf-ops-mcp-data
docker volume create vcf-ops-mcp-keys
docker volume create vcf-ops-mcp-audit
docker run --name vcf-ops-mcp --rm \
--read-only \
--user 10001:10001 \
--security-opt no-new-privileges \
--cap-drop ALL \
-p 8000:8000 \
-e PUBLIC_BASE_URL=http://localhost:8000 \
-v vcf-ops-mcp-data:/data \
-v vcf-ops-mcp-keys:/keys \
-v vcf-ops-mcp-audit:/audit \
vcf-ops-mcp:localВ другом терминале:
curl --fail http://localhost:8000/healthzГотовый ответ — HTTP 200 и сообщает о всех четырёх зависимостях как истинных: audit_writable, configuration_ready, session_secret_persistent и mcp_ready. Недоступная зависимость аудита, конфигурации, ключа или MCP оставляет процесс диагностируемым, но возвращает HTTP 503.
Лабораторное развёртывание владеет своим пином образа и процедурой обновления. Справочный deploy/compose.yml сохраняет внешнюю сеть docker-slots и те же три постоянных тома, но этот репозиторий не развёртывает его. Секреты времени выполнения никогда не передаются через CI или окружение compose.
Первый вход администратора
Одобренный путь начальной загрузки использует файл пароля, предоставленный оператором. Сервис запускается здоровым и без него, но административная панель остаётся недоступной, пока файл не существует. Пароль должен содержать не менее 16 байт. Он хешируется с помощью scrypt в базу данных времени выполнения, и файл начальной загрузки удаляется, когда первый вход инициализирует учётную запись. Если удаление не удаётся, более поздний вход повторяет очистку без изменения сохранённого пароля администратора.
Для локального контейнера создайте файл, не помещая пароль в историю оболочки или аргументы процесса:
docker exec -it vcf-ops-mcp sh
umask 077
python -c 'import getpass,pathlib; pathlib.Path("/keys/admin_bootstrap_password").write_text(getpass.getpass("New admin password: "))'
exitДля слота docker.int lab-admin выполняет ту же одноразовую операцию через обычный административный канал хоста внутри запущенного контейнера vcf-ops-mcp-web. Ключ развёртывания не может и не должен выполнять её, потому что его список разрешённых принудительных команд намеренно исключает exec. Путь к файлу и режим те же. CI никогда не получает пароль начальной загрузки.
Откройте http://localhost:8000/admin/login, войдите как admin, затем:
Зарегистрируйте цель VCF Ops. Новые цели всегда
read_only. Производственный FQDN распознаётся на стороне сервера и никогда не может быть переключён на действия в этом MVP.Выберите требуемые реализованные области чтения и одну или несколько зарегистрированных целей, затем создайте ключ API MCP. Открытый текст ключа отображается один раз. Хранится только его SHA-256 дайджест.
Настройте MCP-клиент с URL Streamable HTTP
http://localhost:8000/mcp/и заголовкомAuthorization: Bearer <displayed-key>.Используйте
list_targetsдля обнаружения разрешённых идентификаторов целей, затем вызовите инструмент чтения. Аргументы адаптера VCF передаются в объектеargumentsэтого инструмента.Просмотрите
/admin/audit, чтобы увидеть попытки и терминальные записи, доступные только для добавления.
Производство использует https://vcf-ops-mcp.int.sentania.net, что сохраняет cookie сеанса администратора Secure. Локальный HTTP включён только тогда, когда PUBLIC_BASE_URL явно использует http://.
Постоянные данные и восстановление
Три корня томов имеют отдельные задачи:
Путь тома | Содержимое |
| База данных SQLite времени выполнения с хешем администратора, метаданными целей, зашифрованными конвертами учётных данных и дайджестами ключей API |
| Сгенерированный секрет сеанса, ключ дайджеста аргументов аудита, версионированная связка ключей AES-256-GCM и одноразовый файл начальной загрузки администратора |
| Журнал аудита SQLite, доступный только для добавления |
Резервируйте /data, /keys и /audit как отдельные защищённые артефакты. Потеря /keys при наличии зашифрованных записей целей намеренно невосстановима. Сервер отказывается перегенерировать связку ключей учётных данных поверх существующего шифротекста. Не используйте docker compose down -v для установленного развёртывания.
Если процесс умирает после фиксации попытки аудита, но до его терминальной записи, следующий запуск добавляет outcome_unknown. Он никогда не переписывает попытку и не выдумывает успешный результат.
Границы MVP
Реализовано:
Автоматическая долговечная генерация
SESSION_SECRET, с явным переопределением окружения, сохранённым для прямого запуска процесса.Долговечная зашифрованная конфигурация целей, вход администратора начальной загрузки, создание и отзыв ограниченных ключей API, регистрация целей и просмотр аудита.
Аутентифицированный Streamable HTTP с реализованными адаптерами чтения, обнаружением целей и обоими инструментами навыков, а также ресурсами/подсказками навыков. Содержимое навыков через ресурсы и подсказки требует той же возможности
read:skills, что и инструменты навыков; без неё доступно только конкретное обнаружение ресурсов.Позиция целей только для чтения, списки разрешений целей для ключей API, реализованные области по умолчанию запрещены, жёсткая блокировка производственных целей, проекция и ограничения ответов, а также долговечный аудит каждого инструмента.
Намеренно отложено:
Все выполнение действий, ключи с возможностью действий, запуски отчётов, plan/apply и асинхронный опрос задач. Они остаются за человеческим шлюзом Phase 2.
Редактирование целей и ротация учётных данных в интерфейсе.
Загрузка завершённых отчётов, потому что на устройстве разработки нет завершённых отчётов без предварительного выполнения мутации отчёта.
Внешнее воздействие, NSX, автоматизация VCFA, инструменты прямого vCenter и очистка PII.
Обнаружение источников аутентификации, отличных от LOCAL. Более ранний произвольный FQDN-запрос был удалён, потому что это была граница SSRF, а не безопасный механизм обнаружения.
См. docs/SPEC.md, принятые записи в docs/decisions и docs/read-plane.md для полного контракта и измеренных поведений VCF Ops.
This server cannot be deployed
Maintenance
Related MCP Connectors
Read-only access to your VortexIQ store data: audits, KPIs, alerts, Brand DNA, reports, Ask VIQ.
Read-only MCP access to a documented IT fleet: state, changes, posture. 15 tools.
Query, browse, and automate OmegaAI workspaces from any MCP client. Streamable HTTP with OAuth 2.0.
Read-only access to a Lumin project's logs, metrics, uptime checks, alerts and infrastructure.
Related MCP Servers
- AlicenseAqualityAmaintenanceRead-only MCP server for searching and aggregating logs from VMware Aria Operations for Logs (formerly vRealize Log Insight). Enables querying log events, aggregating with spike detection, and retrieving alert information.7191 PyPIMIT
- FlicenseNot gradedqualityBmaintenanceProvides read-only access to Aruba Fabric Composer inventory, network state, and VMware vCenter/vSphere visibility through MCP tools over streamable HTTP.-
- FlicenseNot gradedqualityBmaintenanceExposes VMware vROps resources, metrics, and alerts as MCP tools, allowing an LLM client to directly query monitored infrastructure.-
- AlicenseAqualityAmaintenanceProvides read-only, governance-audited operations for OLVM and oVirt 4.5 engines, enabling inventory, health, capacity, and diagnosis queries over MCP and CLI with audit logging and budget guards.17MIT