workspace/skills/arista-cvp/SKILL.md
Arista CloudVision Portal (CVP) automation via REST API — device inventory, events, connectivity monitoring, tag management (4 tools). Use when managing Arista devices, checking CloudVision events, monitoring network connectivity probes, or tagging devices in CVP.
npx skillsauth add automateyournetwork/netclaw arista-cvpInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
| Field | Value |
|-------|-------|
| Repository | noredistribution/mcp-cvp-fun |
| Transport | stdio (FastMCP) |
| Python | 3.12+ |
| Protocol | HTTPS REST → CloudVision Resource API |
| Dependencies | fastmcp, httpx, python-dotenv |
| Install | git clone + uv run (dependencies resolved at runtime) |
| Entry Point | uv run --with fastmcp fastmcp run /path/to/mcp_server_rest.py |
| Status | Community demo — not officially supported by Arista |
CloudVision uses service account tokens passed as HTTP cookies:
.env file as CVPTOKENThe token is sent as an access_token cookie with every API request (not a Bearer header).
| Variable | Required | Purpose |
|----------|----------|---------|
| CVP | Yes | CloudVision instance hostname (e.g., www.arista.io or cvp.example.com) |
| CVPTOKEN | Yes | Service account token for API authentication |
| Tool | Parameters | Description |
|------|-----------|-------------|
| get_inventory | — | Get inventory of all devices from CloudVision (hostname, model, serial, version, MAC, IP, streaming status) |
| Tool | Parameters | Description |
|------|-----------|-------------|
| get_events | — | Get all events from CloudVision (alerts, warnings, informational events with severity, timestamps, device associations) |
| Tool | Parameters | Description |
|------|-----------|-------------|
| get_connectivity_monitor | — | Get Connectivity Monitor probe statistics (jitter, latency, packet loss, HTTP response time across all probes) |
| Tool | Parameters | Description |
|------|-----------|-------------|
| create_tag | tag_name, tag_value | Create a device-level tag in CloudVision via workspace workflow (create workspace → create tag → build → submit) |
create_tag Workflow DetailThe create_tag tool follows CloudVision's workspace model — a 5-step process:
/api/resources/workspace/v1/WorkspaceConfig with a UUID-based workspace/api/resources/tag/v2/TagConfig with ELEMENT_TYPE_DEVICE, workspace ID, tag name/valueREQUEST_START_BUILD to validate changesREQUEST_SUBMIT to apply the tag| Method | Endpoint | Tool |
|--------|----------|------|
| GET | /api/resources/inventory/v1/Device/all | get_inventory |
| GET | /api/resources/event/v1/Event/all | get_events |
| GET | /api/resources/connectivitymonitor/v1/ProbeStats/all | get_connectivity_monitor |
| POST | /api/resources/workspace/v1/WorkspaceConfig | create_tag (workspace create/build/submit) |
| POST | /api/resources/tag/v2/TagConfig | create_tag (tag creation) |
Responses use newline-delimited JSON (NDJSON) format, consistent with CloudVision's streaming resource API.
get_inventory → list all Arista devices (hostname, model, serial, version, MAC, IP)
→ Cross-reference with NetBox/Nautobot → flag discrepancies
→ GAIT
get_events → retrieve all CloudVision events
→ Filter by severity (critical, warning, info)
→ Correlate events with device inventory
→ Severity-sort findings → GAIT
get_inventory → identify all managed devices
→ get_events → check for active alarms and warnings
→ get_connectivity_monitor → analyze jitter, latency, packet loss
→ Correlate connectivity issues with events → severity-sort → GAIT
ServiceNow CR must be in Implement state
→ get_inventory → verify target devices exist
→ create_tag(tag_name, tag_value) → apply device-level tag via workspace workflow
→ get_inventory → verify tag applied
→ GAIT
get_connectivity_monitor → capture current probe statistics
→ Record jitter, latency, packet loss baselines per probe
→ Compare against thresholds → flag degradation
→ GAIT
| Skill | Integration |
|-------|-------------|
| pyats-network | CVP MCP for Arista fleet visibility, pyATS MCP for Cisco devices — unified multi-vendor monitoring |
| junos-network | CVP MCP for Arista, JunOS MCP for Juniper — multi-vendor device inventory and health |
| netbox-reconcile | Cross-reference CVP device inventory (model, serial, version) against NetBox source of truth |
| nautobot-sot | Same as NetBox — validate Arista device IPAM data in Nautobot |
| infrahub-sot | Cross-reference Infrahub node data with Arista device inventory from CVP |
| servicenow-change-workflow | Gate all create_tag operations behind ServiceNow Change Requests |
| gait-session-tracking | Every CVP inventory query, event pull, and tag creation logged in GAIT |
| te-network-monitoring | Correlate ThousandEyes path data with CVP connectivity monitor probes |
| nvd-cve | Scan EOS versions from get_inventory against NVD vulnerability database |
| markmap-viz | Generate topology mind maps from CVP device inventory data |
| Capability | CVP MCP | pyATS MCP | JunOS MCP |
|-----------|---------|-----------|-----------|
| Vendor | Arista (via CVP) | Cisco (IOS-XE, NX-OS, IOS-XR) | Juniper |
| Protocol | HTTPS REST → CVP Resource API | SSH + Genie parsers | NETCONF → PyEZ |
| Device Inventory | get_inventory (fleet-wide) | pyats_learn("platform") per device | gather_device_facts per device |
| Event Monitoring | get_events (fleet-wide) | Per-device show commands | Per-device show commands |
| Connectivity Metrics | get_connectivity_monitor (probes) | Per-device show commands | Per-device show commands |
| Config Push | Via CVP Change Control (not in MCP) | pyats_configure_device | load_and_commit_config |
| Tag/Label Mgmt | create_tag (workspace workflow) | N/A | N/A |
| Batch Operations | All tools are fleet-wide by default | pyats_pcall (parallel pCall) | execute_junos_command_batch |
| MCP Tools | 4 | 8 | 10 |
get_inventory first — verify CloudVision is reachable and devices are streaming before deeper queriesget_events to identify active issues before any tag operationscreate_tag calls must have a ServiceNow CR in Implement stateget_connectivity_monitor to establish baselines before and after network changestesting
Human-in-the-loop escalation via HumanRail — route low-confidence agent decisions, pre-destructive operation approvals, and ambiguous incident tickets to real human engineers. Human answers are verified and returned as structured output. Workers are paid via Lightning Network. Use when the agent is uncertain, when a destructive change needs explicit human sign-off beyond a ServiceNow CR, or when an ambiguous ticket requires human triage before automated handling.
testing
Manage EVE-NG node lifecycle. Use when listing nodes, checking runtime state, creating or deleting nodes, starting or stopping nodes or whole labs, verifying node details, or wiping node NVRAM back to factory defaults.
development
Manage EVE-NG labs and platform inventory. Use when listing labs, checking lab metadata, creating or deleting labs, importing or exporting lab archives, checking EVE-NG health or auth, or verifying available node images before build work.
tools
Execute live CLI commands on running EVE-NG nodes over telnet console. Use when running show commands, making live config changes, verifying protocol state, testing connectivity, checking console readiness, or interacting with IOS, Junos, VPCS, EOS, or NX-OS nodes.