Packet Tracer MCP

Packet Tracer MCP

An MCP server that allows LLMs to create, configure, validate, and explain Cisco Packet Tracer network topologies. It provides a comprehensive suite of tools for generating deployment scripts, CLI configurations, and automated network troubleshooting.

Category
Visit Server

README

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 Desktopclaude_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):

  1. Abrí Packet Tracer 8.2+
  2. Abrí Builder Code Editor (Extensions > Builder Code Editor)
  3. 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. Cuando el LLM genera comandos, el MCP Server los encola en el bridge y PT los ejecuta en tiempo real.


Arquitectura

src/packet_tracer_mcp/
├── adapters/mcp/          # Tools y resources MCP
├── application/           # Use cases + DTOs
├── domain/
│   ├── models/           # TopologyPlan, DevicePlan, LinkPlan
│   ├── services/         # Orchestrator, IPPlanner, Validator, AutoFixer
│   └── rules/            # Reglas de validación
├── infrastructure/
│   ├── catalog/          # Catálogo de dispositivos, cables, templates
│   ├── generator/        # Generador de scripts JS + configs CLI
│   ├── execution/        # Bridge HTTP + Live Executor
│   └── persistence/      # Proyectos guardados
├── server.py             # Entry point del servidor
└── settings.py           # Configuración

Flujo de datos

  1. Request → el LLM describe qué red quiere
  2. Planificación → el Orchestrator genera un TopologyPlan completo
  3. Validación → el Validator verifica modelos, puertos, cables, IPs
  4. Auto-fix → el AutoFixer corrige errores comunes automáticamente
  5. Generación → se produce el script JS para PTBuilder + configs CLI
  6. Deploy → se envía a PT vía bridge HTTP o se exporta a archivos

Direccionamiento IP

  • LANs: 192.168.X.0/24 — gateway en .1, PCs desde .2
  • Links inter-router: 10.0.X.0/30 — 2 hosts por enlace

Routing soportado

  • static — genera ip route completas
  • ospf — genera router ospf con áreas
  • none — sin routing

Tests

python -m pytest tests/ -v

Requisitos

  • Python 3.11+
  • Cisco Packet Tracer 8.2+ (para live deploy)
  • PTBuilder extension instalada en PT (incluida en PTBuilder/)
  1. Listo. El MCP server puede crear dispositivos, enlaces y configurar routers automáticamente.

Nota técnica: El bootstrap inyecta un setInterval en el webview que hace polling HTTP. El $se('runCode', ...) bridgea del webview al Script Engine de PT. PTBuilder usa executeCode() que internamente hace code.replace(/\n/g, ""), por eso el bootstrap usa /* */ comments en vez de //.

Setup permanente (opcional):

Para que el polling arranque automáticamente al abrir Builder Code Editor:

  1. En PT: Extensions > Scripting Interface
  2. Seleccioná el módulo Builder
  3. Reemplazá main.js e interface.js con las versiones modificadas en PTBuilder/source/
  4. Guardá y reiniciá el módulo

MCP Tools (22)

Consulta

Tool Descripción
pt_list_devices Lista todos los dispositivos disponibles con sus puertos
pt_list_templates Lista las plantillas de topología disponibles
pt_get_device_details Detalles completos de un modelo específico

Estimación

Tool Descripción
pt_estimate_plan Dry-run: estima dispositivos, enlaces y complejidad sin generar

Planificación

Tool Descripción
pt_plan_topology Genera un plan completo desde parámetros (routers, PCs, routing, etc.)

Validación

Tool Descripción
pt_validate_plan Valida un plan con 15 tipos de error tipificados
pt_fix_plan Auto-corrige errores comunes (cables, modelos, puertos)
pt_explain_plan Genera explicación en lenguaje natural de cada decisión

Generación

Tool Descripción
pt_generate_script Genera script JavaScript para PTBuilder
pt_generate_configs Genera configuraciones CLI (IOS) por dispositivo

Pipeline completo

Tool Descripción
pt_full_build Todo en uno: planifica, valida, genera y exporta

Despliegue en vivo

Tool Descripción
pt_deploy Copia script al portapapeles + instrucciones manuales
pt_live_deploy Envía comandos directo a PT en tiempo real via HTTP bridge
pt_bridge_status Verifica si el bridge está activo y PT está conectado

Interacción con topología existente

Tool Descripción
pt_query_topology Consulta qué dispositivos existen actualmente en PT
pt_delete_device Elimina un dispositivo y sus enlaces de PT
pt_rename_device Renombra un dispositivo en la topología activa
pt_move_device Mueve un dispositivo a nuevas coordenadas en el canvas
pt_delete_link Elimina el enlace de una interfaz específica
pt_send_raw Envía código JS arbitrario al Script Engine de PT

Exportación y proyectos

Tool Descripción
pt_export Exporta a archivos (JS script, CLI configs, JSON plan)
pt_list_projects Lista proyectos guardados
pt_load_project Carga un proyecto guardado

MCP Resources (5)

URI Descripción
pt://catalog/devices Todos los dispositivos con puertos
pt://catalog/cables Tipos de cable
pt://catalog/aliases Aliases de modelos
pt://catalog/templates Plantillas de topología
pt://capabilities Capacidades del servidor

Dispositivos soportados

Routers

Modelo Puertos
1941 Gig0/0, Gig0/1, Se0/0/0, Se0/0/1
2901 Gig0/0, Gig0/1, Se0/0/0, Se0/0/1
2911 Gig0/0, Gig0/1, Gig0/2, Se0/0/0, Se0/0/1
4321 (ISR4321) Gig0/0/0, Gig0/0/1

Switches

Modelo Puertos
2960-24TT Fa0/1–24, Gig0/1–2
3560-24PS Fa0/1–24, Gig0/1–2

End Devices

Modelo Puertos
PC-PT Fa0
Server-PT Fa0
Laptop-PT Fa0

Otros

Modelo Tipo
Cloud-PT WAN Cloud
AccessPoint-PT Wireless AP

Tipos de cable

Cable Uso típico
straight Switch↔Router, Switch↔PC
cross Router↔Router, Switch↔Switch, PC↔PC
serial Router Serial↔Router Serial (WAN)
fiber Conexiones de fibra óptica
auto Detección automática

Direccionamiento IP

  • LANs: 192.168.X.0/24 — Gateway en .1, PCs desde .2
  • Inter-router links: 10.0.X.0/30 — Punto a punto entre routers
  • DHCP: Pool automático por LAN con exclusión del gateway

Routing soportado

Protocolo Estado Genera
static ✅ Completo ip route commands
ospf ✅ Completo router ospf configs
eigrp 🔲 Enum only No implementado
rip 🔲 Enum only No implementado
none Sin routing

Templates

Template Descripción
single_lan 1 router + 1 switch + PCs
multi_lan N routers interconectados, cada uno con su LAN
multi_lan_wan Multi LAN con nube WAN
star Router central con routers satelitales
hub_spoke Hub-and-spoke
branch_office Sucursales
router_on_a_stick Inter-VLAN routing
three_router_triangle 3 routers en triángulo
custom Personalizado

Arquitectura

src/packet_tracer_mcp/
├── adapters/mcp/              # MCP protocol layer
│   ├── tool_registry.py       # 22 MCP tools
│   └── resource_registry.py   # 5 MCP resources
├── application/               # Use cases + DTOs (requests/responses)
├── domain/                    # Core business logic
│   ├── models/               # TopologyPlan, DevicePlan, LinkPlan, errors
│   ├── services/             # Orchestrator, IPPlanner, Validator, AutoFixer
│   └── rules/                # Validation rules (devices, cables, IPs)
├── infrastructure/
│   ├── catalog/              # Device catalog, cables, templates, aliases
│   ├── generator/            # PTBuilder JS + CLI config generators
│   ├── execution/            # Executors + HTTP bridge
│   │   ├── live_bridge.py    # PTCommandBridge (HTTP server :54321)
│   │   ├── live_executor.py  # LiveExecutor (sends plan → bridge → PT)
│   │   ├── deploy_executor.py# DeployExecutor (clipboard + instructions)
│   │   └── manual_executor.py# ManualExecutor (file export)
│   └── persistence/          # Project save/load
├── shared/                    # Enums, constants, utilities
├── server.py                  # MCP server entry point
└── settings.py                # Version + config

Flujo de datos

TopologyRequest → Orchestrator → IPPlanner → Validator → AutoFixer
                                                            ↓
                                              TopologyPlan (validated)
                                                            ↓
                                    ┌───────────────────────┼──────────────────┐
                                    ↓                       ↓                  ↓
                            PTBuilder Script          CLI Configs        Live Deploy
                           (addDevice/addLink)    (hostname, IPs,     (HTTP bridge
                                                   DHCP, routing)      → PT real-time)

PTBuilder (extensión de PT)

El directorio PTBuilder/ contiene el código fuente del Script Module "Builder Code Editor":

Archivo Función
source/main.js Entry point — crea menú y webview
source/runcode.js runCode(scriptText) — ejecuta JS en Script Engine
source/userfunctions.js addDevice(), addLink(), configureIosDevice(), configurePcIp(), queryTopology(), deleteDevice(), renameDevice(), moveDevice(), deleteLink()
source/devices.js Mapeo modelo → tipo numérico de PT
source/links.js Mapeo tipo de cable → ID numérico
source/modules.js Mapeo módulos de hardware
source/window.js Gestión de la ventana webview (QWebEngine)
source/interface/ HTML + JS del editor web (status panel + real-time logging)
Builder.pts Paquete compilado de la extensión (binario, no editable)

API principal de PTBuilder

// Crear dispositivo en coordenadas (x, y)
addDevice("R1", "2911", 100, 200);

// Crear enlace entre dos dispositivos
addLink("R1", "GigabitEthernet0/1", "S1", "GigabitEthernet0/1", "straight");

// Configurar router/switch con CLI commands
configureIosDevice("R1", "enable\nconfigure terminal\nhostname R1\ninterface GigabitEthernet0/0\nip address 192.168.0.1 255.255.255.0\nno shutdown\nexit");

// Configurar IP estática de PC
configurePcIp("PC1", false, "192.168.0.2", "255.255.255.0", "192.168.0.1");

// Configurar PC para DHCP
configurePcIp("PC1", true);

Tests

# Todos los tests
python -m pytest tests/ -v

# Un archivo
python -m pytest tests/test_full_build.py -v

# Un test específico
python -m pytest tests/test_full_build.py::TestFullBuild::test_basic_2_routers -v

34 tests cubriendo: IP planning, validación, auto-fix, explicación, estimación, generación y full build integration.


Ejemplo de uso rápido

Usuario:  "Creame una red con 2 routers, 2 switches, 4 PCs, DHCP y static routing"

→ pt_full_build genera:
  - 8 dispositivos: R1, R2, SW1, SW2, PC1, PC2, PC3, PC4
  - 7 enlaces: R1↔R2 (cross), R1↔SW1 (straight), R2↔SW2 (straight), SW1↔PC1, SW1↔PC2, SW2↔PC3, SW2↔PC4
  - IPs: LAN1 192.168.0.0/24, LAN2 192.168.1.0/24, Inter-router 10.0.0.0/30
  - DHCP pools en R1 y R2
  - Static routes bidireccionales
  - 23 comandos JavaScript enviados a PT

→ pt_live_deploy envía todo a Packet Tracer y aparecen los dispositivos configurados

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured