gns3-link-management

$npx mdskill add automateyournetwork/netclaw/gns3-link-management

Manage GNS3 links to connect, disconnect, and isolate nodes in network simulations

  • Solve tasks like connecting devices, removing links, and isolating nodes for testing
  • Depends on GNS3 API and MCP server for communication with GNS3 projects
  • Uses project IDs, node IDs, and interface ports to determine link actions
  • Returns updated link status or confirmation of link changes via JSON responses

SKILL.md

.github/skills/gns3-link-managementView on GitHub ↗
---
name: gns3-link-management
description: "Manage GNS3 links - connect/disconnect node interfaces, isolate nodes"
license: Apache-2.0
user-invocable: true
metadata:
  openclaw:
    requires:
      bins: ["python3"]
      env: ["GNS3_URL", "GNS3_USER", "GNS3_PASSWORD"]
---

# GNS3 Link Management

Create and manage links between node interfaces in GNS3 projects. Build network topologies by connecting devices and isolate nodes for testing.

## When to Use

- Connecting two network devices together
- Building out a network topology
- Viewing existing connections in a lab
- Removing links between devices
- Isolating a node without deleting its links
- Re-enabling links after isolation testing

## MCP Server

- **Command**: `python3 -u mcp-servers/gns3-mcp-server/gns3_mcp_server.py` (stdio transport)
- **Requires**: `GNS3_URL`, `GNS3_USER`, `GNS3_PASSWORD` environment variables

## Available Tools

| Tool | Parameters | What It Does |
|------|------------|--------------|
| `gns3_list_links` | project_id | List all links with connected nodes and interfaces |
| `gns3_create_link` | project_id, node1, port1, node2, port2 | Create a link between two interfaces |
| `gns3_delete_link` | project_id, link_id | Delete a link |
| `gns3_isolate_node` | project_id, node_id, isolate | Disable/enable all links to a node |

## Interface Name Formats

The tools support multiple interface naming conventions:

| Format | Example | Adapter | Port |
|--------|---------|---------|------|
| eth# | eth0, eth1 | 0 | 0, 1 |
| Ethernet# | Ethernet0 | 0 | 0 |
| Gi#/# | Gi0/0, Gi0/1 | 0 | 0, 1 |
| GigabitEthernet#/# | GigabitEthernet0/0 | 0 | 0 |
| Fa#/# | Fa0/0, Fa0/1 | 0 | 0, 1 |
| e# | e0, e1 | 0 | 0, 1 |
| port# | port0, port1 | 0 | 0, 1 |
| #/# | 0/0, 0/1 | 0 | 0, 1 |

## Workflow Examples

### Build a Topology

```bash
# Connect router to switch
"Connect router1 Gi0/0 to switch1 eth0 in routing-test"

# Connect switch to another router
"Connect switch1 eth1 to router2 Gi0/0 in routing-test"

# Connect hosts to switch
"Connect host1 eth0 to switch1 eth2 in routing-test"
```

### View Topology

```bash
# List all connections
"List all links in routing-test"
```

### Isolate for Testing

```bash
# Isolate a node (disable all its links)
"Isolate router1 in routing-test"

# Test behavior with router1 disconnected...

# Re-enable links
"Unisolate router1 in routing-test"
```

### Clean Up

```bash
# Remove a specific link
"Delete the link between router1 and switch1 in routing-test"
```

## Integration with Other Skills

- **gns3-project-lifecycle**: Create project first
- **gns3-node-operations**: Add nodes before connecting them
- **gns3-packet-capture**: Capture traffic on links

## Error Handling

| Error Code | Meaning | Resolution |
|------------|---------|------------|
| GNS3_NOT_FOUND | Node or link doesn't exist | Check names/IDs |
| GNS3_CONFLICT | Interface already connected | Check existing links first |
| GNS3_VALIDATION | Invalid interface format | Use supported naming conventions |

## Notes

- Links can only be created between existing nodes
- Each interface can only have one link
- Isolating a node disables links without deleting them
- Link IDs are UUIDs - use `gns3_list_links` to find them
- All operations logged to GAIT audit trail

More from automateyournetwork/netclaw

SkillDescription
aap-automationRed Hat Ansible Automation Platform — inventory management, job template execution, project SCM sync, ad-hoc commands, host management, Galaxy content discovery. Use when automating infrastructure with Ansible, running playbooks, managing inventories, or searching for Ansible collections and roles.
aap-edaEvent-Driven Ansible (EDA) — activation lifecycle, rulebook management, decision environments, event stream monitoring. Use when managing event-driven automation triggers, enabling/disabling activations, or reviewing EDA rulebooks.
aap-lintansible-lint playbook and role validation — syntax checking, best practice enforcement, project-wide analysis, rule filtering. Use when validating Ansible playbooks, checking code quality, or enforcing automation best practices before deployment.
aci-change-deploySafe ACI policy change deployment - ServiceNow CR lifecycle, pre/post-change fault baselines, APIC policy application, automatic rollback on fault delta, and GAIT audit trail. Use when deploying ACI policy changes, creating tenants or EPGs, pushing config to APIC, or running a change window with rollback protection.
aci-fabric-auditComprehensive Cisco ACI fabric health audit - node status, tenant/VRF/BD/EPG policy review, contract analysis, fault triage, and endpoint learning verification. Use when auditing ACI fabric health, checking for faults, reviewing tenant policies, or running pre/post-change baselines on APIC.
arista-cvpArista 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.
aruba-cx-configView and manage Aruba CX switch configurations, perform ISSU upgrades, and firmware operations
aruba-cx-interfacesMonitor Aruba CX switch interface status, LLDP neighbors, and optical transceiver health
aruba-cx-switchingView and manage Aruba CX switch VLANs and MAC address tables for Layer 2 operations
aruba-cx-systemDiscover Aruba CX switch system information, firmware versions, and VSF topology