loading…
Search for a command to run...
loading…
Connects Claude with Cisco Packet Tracer 9.x to control network topologies, configure devices with IOS commands, and run diagnostics via natural language.
Connects Claude with Cisco Packet Tracer 9.x to control network topologies, configure devices with IOS commands, and run diagnostics via natural language.
Servidor MCP (Model Context Protocol) que conecta Claude con Cisco Packet Tracer 9.x para configurar topologías de red, asignar IPs, ejecutar comandos IOS y diagnosticar redes directamente desde lenguaje natural.
Claude (lenguaje natural)
↓
MCP Server (packet_tracer_mcp — Mats2208/MCP-Packet-Tracer)
↓ HTTP :54321
PT Script Module (Custom Interface — XHR polling)
↓ $se("runCode", cmd)
Script Engine (Script0.js — runCode + helpers IPC)
↓ ipc.network().getDevice()
Cisco Packet Tracer 9.x
Packet Tracer 9.0.0 no expone HTTP REST API para control externo de topología. El protocolo IPC (PTMP) requiere un ExApp registrado con archivo .pta cifrado (Cisco SDK privado). La solución es usar el sistema de Script Modules de PT 9.0.0:
| Capa | Tecnología | Función |
|---|---|---|
| MCP Server | Python FastMCP (:39000) | Recibe comandos del LLM |
| Bridge HTTP | Python HTTP (:54321) | Cola de comandos JS |
| Custom Interface | HTML + XHR en WebView de PT | Polling cada 500ms |
| Script Engine | JavaScript en PT | Ejecuta API IPC de PT |
MCP Packet Tracer/
├── mcpApp.py # MCP Telnet-based (dispositivos reales/GNS3)
├── services/
│ └── telnet_service.py # Servicio Telnet async para dispositivos reales
├── .env # Configuración
├── requirements.txt
└── README.md
El live deploy en PT 9.0.0 se realiza mediante el repo Mats2208/MCP-Packet-Tracer.
git clone https://github.com/Mats2208/MCP-Packet-Tracer
cd MCP-Packet-Tracer
pip install -e .
claude mcp add --scope user --transport stdio packet-tracer -- python -m packet_tracer_mcp --stdio
cd "MCP Packet Tracer"
python -m venv .venv
.venv\Scripts\pip install -r requirements.txt
UI HELPER del repo Mats2208mcp-bridge.ptsmcp-bridge.ptsfunction runCode(code) {
eval(code);
}
function configureIosDevice(name, cmds) {
var d = ipc.network().getDevice(name);
if (!d) return;
var t = d.getCommandLine();
if (!t) return;
// Verificar modo CLI antes de ejecutar
var prompt = t.getPrompt();
if (!prompt || prompt.charAt(prompt.length - 1) === '>') {
t.enterCommand("enable");
}
t.enterCommand("configure terminal");
// split maneja tanto \n real como \\n literal
var lines = cmds.split(/\\n|\n/);
for (var i = 0; i < lines.length; i++) {
var line = lines[i].trim();
if (line && line !== "enable" && line !== "configure terminal" && line !== "conf t") {
t.enterCommand(line);
}
}
}
function configurePcIp(name, dhcp, ip, mask, gw) {
var d = ipc.network().getDevice(name);
if (!d) return;
var port = d.getPort("FastEthernet0");
if (!port) return;
if (dhcp) {
port.setDhcpClientFlag(true);
} else {
port.setDhcpClientFlag(false);
port.setIpSubnetMask(ip, mask);
port.setDefaultGateway(gw);
}
}
function showMessage(msg) {}
Importante: Al enviar comandos desde Python via bridge, usar
\\n(doble barra) como separador para evitar SyntaxError en eval:queue('configureIosDevice("Router0", "router rip\\nversion 2\\nnetwork 10.0.0.0\\nend");')
index.htmlpython -m packet_tracer_mcp
El PT-MCP Control Center debe mostrar "PT connected".
// Obtener dispositivo
var d = ipc.network().getDevice("Router0");
// Ejecutar comandos IOS (routers/switches)
var t = d.getCommandLine();
t.enterCommand("enable");
t.enterCommand("configure terminal");
t.enterCommand("interface FastEthernet0/0");
t.enterCommand("ip address 10.0.0.1 255.255.255.0");
t.enterCommand("no shutdown");
t.enterCommand("end");
// Configurar IP en PC
var port = d.getPort("FastEthernet0");
port.setDhcpClientFlag(false);
port.setIpSubnetMask("10.0.0.2", "255.255.255.0"); // HostPort API
port.setDefaultGateway("10.0.0.1");
// Listar dispositivos
var n = ipc.network();
for (var i = 0; i < n.getDeviceCount(); i++) {
var name = n.getDeviceAt(i).getName();
}
| Categoría | Herramientas |
|---|---|
| Planificación | pt_plan_topology, pt_estimate_plan, pt_validate_plan, pt_fix_plan |
| Generación | pt_generate_script, pt_generate_configs, pt_full_build |
| Deploy | pt_live_deploy, pt_bridge_status |
| Catálogo | pt_list_devices, pt_list_templates, pt_get_device_details |
| Proyectos | pt_export, pt_list_projects, pt_load_project |
Para dispositivos Cisco reales o GNS3 (donde Telnet sí funciona):
| Herramienta | Descripción |
|---|---|
connect_device |
Conectar via Telnet |
execute_cli |
Ejecutar comando IOS |
execute_config_block |
Bloque de configuración |
ping |
Ping desde dispositivo |
traceroute |
Traceroute |
show_interfaces |
show ip interface brief |
show_running_config |
Configuración activa |
show_routing_table |
Tabla de ruteo |
save_config |
write memory |
Requisito: dispositivo con IP real y line vty 0 4 / transport input telnet.
| Función | Estado |
|---|---|
| Configurar interfaces IOS | ✅ via getCommandLine().enterCommand() |
| Configurar IP en PCs | ✅ via port.setIpSubnetMask() |
| Listar dispositivos | ✅ via ipc.network().getDeviceAt() |
| Agregar dispositivos | ❌ addDevice no existe en Script Engine |
| Agregar enlaces | ⚠️ addLink puede funcionar si dispositivos existen |
| REST API nativa | ❌ PT no expone HTTP REST para topología |
PTMP sin .pta |
❌ Requiere ExApp registrado con SDK Cisco privado |
| Paquete | Uso |
|---|---|
mcp >= 1.0.0 |
SDK del protocolo MCP |
python-dotenv >= 1.0.0 |
Variables de entorno |
| Cisco Packet Tracer 9.x | Simulador de red |
MIT
Выполни в терминале:
claude mcp add mcp-packet-tracer -- npx