afc-mcp
afc-mcp
MCP-Server für Aruba Fabric Composer (AFC) mit Fokus auf Inventar, Netzwerkzustand und Sichtbarkeit von VMware vCenter/vSphere. Schreibgeschützt.
Enthalten
server.py: FastMCP-Einstiegspunkt, der die MCP-Tools bereitstellt (Transport: streamable-http).afc_client.py: AFC-API-Client mit Authentifizierungs-Token-Handling und abgebildeten schreibgeschützten Endpunkten.Dockerfile: Container-Image für den MCP-Server.docker-compose.yml: Lokale Laufzeitumgebung (Host-Port8010→ Container8000)..env.example: Vorlage für Umgebungsvariablen.
Related MCP server: io.github.zw008/vmware-log-insight
Schnellstart
Env-Datei erstellen:
cp .env.example .envMindestens ausfüllen:
AFC_BASE_URL(Host-Root ohne/api, z. B.https://afc.example.local)AFC_USERNAMEAFC_PASSWORDAFC_VERIFY_SSL(optional, Standardfalse)AFC_TIMEOUT(optional, Standard30)
Erstellen und ausführen:
docker compose up --build -dLogs prüfen:
docker compose logs -fEndpunkt
Der Server spricht MCP über streamable-HTTP:
URL: http://<docker-host>:8010/mcpStandardmäßig ist der Endpunkt offen. Sie können die Bearer-Token-Authentifizierung aktivieren, sodass nur Clients mit einem gültigen Token die Tools aufrufen können (siehe unten).
Authentifizierung (Bearer-Token)
Die Authentifizierung ist optional und standardmäßig deaktiviert (abwärtskompatibel).
Wenn sie aktiviert ist, muss jede MCP-Anfrage einen Authorization: Bearer <token>-Header
enthalten; Anfragen ohne gültiges Token werden mit 401 abgelehnt.
Tokens sind benannt (eines pro Client) und werden in secrets/.tokens gespeichert (git-ignoriert,
mit Lese-/Schreibzugriff in den Container gemountet).
Erstellen Sie das erste Token (auf dem Host oder im Container ausführen):
# 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"Der Befehl gibt das Klartext-Token einmalig aus — kopieren Sie es jetzt.
Authentifizierung aktivieren und Server (neu) starten:
# in .env or the shell environment
AFC_AUTH_ENABLED=true
docker compose up -d --buildSicherheitsnetz: Wenn
AFC_AUTH_ENABLED=truegesetzt ist, aber noch kein Token existiert, startet der Server im Modus LOCKED und lehnt jede Anfrage (503) ab, bis ein Token erstellt und der Container neu gestartet wurde. Dadurch wird verhindert, dass versehentlich ein offener Endpunkt freigegeben wird.
Tokens mit der CLI verwalten:
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-devDas Widerrufen oder Hinzufügen eines Tokens erfordert einen Neustart des Containers, um wirksam zu werden.
Hinweis:
MCP_HOST/MCP_PORTsteuern nur wo der Server lauscht – innerhalb des Containers (0.0.0.0:8000, auf Host8010gemappt). Sie haben nichts mit der Authentifizierung zu tun — sie sagen wo der Server lauscht, nicht wer ihn aufrufen darf.
Integration in VS Code
VS Code (mit GitHub Copilot / Agent-Modus) findet MCP-Server über eine mcp.json-Datei.
Erstellen Sie
.vscode/mcp.jsonin Ihrem Arbeitsbereich (oder fügen Sie es zu Ihrem Benutzer-mcp.jsonhinzu):
{
"servers": {
"afc-mcp": {
"type": "http",
"url": "http://localhost:8010/mcp"
}
}
}Ersetzen Sie
localhostdurch die Adresse des Docker-Hosts, wenn der Container woanders läuft.Wenn die Authentifizierung aktiviert ist, fügen Sie das Bearer-Token als Header hinzu:
{ "servers": { "afc-mcp": { "type": "http", "url": "http://localhost:8010/mcp", "headers": { "Authorization": "Bearer afc_xxxxxxxx" } } } }
Öffnen Sie die Befehlspalette → MCP: List Servers, wählen Sie
afc-mcpund starten Sie ihn.In der Chat-Ansicht (Agent-Modus) werden die AFC-Tools in der Tool-Auswahl verfügbar.
Integration mit Claude Desktop
Claude Desktop verbindet sich standardmäßig mit lokalen (stdio-)Servern. Um diesen
streamable-HTTP-Server zu erreichen, überbrücken Sie ihn mit mcp-remote.
Bearbeiten Sie 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"]
}
}
}Starten Sie Claude Desktop neu; afc-mcp erscheint im Tools-Menü.
Alternativ unterstützen neuere Claude-Desktop-Builds remote MCP-Server direkt unter Einstellungen → Connectors → Eigenen Connector hinzufügen mit derselben URL.
Verfügbare MCP-Tools
Server & System
get_server_status— Erreichbarkeit/Gesundheitszustand des MCP-Servers.get_system_info— AFC-Systeminformationen.
Switches & Fabrics
list_switches,get_switch— Switch-Inventar und Details pro Switch (Ports, Software, Tags).list_fabrics,get_fabric— Fabric-Inventar und Fabric-Mitglieder.
Routing & Overlay
list_vrfs,get_vrf— VRF-Inventar und VRF-Details.get_vrf_routes— VRF-IP-Routingtabelle (RIB) mit Next-Hop-Suche. Akzeptiert VRF und Switch per Name oder UUID; mit einerdestination(Host-IP oder CIDR) wird ein Longest-Prefix-Abgleich durchgeführt und die gewinnenden Routen sowie die Next-Hops zurückgegeben.get_vrf_arp— VRF-ARP-Tabelle (IP-zu-MAC-Zuordnungen), die auf den Switches gelernt wurde. Akzeptiert VRF und Switch per Name oder UUID; übergeben Sieswitch, um die Tabelle auf einen Switch zu beschränken. Jeder Eintrag enthält IP/MAC, Schnittstelle, physischen Port, zugehörigen Switch und den Erreichbarkeitszustand des Nachbarn (erreichbar, veraltet, unvollständig, …).get_vrf_ip_interfaces— VRF-L3-Schnittstellen (IP). Akzeptiert VRF und Switch per Name oder UUID; filtern Sie mitif_type(routed,vlan,loopback,evpn). Mitinclude_status(Standard) wird der operative Zustand (Admin-Status up/down, MAC, IP-MTU, Duplex, IPv4-Adresse) zusammen mit der Konfiguration zurückgegeben.get_vrf_static_routes— IP-statische Routen, die in einer VRF konfiguriert sind (Zielpräfix, Next Hop oder Nullroute/Discard, Next-Hop-Schnittstelle, Distanz, Tag, Typ und angewendete Switches). Akzeptiert VRF und Switch per Name oder UUID.get_vrf_bgp_status,get_vrf_bgp_summary— BGP-Status und -Zusammenfassung pro VRF.get_vrf_ospf_neighbors,get_vrf_ospf_summary— OSPF-Nachbarn und -Zusammenfassung pro VRF.list_evpn,list_evpn_routes— EVPN-Instanzen und EVPN-Routen.get_vrf_virtual_environment— Virtuelle Umgebung, die an eine VRF gebunden ist.
Standorte & Übersicht
list_afc_sites,get_afc_site_inventory— AFC-Standorte (remote) und deren Inventar.get_network_overview— Aggregierte Momentaufnahme des Netzwerkzustands.
Zustand
list_health_alerts— Aktive AFC-Health-Warnungen.run_health_check— Aggregierter Health-Check (Warnungen, Switch/Fabric-Health, BGP/OSPF-Nachbarschaften, optional HA- und Lizenzstatus).
Integrationen & VMware vCenter/vSphere
list_integrations— Alle Integrationspakete, deren entfernte Server und Verbindungsstatus.list_vmware_integrations— nur vSphere: ein Eintrag pro konfiguriertem vCenter mit Server-Adresse, Verbindungsstatus und Fehlermeldung.get_vmware_inventory— VMware-Hosts mit Standort (vCenter, Rechenzentrum, Cluster, Domäne) und Status (physische NIC-Zustände, Aufschlüsselung der VM-Einschaltzustände) sowie vSwitches, Portgruppen und VMs. Optional nach vCenter-Hostname filtern.list_vmware_vms— Flaches VM-Inventar mit Einschaltzustand und Platzierung (ESXi-Host, Cluster, Rechenzentrum, vCenter), IPs und Tags. Optionale Filter:power_state,host_name.get_vm_attachment— Den vollständigen Netzwerk-Verbindungspfad einer VM nachverfolgen (vNIC → Portgruppe → vSwitch → Host-Uplink → physischer Switch/Port).
Hinweise
AFC_BASE_URLmuss die Host-Root ohne/apisein; der Client fügt das Präfix/apiselbst hinzu.Die API-Authentifizierung verwendet
POST /api/auth/tokenmit den HeadernX-Auth-UsernameundX-Auth-Password; das Token wird automatisch wiederverwendet und bei401automatisch erneuert.Das vSphere-Paket bietet kein Feld für Strom-/Status pro Host an: Der Host-Status wird aus physischen NIC-Zuständen und einer VM-Zählung abgeleitet;
vcenterist die vSphere-Instanz-ID.
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.-