Servidor MCP de Nornir
Un servidor FastMCP que proporciona herramientas de automatización de red impulsadas por Nornir y NAPALM .
Este servidor actúa como un puente, exponiendo las operaciones de red Nornir/NAPALM como herramientas MCP (procesamiento masivo concurrente), haciéndolas fácilmente accesibles desde clientes MCP compatibles (como la interfaz web FastMCP).
✨ Características principales
Aprovecha Nornir para la gestión de inventario y la ejecución de tareas simultáneas en dispositivos de red.
Utiliza NAPALM para la interacción de dispositivos de múltiples proveedores (recopilación de información, ejecución de comandos).
Creado con FastMCP para una integración perfecta con clientes MCP que utilizan varios transportes (SSE en esta configuración).
En contenedores con Docker 🐳 para una fácil configuración e implementación.
Utiliza
uvpara la gestión rápida de dependencias de Python dentro del contenedor ⚡.
Related MCP server: Cloudflare API MCP Server
🔧 Requisitos previos
Antes de comenzar, asegúrese de tener instalado lo siguiente:
Docker Compose (generalmente incluido con Docker Desktop)
⚙️ Configuración
Antes de ejecutar el servidor, debe configurar el inventario de red y las credenciales del dispositivo:
Navegue al directorio
conf/en el proyecto.Editar : Defina sus dispositivos de red. Especifique su IP/nombre de host de administración, plataforma (p. ej.,
ios,junos,eos), credenciales (si no se usan las predeterminadas) y asígnelos a grupos si lo desea.Editar : Define grupos de dispositivos con propiedades compartidas (como plataforma u opciones de conexión). La configuración aquí puede anular los valores predeterminados.
Editar : establece las credenciales predeterminadas (
username,password) y las opciones de conexión (comosecretNAPALM para habilitar contraseñas oplatformpredeterminada).⚠️ Nota de seguridad importante: La configuración predeterminada utiliza credenciales de texto plano en archivos YAML. Esto es adecuado para entornos de prueba y laboratorio. Para producción, considere usar las funciones integradas de gestión de secretos de Nornir (p. ej., variables de entorno, el complemento HashiCorp Vault) para evitar almacenar información confidencial directamente en los archivos de configuración. Modifique
nornir_ops.pyy su configuración si implementa un proveedor de secretos.
Revisar : Asegurarse de que las rutas de los archivos de inventario (
host_file,group_file,defaults_file) apunten correctamente a los archivos dentro del directorioconf/(deberían hacerlo por defecto). Ajustar las opciones del ejecutor (num_workers) si es necesario.
▶️ Ejecución del servidor
Una vez configurado, puedes ejecutar fácilmente el servidor usando Docker Compose:
Asegúrese de haber configurado el directorio
conf/como se describe arriba.Abra una terminal o un símbolo del sistema en el directorio raíz del proyecto (el mismo directorio que los archivos
Dockerfileydocker-compose.yml).Ejecute el siguiente comando:
docker-compose up --build -dEl indicador
--buildle indica a Docker Compose que construya la imagen basándose en elDockerfilela primera vez o si algún archivo del proyecto (como archivos.pyopyproject.toml) ha cambiado.Este comando iniciará el servidor Nornir MCP en un contenedor Docker.
Los registros del servidor se mostrarán en tu terminal. Por defecto, deberían estar accesibles en el puerto
8000de tu equipo host (localhost).Para detener el servidor, presione
Ctrl+Cen la terminal donde se ejecutadocker-compose. Para eliminar el contenedor posteriormente, ejecutedocker-compose down.
🔌 Agregar al cliente MCP
Para utilizar las herramientas proporcionadas por este servidor en un cliente MCP (como la interfaz web oficial de FastMCP u otros clientes compatibles):
Asegúrese de que el servidor Nornir MCP esté ejecutándose (usando
docker-compose up).Abra su aplicación cliente MCP.
Encuentre la opción para agregar o administrar conexiones del servidor MCP.
Agregue una nueva conexión con los siguientes detalles:
URL del servidor : dado que este servidor utiliza el transporte SSE (eventos enviados por el servidor) y se ejecuta en el puerto 8000 de manera predeterminada, la URL será:
sse://localhost:8000(Si su host Docker tiene una dirección IP diferente a la que puede acceder el cliente, reemplace
Nombre de la conexión : Asígnele un nombre descriptivo, por ejemplo,
Nornir Lab Server.
Guarde y conéctese al servidor recién agregado.
El cliente MCP debería descubrir el servicio
Nornir_MCPy listar todas las herramientas disponibles (comoget_facts,send_command, etc.). ¡Ahora puedes usar estas herramientas a través de la interfaz del cliente! 🎉
🛠️ Herramientas y recursos disponibles
Una vez conectado a través de un cliente MCP, las siguientes herramientas (bajo el nombre de servicio "Nornir_MCP") normalmente deberían estar disponibles:
Inventario:
list_all_hosts: enumera los dispositivos configurados en su inventario de Nornir (conf/hosts.yaml).
Recuperadores de NAPALM: (Recuperar información)
get_factsget_interfacesget_interfaces_ipget_interfaces_countersget_config(con opciónretrieve: en ejecución, inicio, candidato)get_arp_tableget_mac_address_tableget_usersget_vlansget_snmp_informationget_bgp_neighbors(La disponibilidad depende de la plataforma del dispositivo y de la compatibilidad del controlador NAPALM)
Ejecución:
send_command: envía un único comando de solo lectura a un dispositivo y obtiene el resultado.
Recurso de transmisión:
sse://updates: Proporciona un flujo de eventos de latido simple. (Los clientes que admiten recursos SSE pueden suscribirse).
📄 Licencia
Este proyecto está licenciado bajo la licencia MIT.
🙌 Contribuyendo
¡Agradecemos sus contribuciones, problemas y solicitudes de funcionalidad! No dude en enviarlas a través del repositorio del proyecto.