Create, configure, validate, and deploy network topologies in Cisco Packet Tracer
Packet Tracer MCP Server
Servidor MCP que permite a cualquier LLM (Copilot, Claude, etc.) crear, configurar, validar y desplegar topologías de red completas en Cisco Packet Tracer.
Le decís "creame una red con 3 routers, DHCP y OSPF" y el servidor planifica la topología, valida todo, genera los scripts y configs, y lo despliega directo en PT en tiempo real.
Python 3.11+ · Pydantic 2.0+ · FastMCP · Streamable HTTP
Instalación
git clone <repo>
cd PACKET-TRACER
pip install -e .
Uso
1. Levantar el servidor
python -m src.packet_tracer_mcp
Esto inicia:
- Servidor MCP en
http://127.0.0.1:39000/mcp(streamable-http) - Bridge HTTP en
http://127.0.0.1:54321(comunicación con Packet Tracer)
Ambos arrancan automáticamente. No se necesita ningún script adicional.
Para modo stdio (debug/legacy):
python -m src.packet_tracer_mcp --stdio
2. Configurar el cliente MCP
VS Code — .vscode/mcp.json:
{
"servers": {
"packet-tracer": {
"url": "http://127.0.0.1:39000/mcp"
}
}
}
Claude Desktop — claude_desktop_config.json:
{
"mcpServers": {
"packet-tracer": {
"url": "http://127.0.0.1:39000/mcp"
}
}
}
3. Usar desde el LLM
Pedile al LLM que cree una red. El servidor expone 22 tools MCP que cubren todo el pipeline:
| Tool | Qué hace |
|---|---|
pt_list_devices |
Catálogo de dispositivos disponibles |
pt_list_templates |
Templates de topologías predefinidas |
pt_get_device_details |
Detalle de puertos/interfaces de un modelo |
pt_estimate_plan |
Estimación rápida sin generar plan completo |
pt_plan_topology |
Genera un plan completo (dispositivos, links, IPs, DHCP, rutas) |
pt_validate_plan |
Valida que el plan sea correcto |
pt_fix_plan |
Auto-corrige errores comunes |
pt_explain_plan |
Explicación en lenguaje natural del plan |
pt_generate_script |
Genera script JavaScript para PTBuilder |
pt_generate_configs |
Genera configuraciones CLI por dispositivo |
pt_full_build |
Pipeline completo de una sola vez |
pt_deploy |
Copia script al portapapeles con instrucciones |
pt_live_deploy |
Envía comandos directo a PT en tiempo real |
pt_bridge_status |
Verifica conexión con PT |
pt_query_topology |
Consulta dispositivos existentes en PT |
pt_delete_device |
Elimina un dispositivo de PT |
pt_rename_device |
Renombra un dispositivo en PT |
pt_move_device |
Mueve un dispositivo en el canvas |
pt_delete_link |
Elimina un enlace de PT |
pt_send_raw |
Envía JS arbitrario a PT |
pt_export |
Exporta plan + scripts + configs a archivos |
pt_list_projects / pt_load_project |
Gestión de proyectos guardados |
¿Por qué el servidor corre en el puerto 39000?
El servidor MCP usa streamable-http en lugar de stdio. Esto significa que el servidor se levanta una vez como un proceso HTTP persistente y los clientes MCP se conectan a él por red.
Ventajas sobre stdio:
- Persistencia — el servidor queda corriendo, no se reinicia con cada sesión del editor
- Múltiples clientes — podés conectar VS Code, Claude Desktop u otros clientes al mismo servidor simultáneamente
- Estado compartido — el bridge HTTP hacia Packet Tracer se mantiene activo entre requests
- Debug más fácil — podés hacer curl al servidor, ver logs en la terminal donde corre
- Desacoplamiento — el servidor no depende del ciclo de vida del editor
El puerto 39000 fue elegido para no colisionar con puertos comunes (3000, 5000, 8000, 8080) ni con el bridge interno de PT que usa el 54321.
Live Deploy — Despliegue en tiempo real
La feature principal: enviar comandos directamente a Packet Tracer sin copiar/pegar nada.
┌─────────┐ ┌──────────────┐ HTTP ┌──────────────┐ $se() ┌──────────────┐
│ LLM │ MCP │ MCP Server │ :54321 │ PTBuilder │ IPC │ Packet Tracer│
│(Copilot)│ ──────► │ (:39000) │ ────────► │ (WebView) │ ─────► │ (Engine) │
└─────────┘ └──────────────┘ └──────────────┘ └──────────────┘
Hay dos servidores HTTP corriendo:
| Puerto | Qué es | Para qué |
|---|---|---|
| 39000 | Servidor MCP (streamable-http) | Recibe requests de tools del LLM/editor |
| 54321 | Bridge HTTP interno | Envía comandos JS a PTBuilder dentro de Packet Tracer |
Setup del bridge (una vez por sesión de PT):
- Abrí Packet Tracer 8.2+
- Abrí Builder Code Editor (Extensions > Builder Code Editor)
- Pegá este bootstrap y hacé clic en Run:
/* PT-MCP Bridge */ window.webview.evaluateJavaScriptAsync("setInterval(function(){var x=new XMLHttpRequest();x.open('GET','http://127.0.0.1:54321/next',true);x.onload=function(){if(x.status===200&&x.responseText){$se('runCode',x.responseText)}};x.onerror=function(){};x.send()},500)");
Eso hace que PTBuilder haga polling cada 500ms al bridge. Cu
Tools (5)
pt_list_devicesLists all available network devices in the catalog.pt_plan_topologyGenerates a complete network plan including devices, links, IPs, DHCP, and routing.pt_live_deploySends configuration commands directly to Packet Tracer in real-time.pt_full_buildExecutes the full pipeline of planning, validation, and deployment.pt_query_topologyQueries the current state of devices existing in the Packet Tracer canvas.Configuration
{"mcpServers": {"packet-tracer": {"url": "http://127.0.0.1:39000/mcp"}}}