Skip to main content
Glama

afc-mcp

Aruba Fabric Composer(AFC)向けの MCP サーバー。インベントリ情報、ネットワークの状態、VMware vCenter/vSphere の可視性に重点を置いています。読み取り専用です。

含まれるもの

  • server.py: FastMCP のエントリポイントで、MCP ツールを公開します(トランスポート: streamable-http)。

  • afc_client.py: AFC の API クライアント。認証トークンの処理と、読み取り専用エンドポイントのマッピングを扱います。

  • Dockerfile: MCP サーバー用のコンテナイメージ。

  • docker-compose.yml: ローカル実行用(ホストのポート 8010 → コンテナの 8000)。

  • .env.example: 環境変数のテンプレート。

Related MCP server: io.github.zw008/vmware-log-insight

クイックスタート

  1. 環境ファイルを作成する:

cp .env.example .env
  1. 最低限、以下を設定する:

  • AFC_BASE_URL(ホストのルート。/api を含めない。例: https://localhost:8080)

  • AFC_USERNAME

  • AFC_PASSWORD

  • AFC_VERIFY_SSL(オプション、デフォルト false)

  • AFC_TIMEOUT(オプション、デフォルト 30)

  1. ビルドして実行する:

docker compose up --build -d
  1. ログを確認する:

docker compose logs -f

エンドポイント

このサーバーは streamable-HTTP 上で MCP を提供します:

URL:  http://<docker-host>:8010/mcp

デフォルトではエンドポイントはオープンです。Bearer トークン認証を有効にすると、 有効なトークンを持つクライアントだけがツールを呼び出せます(下記参照)。

認証(Bearerトークン)

認証は オプションで、デフォルトでは無効 です(後方互換性のため)。 有効にすると、すべての MCP リクエストは Authorization: Bearer <token> ヘッダーを 持つ必要があります。有効なトークンのないリクエストは 401 で拒否されます。

トークンには 名前 があり(クライアントごとに 1 つ)、secrets/.tokens に保存されます (git で無視され、コンテナには読み書き可能でマウントされます)。

  1. 最初のトークンを作成する(ホスト上またはコンテナ内で実行):

# on the host (stdlib only, no dependencies needed)
cd afc-mcp
python afc_token_manager.py generate --name "vscode-dev" --description "Laptop VSCode"

# ...or inside the running container
docker compose exec afc-mcp python afc_token_manager.py generate --name "vscode-dev"

このコマンドはプレーンテキストのトークンを 1 回だけ 表示します。今すぐコピーしてください。

  1. 認証を有効にして、サーバーを(再)起動する:

# in .env or the shell environment
AFC_AUTH_ENABLED=true

docker compose up -d --build

セーフティーネット:AFC_AUTH_ENABLED=true なのにトークンがまだ存在しない場合、 サーバーは LOCKED モードで起動し、トークンが作成されてコンテナが再起動されるまで すべてのリクエストを拒否します(503)。これにより、オープンなエンドポイントが 誤って公開されるのを防ぎます。

CLI でトークンを管理します:

python afc_token_manager.py list                 # masked preview
python afc_token_manager.py show --name vscode-dev  # reveal a value
python afc_token_manager.py revoke --name vscode-dev

トークンの失効や追加を反映するには、コンテナの再起動が必要です。

注:MCP_HOST / MCP_PORT は、コンテナ内でサーバーが どこで待ち受けるか だけを 制御します(0.0.0.0:8000 をホストの 8010 にマッピング)。これらは認証とは 無関係です。つまり、どこで 待ち受けるかを示すのであって、誰が 呼び出せるかを 示すものではありません。

VS Code との連携

VS Code(GitHub Copilot / エージェントモード)は、mcp.json ファイルから MCP サーバーを検出します。

  1. ワークスペースに .vscode/mcp.json を作成する(またはユーザー設定の mcp.json に追加する):

{
  "servers": {
    "afc-mcp": {
      "type": "http",
      "url": "http://localhost:8010/mcp"
    }
  }
}

コンテナが別のホストで動いている場合は、localhost を Docker ホストのアドレスに置き換えてください。

認証を有効にしている場合は、Bearer トークンをヘッダーとして追加してください:

{
  "servers": {
    "afc-mcp": {
      "type": "http",
      "url": "http://localhost:8010/mcp",
      "headers": { "Authorization": "Bearer afc_xxxxxxxx" }
    }
  }
}
  1. コマンドパレット → MCP: List Servers を開き、afc-mcp を選択して起動します。

  2. チャットビュー(Agent モード)では、ツールピッカーに AFC ツールが表示されます。

Claude Desktop への統合

Claude Desktop は、デフォルトではローカル(stdio)サーバーに接続します。この streamable-HTTP サーバーに到達するには、mcp-remote でブリッジしてください。

claude_desktop_config.json を編集します:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "afc-mcp": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://localhost:8010/mcp"]
    }
  }
}

Claude Desktop を再起動すると、afc-mcp がツールメニューに表示されます。

別の方法として、最近の Claude Desktop ビルドでは、Settings → Connectors → Add custom connector から 同じ URL でリモート MCP サーバーを直接サポートしています。

利用可能な MCP ツール

サーバーとシステム

  • get_server_status — MCP サーバーの到達可能性 / ヘルスチェック。

  • get_system_info — AFC のシステム情報。

スイッチとファブリック

  • list_switches, get_switch — スイッチの一覧とスイッチごとの詳細(ポート、ソフトウェア、タグ)。

  • list_fabrics, get_fabric — ファブリックの一覧とメンバー。

ルーティングとオーバーレイ

  • list_vrfs, get_vrf — VRF の一覧と詳細。

  • get_vrf_routes — VRF の IP ルーティングテーブル(RIB)。ネクストホップの検索にも対応。VRF とスイッチを 名前または UUID で指定できます。destination(ホスト IP または CIDR)を指定すると、最長一致で該当するルートとネクストホップを返します。

  • get_vrf_arp — スイッチで学習した VRF の ARP テーブル(IP と MAC の対応)。VRF とスイッチを 名前または UUID で指定します。switch を渡すと、テーブルを 1 台のスイッチに絞り込めます。各エントリには IP/MAC、インターフェイス、物理ポート、保有スイッチ、ネイバーの到達状態(reachable、stale、incomplete、…)が含まれます。

  • get_vrf_ip_interfaces — VRF の L3(IP)インターフェース。VRF とスイッチを 名前または UUID で指定します。if_type(routed, vlan, loopback, evpn)でフィルタできます。include_status(デフォルト)を指定すると、設定に加えて運用状態(admin up/down、MAC、IP MTU、デュプレックス、IPv4 アドレス)を返します。

  • get_vrf_static_routes — VRF に設定された IP スタティックルート(宛先プレフィックス、ネクストホップまたは nullroute/discard、ネクストホップインターフェース、distance、tag、type、適用先スイッチ)。VRF とスイッチを 名前または UUID で指定できます。

  • get_vrf_bgp_status, get_vrf_bgp_summary — VRF ごとの BGP の状態とサマリー。

  • get_vrf_ospf_neighbors, get_vrf_ospf_summary — VRF ごとの OSPF ネイバーとサマリー。

  • list_evpn, list_evpn_routes — EVPN インスタンスとルート。

  • get_vrf_virtual_environment — VRF にバインドされた仮想環境。

サイトと概要

  • list_afc_sites, get_afc_site_inventory — AFC(リモート)サイトとそのインベントリ。

  • get_network_overview — 集約されたネットワーク状態のスナップショット。

ヘルス

  • list_health_alerts — 現在の AFC ヘルスアラート。

  • run_health_check — 集約ヘルスチェック(アラート、スイッチ/ファブリックのヘルス、BGP/OSPF の ネイバー状態、オプションで HA とライセンスの状態)。

インテグレーションと VMware vCenter/vSphere

  • list_integrations — すべてのインテグレーションパック、そのリモートサーバー、接続状態。

  • list_vmware_integrations — vSphere のみ:構成済みの vCenter ごとに 1 エントリ。サーバーアドレス、接続状態、障害メッセージを含みます。

  • get_vmware_inventory — VMware ホストを 場所(vCenter、データセンター、クラスタ、 ドメイン)と ステータス(物理 NIC の状態、VM の電源別内訳)で返し、vSwitch、 ポートグループ、VM も含みます。ESXi ホスト名でのフィルタも可能です。

  • list_vmware_vms — フラットな VM インベントリ。電源状態 と 配置場所(ESXi ホスト、 クラスタ、データセンター、vCenter)、IP、タグを含みます。フィルタは power_state、host_name が使えます。

  • get_vm_attachment — VM のエンドツーエンドのネットワーク接続(vNIC → ポートグループ → vSwitch → ホスト アップリンク → 物理スイッチ/ポート)を追跡します。

メモ

  • AFC_BASE_URL はホストのルートであり、/api を含めない でください。クライアントが自動的に /api プレフィックスを付加します。

  • API 認証は POST /api/auth/token を X-Auth-Username と X-Auth-Password ヘッダーで行います。トークンは再利用され、401 が返ると自動的に更新されます。

  • vSphere パックはホストごとの電源/ヘルスのフィールドを提供しません。ホスト状態は物理 NIC の状態と VM の電源数から導出されます。vcenter は vSphere インスタンスの UUID です。

  • 読み取り専用専用です。

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Read-only MCP server that allows AI assistants to query and monitor KVM Fleet devices, audit logs, and console sessions through the official REST API.
    5
    12 npm
    1
    MIT
  • A
    license
    A
    quality
    B
    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
    127 PyPI
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Provides authenticated read-only access to VMware Cloud Foundation Operations inventory, metrics, alerts, report definitions, targets, and skills via Streamable HTTP, with a durable audit trail and an admin UI.
    -