En esta clase conectaremos nuestro servidor MCP a un switch Cisco Catalyst 9300 utilizando tools de MCP con Netmiko, ejecutaremos comandos de verificación sobre el dispositivo físico y veremos la respuesta del equipo en el Inspector MCP. Además abordaremos aspectos relacionados al manejo de errores en el código.
Antes de introducirnos al código, vamos a verificar que el equipo está listo para recibir conexiones remotas. Validaremos la conectividad al switch, comprobaremos el acceso SSH, y revisaremos que las credenciales y la configuración del dispositivo permitan la comunicación que vamos a establecer desde Python.
Con el dispositivo preparado, construiremos una nueva tool dentro de nuestro servidor MCP. Importaremos ConnectHandler desde Netmiko, definiremos los datos de conexión dentro de un diccionario y utilizaremos el context manager with para garantizar que la sesión SSH se cierre correctamente incluso si ocurre un error durante la ejecución del comando. Probaremos toda la integración con el Inspector MCP y veremos el resultado de ejecución del comando.
Si dejamos que Netmiko devuelva sus mensajes de error por defecto, esos mensajes llegarán literalmente hasta la IA y, en consecuencia, hasta el usuario final. Esto significa dos problemas: primero, los mensajes incluyen información que pueden no querer exponer (direcciones IP, tipos de dispositivo); segundo, son mensajes técnicos que no aportan valor dependiendo quien interactúa con la aplicación. Veremos qué mensaje aparece cuando la IP es incorrecta y qué mensaje aparece cuando las credenciales fallan.
La solución a los problemas mencionados pasa por implementar bloques try/except que capturen las excepciones específicas que Netmiko genera. Importaremos NetmikoTimeoutException y NetmikoAuthenticationException para tratar de forma diferenciada los problemas de conectividad y los problemas de credenciales, y añadiremos un except genérico para capturar cualquier otro evento inesperado. Cada except devolverá un mensaje personalizado que oculta los detalles internos y entrega al usuario una explicación del problema.
Para cerrar la clase abordaremos un problema que aparece tarde o temprano al trabajar con el Inspector: cuando realizan el cierre del programa, este no se cierra correctamente y deja un proceso colgado que bloquea el puerto, impidiendo que se inicie nuevamente. Veremos los comandos exactos para identificar el proceso bloqueado, liberar el puerto y dejar el entorno listo para continuar trabajando sin reiniciar el equipo.
Y como siempre, si tienes alguna duda de la clase estamos acá. ¿Qué esperas? ¡Suscribete!.
Netmiko es una librería diseñada específicamente para automatización de dispositivos de red y abstrae muchas particularidades del manejo SSH sobre equipos de fabricantes como Cisco, Juniper o Arista. Resuelve internamente diferencias que puedan existir entre prompts, paginación de la salida, y timers de comandos; aspectos que con Paramiko habría que implementar manualmente.
La IA simplemente repetirá esos mensajes al usuario final, exponiendo detalles internos como la dirección IP del dispositivo o el tipo de equipo, además de utilizar un lenguaje técnico poco amigable. En la clase mostramos cómo capturar las excepciones específicas de Netmiko y devolver mensajes personalizados que protegen información sensible y resultan más útiles para quien interactúa con la aplicación.