vcf-ops-mcp
Sentania VCF Ops MCP(非公式)
vcf-ops-mcp は、VCF Operations 向けのコンテナ化された、デフォルトで読み取り専用の MCP サーバーで、小規模な管理 UI を備えています。現在の 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ライブアプライアンス層は、明示的なガード変数が指定されない限りスキップされます。通常のテストでは、合成された 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 で、4 つの依存関係すべてが true であることを報告します: audit_writable、configuration_ready、session_secret_persistent、mcp_ready。監査、設定、キー、または MCP の依存関係が利用できない場合、プロセスは診断可能な状態を維持しますが、HTTP 503 を返します。
ラボデプロイメントは、自身のイメージピンとロールアウトを所有します。参照用の deploy/compose.yml は、外部の docker-slots ネットワークと同じ 3 つの永続ボリュームを保持しますが、このリポジトリはそれをデプロイしません。ランタイムシークレットが 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: "))'
exitdocker.int スロットの場合、lab-admin は実行中の vcf-ops-mcp-web コンテナ内で、ホストの通常の管理チャネルを通じて同じ 1 回限りの操作を実行します。デプロイキーはそれを実行できません。また実行してはなりません。その強制コマンド許可リストが意図的に exec を除外しているためです。ファイルパスとモードは同じです。CI がブートストラップパスワードを受け取ることはありません。
http://localhost:8000/admin/login を開き、admin としてサインインしてから:
VCF Ops ターゲットを登録します。新しいターゲットは常に
read_onlyです。本番 FQDN はサーバー側で認識され、この MVP ではアクションに切り替えることはできません。必要な実装済み読み取りスコープと 1 つ以上の登録済みターゲットを選択し、MCP API キーを発行します。平文キーは 1 回だけ表示されます。その SHA-256 ダイジェストのみが保存されます。
MCP クライアントを Streamable HTTP URL
http://localhost:8000/mcp/とヘッダーAuthorization: Bearer <表示されたキー>で設定します。list_targetsを使用して許可されたターゲット ID を発見し、読み取りツールを呼び出します。VCF アダプター引数は、そのツールのargumentsオブジェクトに渡されます。/admin/auditを調べて、追記専用の試行レコードと終端レコードを確認します。
本番環境では https://vcf-ops-mcp.int.sentania.net を使用し、管理者セッション Cookie を Secure に保ちます。ローカル HTTP は、PUBLIC_BASE_URL が明示的に http:// を使用する場合にのみ有効になります。
永続データとリカバリ
3 つのボリュームルートにはそれぞれ別々の役割があります:
ボリュームパス | 内容 |
| 管理者ハッシュ、ターゲットメタデータ、暗号化された資格情報エンベロープ、API キーダイジェストを含むランタイム SQLite データベース |
| 生成されたセッションシークレット、監査引数ダイジェストキー、バージョン管理された AES-256-GCM 資格情報キーリング、および 1 回限りの管理者ブートストラップファイル |
| 追記専用 SQLite 監査台帳 |
/data、/keys、/audit を別々の保護されたアーティファクトとしてバックアップします。暗号化されたターゲットレコードが残っている状態で /keys を失うと、意図的に復旧不可能になります。サーバーは、既存の暗号文の上に資格情報キーリングを再生成することを拒否します。確立されたデプロイメントに docker compose down -v を使用しないでください。
監査試行をコミットした後、終端レコードの前にプロセスが終了した場合、次の起動時に outcome_unknown が追加されます。試行を書き換えたり、成功結果を捏造したりすることはありません。
MVP の境界
提供済み:
自動的な永続
SESSION_SECRET生成。直接プロセス運用のために明示的な環境変数による上書きを保持。永続的な暗号化ターゲット設定、ブートストラップ管理者ログイン、スコープ付き API キーの発行と失効、ターゲット登録、監査表示。
実装済みの読み取りアダプター、ターゲット発見、スキルツールとスキルリソース/プロンプトの両方を備えた認証付き Streamable HTTP。リソースとプロンプト上のスキルコンテンツには、スキルツールと同じ
read:skillsケイパビリティが必要です。それがない場合、具体的なリソース発見のみが利用可能です。読み取り専用ターゲットポスチャ、API キーターゲット許可リスト、デフォルト拒否の実装済みスコープ、本番ターゲットのハードブロック、レスポンスの射影とキャップ、永続的なツールごとの監査。
意図的に延期:
すべてのアクション実行、アクション対応キー、レポート実行、plan/apply、非同期タスクポーリング。これらは Phase 2 の人間によるゲートの背後に残ります。
UI でのターゲット編集と資格情報のローテーション。
完了レポートのダウンロード。開発アプライアンスには、レポート変更を最初に実行しない限り完了レポートがないためです。
外部公開、NSX、VCFA 自動化、直接 vCenter ツール、PII スクラビング。
非 LOCAL 認証ソースの発見。以前の任意 FQDN フェッチは、安全な発見メカニズムではなく SSRF 境界であったため削除されました。
完全な契約と測定された VCF Ops の動作については、docs/SPEC.md、docs/decisions の承認済みレコード、および docs/read-plane.md を参照してください。
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.7179 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 gradedqualityCmaintenanceExposes 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.18MIT