Integrations
Provides containerization for the server, enabling easy setup and deployment with Docker and Docker Compose.
Mentions integration with HashiCorp Vault for secrets management as an alternative to plaintext credentials in configuration files.
Uses Python-based frameworks like Nornir and NAPALM to provide network automation tools that can interact with multi-vendor network devices.
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
uv
para la gestión rápida de dependencias de Python dentro del contenedor ⚡.
🔧 Requisitos previos
Antes de comenzar, asegúrese de tener instalado lo siguiente:
- Estibador
- 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
hosts.yaml
: 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
groups.yaml
: Define grupos de dispositivos con propiedades compartidas (como plataforma u opciones de conexión). La configuración aquí puede anular los valores predeterminados. - Editar
defaults.yaml
: establece las credenciales predeterminadas (username
,password
) y las opciones de conexión (comosecret
NAPALM para habilitar contraseñas oplatform
predeterminada).- ⚠️ 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.py
y su configuración si implementa un proveedor de secretos.
- ⚠️ 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
- Revisar
config.yaml
: 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
Dockerfile
ydocker-compose.yml
). - Ejecute el siguiente comando:Copy
- El indicador
--build
le indica a Docker Compose que construya la imagen basándose en elDockerfile
la primera vez o si algún archivo del proyecto (como archivos.py
opyproject.toml
) ha cambiado. - Este comando iniciará el servidor Nornir MCP en un contenedor Docker.
- El indicador
- Los registros del servidor se mostrarán en tu terminal. Por defecto, deberían estar accesibles en el puerto
8000
de tu equipo host (localhost). - Para detener el servidor, presione
Ctrl+C
en 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
localhost
con esa IP, por ejemplo,sse://192.168.1.100:8000
)
- Nombre de la conexión : Asígnele un nombre descriptivo, por ejemplo,
Nornir Lab Server
.
- 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á:
- Guarde y conéctese al servidor recién agregado.
- El cliente MCP debería descubrir el servicio
Nornir_MCP
y 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_facts
get_interfaces
get_interfaces_ip
get_interfaces_counters
get_config
(con opciónretrieve
: en ejecución, inicio, candidato)get_arp_table
get_mac_address_table
get_users
get_vlans
get_snmp_information
get_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.
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Un servidor FastMCP que proporciona herramientas de automatización de red al exponer las operaciones de Nornir y NAPALM como herramientas MCP, lo que permite a los usuarios administrar e interactuar con dispositivos de red a través de clientes MCP compatibles.
Related MCP Servers
- -securityAlicense-qualityThis MCP server allows you to connect MCP clients with Toolhouse's tools.Last updated -8PythonMIT License
- -securityFlicense-qualityA configurable MCP server that dynamically loads capabilities from a remote configuration to bridge MCP clients with remote APIs for executing actions, accessing resources, and utilizing prompt templates.Last updated -1,2614TypeScript
- -securityAlicense-qualityFastMCP is a comprehensive MCP server allowing secure and standardized data and functionality exposure to LLM applications, offering resources, tools, and prompt management for efficient LLM interactions.Last updated -3PythonMIT License
- AsecurityFlicenseAqualityAn MCP server that allows users to interact with YNAB data, enabling access to account balances, transactions, and the creation of new transactions through the Model Context Protocol.Last updated -101Python