Skip to main content
Glama

afc-mcp

Servidor MCP para Aruba Fabric Composer (AFC) centrado en inventario, estado de red y visibilidad de VMware vCenter/vSphere. Solo lectura.

Incluye

  • server.py: punto de entrada de FastMCP que expone las herramientas MCP (transporte: streamable-http).

  • afc_client.py: cliente de la API de AFC con gestión de tokens de autenticación y endpoints de solo lectura mapeados.

  • Dockerfile: imagen del contenedor para el servidor MCP.

  • docker-compose.yml: entorno de ejecución local (puerto del host 8010 → contenedor 8000).

  • .env.example: plantilla de variables de entorno.

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

Inicio rápido

  1. Crea el archivo de entorno:

cp .env.example .env
  1. Rellena como mínimo:

  • AFC_BASE_URL (raíz del host sin /api, p. ej. https://afc.example.local)

  • AFC_USERNAME

  • AFC_PASSWORD

  • AFC_VERIFY_SSL (opcional, por defecto false)

  • AFC_TIMEOUT (opcional, por defecto 30)

  1. Construye y ejecuta:

docker compose up --build -d
  1. Revisa los logs:

docker compose logs -f

Endpoint

El servidor se comunica mediante MCP a través de streamable-HTTP:

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

Por defecto el endpoint está abierto. Puedes habilitar la autenticación mediante Bearer token para que solo los clientes que presenten un token válido puedan llamar a las herramientas (ver más abajo).

Autenticación (Bearer token)

La autenticación es opcional y está deshabilitada por defecto (compatible con versiones anteriores). Cuando está habilitada, cada solicitud MCP debe llevar una cabecera Authorization: Bearer <token>; las solicitudes sin un token válido se rechazan con 401.

Los tokens tienen nombre (uno por cliente) y se almacenan en secrets/.tokens (ignorado por git, montado con lectura-escritura en el contenedor).

  1. Crea el primer token (ejecuta en el host o dentro del contenedor):

# 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"

El comando imprime el token en texto plano una vez — cópialo ahora.

  1. Habilita la autenticación y (re)inicia el servidor:

# in .env or the shell environment
AFC_AUTH_ENABLED=true

docker compose up -d --build

Red de seguridad: si AFC_AUTH_ENABLED=true pero aún no existe ningún token, el servidor se inicia en modo LOCKED y rechaza cualquier solicitud (503) hasta que se cree un token y se reinicie el contenedor. Esto evita exponer accidentalmente un endpoint abierto.

Gestiona los tokens con la 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

Revocar o añadir un token requiere reiniciar el contenedor para que surta efecto.

Nota: MCP_HOST / MCP_PORT solo controlan dónde escucha el servidor dentro del contenedor (0.0.0.0:8000, mapeado al host 8010). No tienen relación con la autenticación — indican dónde escucha el servidor, no quién puede llamarlo.

Integración con VS Code

VS Code (con GitHub Copilot / modo agente) descubre los servidores MCP desde un archivo mcp.json.

  1. Crea .vscode/mcp.json en tu espacio de trabajo (o añádelo a tu mcp.json de usuario):

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

Reemplaza localhost con la dirección del host Docker si el contenedor se ejecuta en otro lugar.

Si la autenticación está habilitada, añade el Bearer token como cabecera:

{
  "servers": {
    "afc-mcp": {
      "type": "http",
      "url": "http://localhost:8010/mcp",
      "headers": { "Authorization": "Bearer afc_xxxxxxxx" }
    }
  }
}
  1. Abre la Paleta de comandos → MCP: List Servers, selecciona afc-mcp e inícialo.

  2. En la vista de Chat (modo agente), las herramientas de AFC aparecen en el selector de herramientas.

Integración con Claude Desktop

Claude Desktop se conecta a servidores locales (stdio) por defecto. Para acceder a este servidor streamable-HTTP, conéctalo con mcp-remote.

Edita 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"]
    }
  }
}

Reinicia Claude Desktop; afc-mcp aparece en el menú de herramientas.

Alternativamente, las versiones recientes de Claude Desktop admiten servidores MCP remotos directamente en Configuración → Conectores → Añadir conector personalizado usando la misma URL.

Herramientas MCP disponibles

Servidor y sistema

  • get_server_status — accesibilidad/salud del servidor MCP.

  • get_system_info — información del sistema AFC.

Switches y fabrics

  • list_switches, get_switch — inventario de switches y detalle por switch (puertos, software, etiquetas).

  • list_fabrics, get_fabric — inventario de fabrics y sus miembros.

Enrutamiento y overlay

  • list_vrfs, get_vrf — inventario de VRF y detalle.

  • get_vrf_routes — tabla de enrutamiento IP de VRF (RIB) con búsqueda de siguiente salto. Acepta VRF y switch por nombre o UUID; con un destination (IP de host o CIDR) hace una coincidencia de prefijo más largo y devuelve la(s) ruta(s) ganadora(s) y el/los siguiente(s) salto(s).

  • get_vrf_arp — tabla ARP de VRF (asociaciones IP-MAC) aprendidas en los switches. Acepta VRF y switch por nombre o UUID; pasa switch para limitar la tabla a un solo switch. Cada entrada expone la IP/MAC, la interfaz, el puerto físico, el switch propietario y el estado de alcanzabilidad del vecino (alcanzable, obsoleto, incompleto, …).

  • get_vrf_ip_interfaces — interfaces L3 (IP) de VRF. Acepta VRF y switch por nombre o UUID; filtra por if_type (routed, vlan, loopback, evpn). Con include_status (por defecto activo), el estado operativo (admin up/down, MAC, IP MTU, dirección IPv4) se devuelve junto con la configuración.

  • get_vrf_static_routes — rutas estáticas IP configuradas en una VRF (prefijo de destino, siguiente salto o nullroute/discard, interfaz del siguiente salto, distancia, etiqueta, tipo y switches aplicados). Acepta VRF y switch por nombre o UUID.

  • get_vrf_bgp_status, get_vrf_bgp_summary — estado de BGP y resumen por VRF.

  • get_vrf_ospf_neighbors, get_vrf_ospf_summary — vecinos OSPF y resumen por VRF.

  • list_evpn, list_evpn_routes — instancias y rutas EVPN.

  • get_vrf_virtual_environment — entorno virtual vinculado a una VRF.

Sitios y resumen

  • list_afc_sites, get_afc_site_inventory — sitios (remotos) de AFC y su inventario.

  • get_network_overview — instantánea agregada del estado de la red.

Salud

  • list_health_alerts — alertas de salud activas en AFC.

  • run_health_check — estado agregado de: alertas, salud de switch/fabric, adyacencias BGP/OSPF, estado de HA (opcional) y licencia.

Integraciones y VMware vCenter/vSphere

  • list_integrations — todos los paquetes de integración, sus servidores remotos y estado de conexión.

  • list_vmware_integrations — solo vSphere: un elemento por cada vCenter configurado con dirección del servidor, estado de conexión y mensaje de fallo.

  • get_vmware_inventory — hosts de VMware con ubicación (vCenter, datacenter, cluster, dominio) y estado (estados de NIC físicas, desglose por VM), así como vSwitches, Port Groups y VMs. Filtro opcional por nombre de host ESXi.

  • list_vmware_vms — inventario plano de VMs con estado de encendido y ubicación (host ESXi, cluster, datacenter, vCenter), IPs y etiquetas. Filtros opcionales: power_state, host_name.

  • get_vm_attachment — traza la conexión de red de una VM de extremo a extremo (vNIC → port group → vSwitch → uplink host → switch/puerto físico).

Notas

  • AFC_BASE_URL debe ser la raíz del host sin /api; el cliente añade el prefijo /api.

  • La autenticación de la API usa POST /api/v2/auth/token con los encabezados X-Auth-Username y X-Auth-Password; el token se reutiliza y se renueva automáticamente en 401.

  • El paquete vSphere no expone un campo de energía/salud por host: el estado del host se deduce de los estados de las NIC físicas y del recuento de VMs encendidas; vcenter es el UUID de la instancia de 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.
    -