packet-tracer
README.md
# Servidor MCP de Cisco Packet Tracer
Servidor **Model Context Protocol (MCP)** que permite a cualquier cliente con soporte MCP (OpenCode, Claude Code, Codex CLI, VS Code, Cursor) planificar, validar, generar y desplegar topologías de red completas directamente en **Cisco Packet Tracer** a partir de una instrucción en lenguaje natural.
**Ejemplo:** *"crea una red con 3 routers, OSPF y DHCP"* -> el servidor planifica, valida, genera configuraciones y despliega la topología en Packet Tracer en tiempo real.
Este repositorio contiene **todo lo necesario para replicar el servidor**: código fuente, catálogo de dispositivos, módulos, cables, pruebas y configuración de ejemplo para OpenCode.
---
## Tabla de contenidos
1. [Requisitos previos](#1-requisitos-previos)
2. [Instalar Python](#2-instalar-python)
3. [Instalar Cisco Packet Tracer](#3-instalar-cisco-packet-tracer)
4. [Obtener este repositorio](#4-obtener-este-repositorio)
5. [Instalar el servidor MCP](#5-instalar-el-servidor-mcp)
6. [Instalar OpenCode](#6-instalar-opencode)
7. [Configurar el MCP en OpenCode](#7-configurar-el-mcp-en-opencode)
8. [Verificar la instalación](#8-verificar-la-instalación)
9. [Primer uso](#9-primer-uso)
10. [Despliegue en vivo en Packet Tracer](#10-despliegue-en-vivo-en-packet-tracer)
11. [Solución de problemas](#11-solución-de-problemas)
12. [Estructura del repositorio](#12-estructura-del-repositorio)
13. [Atribución y licencia](#13-atribución-y-licencia)
---
## 1. Requisitos previos
| Requisito | Versión mínima | Notas |
|-----------|----------------|-------|
| Sistema operativo | Windows / macOS / Linux | Mismo comportamiento en los tres |
| Python | 3.11+ | Requerido |
| Cisco Packet Tracer | 8.2+ | Solo para despliegue en vivo (probado en 8.2 y 9.0) |
| Git | Cualquiera | Para clonar el repositorio |
No se necesitan claves, tokens ni variables de entorno. Este repositorio no contiene secretos.
---
## 2. Instalar Python
### Windows
1. Descargue el instalador desde [python.org/downloads](https://www.python.org/downloads/).
2. Ejecute el instalador y **marque** la opción **"Add Python to PATH"**.
3. Verifique en PowerShell:
```powershell
python --version
# Python 3.11.x o superior
pip --version
```
### macOS
```bash
brew install python@3.11
python3 --version
```
### Linux (Ubuntu/Debian)
```bash
sudo apt update
sudo apt install python3.11 python3.11-venv python3-pip
python3.11 --version
```
---
## 3. Instalar Cisco Packet Tracer
1. Regístrese en [netacad.com](https://www.netacad.com/resources/lab-downloads) y descargue Cisco Packet Tracer (versión 8.2 o superior; se recomienda 9.0).
2. Instale siguiendo el asistente de la plataforma.
3. Abra Packet Tracer al menos una vez para confirmar que funciona.
> El despliegue en vivo requiere la extensión **MCP-BUILDER** incluida en este repositorio (`V3-MCP-BUILDER.pts`). Véase la sección [10. Despliegue en vivo](#10-despliegue-en-vivo-en-packet-tracer).
---
## 4. Obtener este repositorio
```bash
git clone https://github.com/oropezagabriel2004-blip/MCP-packet
cd MCP-packet
```
---
## 5. Instalar el servidor MCP
### 5.1. Crear un entorno virtual (recomendado)
**Windows (PowerShell):**
```powershell
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install --upgrade pip
.\.venv\Scripts\python.exe -m pip install -e .
```
**macOS / Linux:**
```bash
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -e .
```
### 5.2. Instalar dependencias opcionales
**Herramientas offline de archivos `.pkt`/`.pka`** (opcional, requiere `twofish`):
```bash
pip install -e ".[offline]"
```
**Dependencias de desarrollo y pruebas** (opcional):
```bash
pip install -e ".[dev]"
```
### 5.3. Verificar la instalación del paquete
```bash
python -m packet_tracer_mcp --help
```
También se instala un script de consola `pt-mcp`:
```bash
pt-mcp --stdio
```
---
## 6. Instalar OpenCode
### Windows
OpenCode se distribuye como binario nativo. La forma más sencilla es con npm:
```powershell
npm install -g @opencode/cli
```
> Si no tiene Node.js instalado, descárguelo desde [nodejs.org](https://nodejs.org/) (versión LTS) y vuelva a ejecutar el comando.
Verifique:
```powershell
opencode --version
```
### macOS
```bash
brew install opencode 2>/dev/null || npm install -g @opencode/cli
opencode --version
```
### Linux
```bash
npm install -g @opencode/cli
opencode --version
```
> **Nota:** Windows no soporta gestores de paquetes para OpenCode. Use npm o descargue el binario standalone desde la página oficial.
---
## 7. Configurar el MCP en OpenCode
Este repositorio incluye un archivo `opencode.jsonc` en la raíz que registra el servidor MCP de Packet Tracer. El archivo usa la ruta `python` del sistema; para que funcione con el entorno virtual, modifique la ruta del intérprete.
### 7.1. Configuración por proyecto (recomendada)
Abra el repositorio en OpenCode y edite `opencode.jsonc` para usar el Python del entorno virtual:
**Windows:**
```jsonc
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"servers": {
"packet-tracer": {
"type": "local",
"command": [
"C:\\Users\\SU_USUARIO\\MCP-packet\\.venv\\Scripts\\python.exe",
"-m",
"packet_tracer_mcp",
"--stdio"
]
}
}
}
}
```
**macOS / Linux:**
```jsonc
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"servers": {
"packet-tracer": {
"type": "local",
"command": [
"/ruta/a/MCP-packet/.venv/bin/python",
"-m",
"packet_tracer_mcp",
"--stdio"
]
}
}
}
}
```
### 7.2. Configuración global (opcional)
Si desea usar el MCP desde cualquier directorio, regístrelo globalmente:
```bash
opencode mcp add packet-tracer --global -- .venv/Scripts/python.exe -m packet_tracer_mcp --stdio
```
> En Windows use la ruta absoluta al intérprete del entorno virtual.
### 7.3. Alternativa: usar el CLI de OpenCode
```bash
opencode mcp add packet-tracer -- npx -y example-mcp-server
```
Adapte el comando al intérprete de Python que tenga instalado el paquete.
---
## 8. Verificar la instalación
### 8.1. Probar el servidor manualmente
En una terminal, ejecute:
```bash
python -m packet_tracer_mcp --stdio
```
El servidor se iniciará en modo stdio y esperará entrada. Presione `Ctrl+C` para detenerlo.
### 8.2. Verificar desde OpenCode
1. Abra OpenCode en el directorio del repositorio.
2. Ejecute:
```bash
opencode mcp list
```
Debería aparecer `packet-tracer` con estado **Connected**.
### 8.3. Ejecutar las pruebas
```bash
python -m pytest tests/ -q
```
Resultado esperado:
```
389 passed in ~10s
```
### 8.4. Probar una herramienta
Desde OpenCode, pida al asistente:
> "Lista los dispositivos disponibles en Packet Tracer"
El asistente invocará `pt_list_devices` y mostrará los 74 modelos soportados.
---
## 9. Primer uso
### Ejemplo básico
Pida al asistente de OpenCode:
> "Crea una red con 2 routers, 2 switches, 4 PCs, DHCP y enrutamiento estático"
El servidor ejecutará el pipeline completo:
1. **Planificación** -> genera un `TopologyPlan` con dispositivos, enlaces, IPs, DHCP y rutas.
2. **Validación** -> verifica modelos, puertos, cables e IPs.
3. **Generación** -> produce el script JavaScript para Packet Tracer y las configuraciones IOS.
4. **Despliegue** -> envía los comandos al bridge HTTP (si está conectado) o exporta a archivos.
### Transporte HTTP (opcional)
Para compartir una sola instancia del servidor entre varios clientes:
```bash
python -m packet_tracer_mcp
# Servidor en http://127.0.0.1:39000/mcp
# Bridge en http://127.0.0.1:54321
```
---
## 10. Despliegue en vivo en Packet Tracer
El despliegue en vivo envía comandos directamente a una instancia de Packet Tracer en ejecución.
### 10.1. Instalar la extensión MCP-BUILDER
1. Copie el archivo `V3-MCP-BUILDER.pts` a la carpeta `extensions/` del **directorio de instalación** de Packet Tracer (no la carpeta por usuario):
- **Windows:** `C:\Program Files\Cisco Packet Tracer <versión>\extensions\`
- **macOS / Linux:** carpeta `extensions/` dentro de la instalación de Packet Tracer
2. Reinicie Packet Tracer.
3. En el primer inicio, Packet Tracer mostrará un aviso de **"load this extension?"** -> haga clic en **Yes**.
4. La ventana MCP-BUILDER se abrirá automáticamente. **Déjela visible** (puede moverla a una esquina); si se oculta, QtWebEngine congela los temporizadores y el polling se detiene.
> En Windows puede necesitar ejecutar Packet Tracer o copiar el archivo como administrador para escribir en `Program Files`.
### 10.2. Verificar la conexión
Desde OpenCode, pida al asistente:
> "Verifica el estado del bridge de Packet Tracer"
El asistente invocará `pt_bridge_status`. Debería reportar que el bridge está activo y PTBuilder está haciendo polling.
### 10.3. Método alternativo (sin extensión)
Si prefiere usar el builder integrado de Packet Tracer:
1. Vaya a **Extensions -> Builder Code Editor**.
2. Pegue este fragmento y haga clic en **Run**:
```javascript
/* 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)");
```
> Use solo comentarios de bloque `/* */`. Los comentarios de línea `//` rompen el snippet porque Packet Tracer elimina los saltos de línea internamente.
---
## 11. Solución de problemas
| Síntoma | Causa | Solución |
|---------|-------|----------|
| `pt_bridge_status` reporta PT no conectado | QtWebEngine congela temporizadores de webviews ocultos | Mantenga la ventana MCP-BUILDER **visible** |
| La extensión `.pts` no aparece en PT 9.0 | PT 9.0 no escanea la carpeta de extensiones por usuario | Copie `V3-MCP-BUILDER.pts` a la carpeta `extensions/` del **directorio de instalación** |
| "Could not start the HTTP bridge on :54321" | Otro proceso ocupa el puerto 54321 | Detenga el proceso: `Get-NetTCPConnection -LocalPort 54321` en PowerShell |
| `addModule` devuelve `false` silenciosamente | El argumento `slot` fue un entero en lugar de cadena | Pase el slot como **cadena**: `"0/0"` para HWIC, `"0"` para NIM |
| Error "Invalid arguments for IPC call createLink" | `addLink()` sin el 5º argumento (tipo de cable) | Siempre pase el cable: `addLink("R1","Gig0/0","SW1","Gig0/1","straight")` |
| El snippet del bridge no hace polling | PTBuilder elimina saltos de línea; `//` comenta el resto | Use solo comentarios `/* */` |
| Instalar 2+ módulos con llamadas separadas agota el bridge | Cada llamada reinicia el dispositivo | Use `pt_install_modules_batch` |
| Claude Desktop (MSIX) no enciende el indicador MCP | El sandbox MSIX no expone `python` en PATH | Reemplace `"command": "python"` por la ruta absoluta del intérprete |
| `ModuleNotFoundError: No module named 'imp'` | `twofish` 0.3.0 importa `imp`, eliminado en Python 3.12 | El archivo `offline-tools/_twofish_compat.py` se carga automáticamente |
| Un proyecto exportado no aparece en el repositorio | `ProjectRepository` es relativo al directorio de trabajo del servidor | Inicie el servidor desde la raíz del repositorio |
---
## 12. Estructura del repositorio
```
MCP-packet/
├── src/packet_tracer_mcp/ # Código fuente del servidor MCP
│ ├── adapters/mcp/ # Registro de herramientas y recursos MCP
│ ├── application/ # Casos de uso y DTOs
│ ├── domain/ # Modelos, servicios y reglas de negocio
│ ├── infrastructure/ # Catálogo, generadores, ejecución, persistencia
│ ├── shared/ # Enums, constantes y utilidades
│ ├── server.py # Instancia FastMCP
│ ├── settings.py # Configuración del servidor
│ └── __main__.py # Punto de entrada: python -m packet_tracer_mcp
├── tests/ # 389 pruebas automatizadas
├── offline-tools/ # Utilidades para archivos .pkt/.pka/.pts
├── demo/ # Imágenes de demostración
├── img/ # Capturas de pantalla
├── docs/ # Documentación adicional
├── scripts/ # Scripts auxiliares
├── V3-MCP-BUILDER.pts # Extensión de Packet Tracer para despliegue en vivo
├── opencode.jsonc # Configuración de ejemplo para OpenCode
├── pyproject.toml # Metadatos y dependencias del paquete
├── LICENSE # Licencia MIT
├── SECURITY.md # Política de seguridad
└── README.md # Este archivo
```
### Resumen de capacidades
| Categoría | Cantidad |
|-----------|----------|
| Herramientas MCP | 71 |
| Recursos MCP | 5 |
| Modelos de dispositivos | 74 |
| Módulos de expansión | 150 |
| Tipos de cable | 15 |
| Plantillas de topología | 9 |
| Protocolos de enrutamiento | Static, OSPF, EIGRP, RIP |
| Pruebas automatizadas | 389 |
---
## 13. Atribución y licencia
Este proyecto se basa en **[MCP-Packet-Tracer](https://github.com/mex-i/MCP-Packet-Tracer)** (licencia MIT, autor: Mateo). Se conservan los avisos de licencia y autoría originales.
### Licencia
Este proyecto está licenciado bajo la **[Licencia MIT](LICENSE)**.
```
MIT License
Copyright (c) 2026 Mateo - Packet Tracer MCP Server
```
Puede usar, modificar y distribuir este software libremente, siempre que se mantenga el aviso de licencia.
### Créditos
- **Proyecto original:** [mex-i/MCP-Packet-Tracer](https://github.com/mex-i/MCP-Packet-Tracer)
- **Protocolo MCP:** [modelcontextprotocol.io](https://modelcontextprotocol.io)
- **Cisco Packet Tracer:** [netacad.com](https://www.netacad.com)
---
<div align="center">
**Construido con MCP - Impulsado por Pydantic - Se despliega en Cisco Packet Tracer**
</div>
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues