Skip to main content
Glama

afc-mcp

MCP-сервер для Aruba Fabric Composer (AFC), ориентированный на инвентаризацию, состояние сети и видимость VMware vCenter/vSphere. Только чтение.

Состав

  • server.py: точка входа FastMCP, предоставляющая инструменты MCP (транспорт: streamable-http).

  • afc_client.py: клиент API AFC с обработкой токена аутентификации и сопоставленными конечными точками только для чтения.

  • 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://afc.example.local)

  • AFC_USERNAME

  • AFC_PASSWORD

  • AFC_VERIFY_SSL (необязательно, по умолчанию false)

  • AFC_TIMEOUT (необязательно, по умолчанию 30)

  1. Соберите и запустите:

docker compose up --build -d
  1. Проверьте логи:

docker compose logs -f

Конечная точка

Сервер предоставляет MCP через streamable-HTTP:

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

По умолчанию конечная точка открыта. Вы можете включить аутентификацию по Bearer-токену, чтобы только клиенты с действующим токеном могли вызывать инструменты (см. ниже).

Аутентификация (Bearer-токен)

Аутентификация необязательна и отключена по умолчанию (обратная совместимость). Если она включена, каждый запрос MCP должен содержать заголовок Authorization: Bearer <token>; запросы без действительного токена отклоняются с кодом 401.

Токены являются именованными (по одному на клиента) и хранятся в 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. Включите аутентификацию и (пере)запустите сервер:

# 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-серверы из файла mcp.json.

  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. В представлении чата (режим агента) инструменты 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

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

Перезапустите Claude Desktop — afc-mcp появится в меню инструментов.

Как вариант, последние сборки Claude Desktop поддерживают удалённые MCP-серверы напрямую через Settings → Connectors → Add custom connector, используя тот же URL.

Доступные MCP-инструменты

Сервер и система

  • get_server_status — доступность и работоспособность MCP-сервера.

  • get_system_info — информация о системе AFC.

Коммутаторы и фабрики

  • list_switches, get_switch — инвентаризация коммутаторов и детальная информация по конкретному коммутатору (порты, ПО, теги).

  • list_fabrics, get_fabric — инвентаризация фабрик и их участников.

Маршрутизация и оверлеи

  • list_vrfs, get_vrf — инвентаризация VRF и детали по конкретному VRF.

  • get_vrf_routes — таблица IP-маршрутизации (RIB) VRF с поиском следующего перехода. Принимает VRF и коммутатор по имени или UUID; при указании destination (IP-адрес хоста или CIDR) выполняет поиск самого длинного префикса и возвращает выбранные маршрут(ы) и следующий переход(ы).

  • get_vrf_arp — ARP-таблица VRF (привязка IP к MAC), полученная с коммутаторов. Принимает VRF и коммутатор по имени или UUID; передайте switch, чтобы ограничить таблицу одним коммутатором. Каждая запись содержит IP/MAC, интерфейс, физический порт, коммутатор-владелец и состояние доступности соседа (reachable, stale, incomplete, …).

  • get_vrf_ip_interfaces — интерфейсы L3 (IP) для VRF. Принимает VRF и коммутатор по имени или UUID; фильтрация по if_type (routed, vlan, loopback, evpn). С include_status (по умолчанию) вместе с конфигурацией возвращается операционное состояние (admin up/down, MAC, IP MTU, duplex, IPv4-адрес).

  • get_vrf_static_routes — статические IP-маршруты, настроенные в VRF (префикс назначения, следующий переход или nullroute/discard, интерфейс следующего перехода, метрика, тег, тип и применённые коммутаторы). Принимает VRF и коммутатор по имени или UUID.

  • get_vrf_bgp_status, get_vrf_bgp_summary — состояние BGP и сводка по VRF.

  • get_vrf_ospf_neighbors, get_vrf_ospf_summary — соседи OSPF и сводка по VRF.

  • list_evpn, list_evpn_routes — экземпляры EVPN и их маршруты.

  • get_v_нц_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 с адресом сервера, состоянием подключения и сообщением об ошибке.

  • get_vmware_inventory — хосты VMware с расположением (vCenter, дата-центр, кластер, домен) и состоянием (статус физических NIC, распределение виртуальных машин по статусу питания), а также vSwitches, Port Groups и виртуальные машины. Необязательная фильтрация по имени хоста ESXi.

  • list_vmware_vms — плоская инвентаризация ВМ с статусом питания и размещением (хост ESXi, кластер, дата-центр, vCenter), IP-адресами и тегами. Необязательные фильтры: power_state, host_name.

  • get_vm_attachment — прослеживает полный сетевой путь подключения виртуальной машины (vNIC → Port Group → vSwitch → восходящий канал хоста → физический коммутатор/порт).

Примечания

  • AFC_BASE_URL должен быть корнем хоста без наклонной черты /api; клиент добавляет префикс /api.

  • API-аутентификация использует POST /api/auth/token с заголовками X-Auth-Username и X-Auth-Password; токен переиспользуется и автоматически обновляется при получении 401.

  • vSphere-пакет не предоставляет отдельного поля состояния питания/здоровья для каждого хоста: состояние хоста выводится из статуса физических NIC и количества включённых ВМ; vcenter — это UUID экземпляра vSphere.

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.
    -