Skip to main content
Glama
vcf-ops-mcp

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: "))'
exit

docker.int スロットの場合、lab-admin は実行中の vcf-ops-mcp-web コンテナ内で、ホストの通常の管理チャネルを通じて同じ 1 回限りの操作を実行します。デプロイキーはそれを実行できません。また実行してはなりません。その強制コマンド許可リストが意図的に exec を除外しているためです。ファイルパスとモードは同じです。CI がブートストラップパスワードを受け取ることはありません。

http://localhost:8000/admin/login を開き、admin としてサインインしてから:

  1. VCF Ops ターゲットを登録します。新しいターゲットは常に read_only です。本番 FQDN はサーバー側で認識され、この MVP ではアクションに切り替えることはできません。

  2. 必要な実装済み読み取りスコープと 1 つ以上の登録済みターゲットを選択し、MCP API キーを発行します。平文キーは 1 回だけ表示されます。その SHA-256 ダイジェストのみが保存されます。

  3. MCP クライアントを Streamable HTTP URL http://localhost:8000/mcp/ とヘッダー Authorization: Bearer <表示されたキー> で設定します。

  4. list_targets を使用して許可されたターゲット ID を発見し、読み取りツールを呼び出します。VCF アダプター引数は、そのツールの arguments オブジェクトに渡されます。

  5. /admin/audit を調べて、追記専用の試行レコードと終端レコードを確認します。

本番環境では https://vcf-ops-mcp.int.sentania.net を使用し、管理者セッション Cookie を Secure に保ちます。ローカル HTTP は、PUBLIC_BASE_URL が明示的に http:// を使用する場合にのみ有効になります。

永続データとリカバリ

3 つのボリュームルートにはそれぞれ別々の役割があります:

ボリュームパス

内容

/data

管理者ハッシュ、ターゲットメタデータ、暗号化された資格情報エンベロープ、API キーダイジェストを含むランタイム SQLite データベース

/keys

生成されたセッションシークレット、監査引数ダイジェストキー、バージョン管理された AES-256-GCM 資格情報キーリング、および 1 回限りの管理者ブートストラップファイル

/audit

追記専用 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 を参照してください。

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Read-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.
    7
    179 PyPI
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Provides read-only access to Aruba Fabric Composer inventory, network state, and VMware vCenter/vSphere visibility through MCP tools over streamable HTTP.
    -
  • A
    license
    A
    quality
    A
    maintenance
    Provides 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.
    18
    MIT