afc-mcp
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
Быстрый старт
Создайте файл окружения:
cp .env.example .envЗаполните как минимум:
AFC_BASE_URL(корень хоста без/api, например,https://afc.example.local)AFC_USERNAMEAFC_PASSWORDAFC_VERIFY_SSL(необязательно, по умолчаниюfalse)AFC_TIMEOUT(необязательно, по умолчанию30)
Соберите и запустите:
docker compose up --build -dПроверьте логи:
docker compose logs -fКонечная точка
Сервер предоставляет MCP через streamable-HTTP:
URL: http://<docker-host>:8010/mcpПо умолчанию конечная точка открыта. Вы можете включить аутентификацию по Bearer-токену, чтобы только клиенты с действующим токеном могли вызывать инструменты (см. ниже).
Аутентификация (Bearer-токен)
Аутентификация необязательна и отключена по умолчанию (обратная совместимость). Если она включена, каждый запрос MCP должен содержать заголовок Authorization: Bearer <token>; запросы без действительного токена отклоняются с кодом 401.
Токены являются именованными (по одному на клиента) и хранятся в secrets/.tokens (игнорируется git, монтируется в контейнер в режим чтения и записи).
Создайте первый токен (выполните на хосте или внутри контейнера):
# 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"Команда выводит токен в открытом виде один раз — скопируйте его сразу.
Включите аутентификацию и (пере)запустите сервер:
# 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.
Создайте
.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" } } } }
Откройте палитру команд → MCP: List Servers, выберите
afc-mcpи запустите его.В представлении чата (режим агента) инструменты AFC станут доступны в списке инструментов.
Интеграция с Claude Desktop
Claude Desktop по умолчанию подключается к локальным (stdio) серверам. Чтобы подключиться к этому серверу на streamable-HTTP, используйте мост mcp-remote.
Измените claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%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.
This server cannot be deployed
Maintenance
Related MCP Connectors
Read-only MCP access to a documented IT fleet: state, changes, posture. 15 tools.
XFA's remote MCP server — query device posture, compliance, policies & CVEs. Read-only.
Query, browse, and automate OmegaAI workspaces from any MCP client. Streamable HTTP with OAuth 2.0.
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Related MCP Servers
AlicenseAqualityDmaintenanceRead-only MCP server that allows AI assistants to query and monitor KVM Fleet devices, audit logs, and console sessions through the official REST API.512 npm1MIT- AlicenseAqualityBmaintenanceRead-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.7127 PyPIMIT
- FlicenseNot gradedqualityAmaintenanceProvides 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.-
- FlicenseNot gradedqualityCmaintenanceEnables read-only inspection of Sangfor HCI/SCP clusters, covering VMs, nodes, storage, networking, snapshots, images, and metrics through MCP tools.-