Cisco NSO MCP Server
Un servidor MCP para Cisco NSO (Network Services Orchestrator) que expone datos y operaciones de NSO como primitivas MCP.
Documentación
Servidor MCP de Cisco NSO
Una implementación de servidor de Protocolo de Contexto de Modelo (MCP) para Cisco NSO (Orquestador de Servicios de Red) que expone datos y operaciones de NSO como primitivas de MCP (Herramientas, Recursos, etc.) que pueden ser consumidas por un cliente compatible con MCP, habilitando automatización de redes impulsada por IA a través de interacciones en lenguaje natural.
Cliente Personalizado de Ejemplo

¿Qué es MCP?
Protocolo de Contexto de Modelo (MCP) es un protocolo abierto que estandariza cómo los modelos de IA interactúan con herramientas y servicios externos. MCP permite:
- Definición de Herramientas: Forma estructurada de definir herramientas que los modelos de IA pueden usar
- Descubrimiento de Herramientas: Mecanismo para que los modelos descubran herramientas disponibles
- Ejecución de Herramientas: Método estandarizado para que los modelos llamen herramientas y reciban resultados
- Gestión de Contexto: Paso eficiente de contexto entre herramientas y modelos
- Independiente del Framework: Funciona con múltiples frameworks de IA incluyendo OpenAI, Anthropic, Google Gemini y otros
- Interoperabilidad: Proporciona un lenguaje común para que los sistemas de IA se comuniquen con herramientas externas
Características
- Transporte Stdio: Por defecto, este servidor MCP utiliza transporte stdio para comunicación vinculada a procesos
- Diseño Centrado en Herramientas: Las operaciones de red se definen como herramientas discretas con interfaces claras
- Procesamiento Asíncrono: Todas las operaciones de red se implementan de forma asíncrona para mejor rendimiento
- Respuestas Estructuradas: Formato de respuesta consistente con secciones de estado, datos y metadatos
- Recursos de Entorno: Proporciona información contextual sobre el entorno NSO
- Integración NSO: Utiliza la biblioteca cisco-nso-restconf para una interfaz limpia y Pythonic con la API RESTCONF de NSO
- Registro Flexible: Registro configurable a stdout y/o archivo mediante variables de entorno. Cuando la variable de entorno
LOG_FILEestá configurada, los registros se envían tanto a stdout como al archivo especificado. Si el archivo de registro no se puede crear o escribir, el servidor vuelve al registro solo a stdout con un mensaje de error - Soporte para Múltiples Clientes: Funciona con cualquier cliente compatible con MCP incluyendo Windsurf Cascade y aplicaciones Python personalizadas
Herramientas y Recursos Disponibles
Herramientas
| Nombre de Herramienta | Descripción | Entradas | Retorna |
|---|---|---|---|
get_device_ned_ids | Recupera IDs de Controlador de Elementos de Red (NED) de Cisco NSO | Un diccionario con una lista de IDs NED | |
get_device_groups | Recupera grupos de dispositivos de Cisco NSO | Un diccionario con una lista de grupos de dispositivos | |
get_device_platform | Obtiene información de plataforma para un dispositivo específico en Cisco NSO | 'device_name' (cadena) | Un diccionario con información de plataforma para el dispositivo especificado |
get_device_config | Obtiene configuración completa para un dispositivo específico en Cisco NSO | 'device_name' (cadena) | Un diccionario con configuración para el dispositivo especificado |
get_device_state | Obtiene estado para un dispositivo específico en Cisco NSO | 'device_name' (cadena) | Un diccionario con estado para el dispositivo especificado |
check_device_sync | Verifica el estado de sincronización para un dispositivo específico en Cisco NSO | 'device_name' (cadena) | Un diccionario con estado de sincronización para el dispositivo especificado |
sync_from_device | Sincroniza desde un dispositivo específico en Cisco NSO | 'device_name' (cadena) | Un diccionario con estado de sincronización para el dispositivo especificado |
get_service_types | Obtiene tipos de servicio en Cisco NSO | Un diccionario con tipos de servicio | |
get_services | Obtiene servicios para un tipo de servicio específico en Cisco NSO | 'service_type' (cadena) | Un diccionario con servicios para el tipo de servicio especificado |
Recursos
https://resources.cisco-nso-mcp.io/environment: Proporciona un resumen curado del entorno NSO:- Conteo de dispositivos, Distribución del Sistema Operativo, Conteo Único de Sistemas Operativos, Conteo Único de Modelos, Distribución de Modelos, Distribución de Series de Dispositivos, Grupos de Dispositivos y Miembros
Requisitos
- Python 3.12+
- Cisco NSO con API RESTCONF habilitada
- Conectividad de red a la API RESTCONF de NSO
Opciones de Configuración
Puede configurar el servidor usando argumentos de línea de comandos o variables de entorno:
Parámetros de Conexión NSO
| Argumento de Línea de Comandos | Variable de Entorno | Predeterminado | Descripción |
|---|---|---|---|
--nso-scheme | NSO_SCHEME | http | Esquema de conexión NSO (http/https) |
--nso-address | NSO_ADDRESS | localhost | Dirección del servidor NSO |
--nso-port | NSO_PORT | 8080 | Puerto del servidor NSO |
--nso-timeout | NSO_TIMEOUT | 10 | Tiempo de espera de conexión en segundos |
--nso-username | NSO_USERNAME | admin | Nombre de usuario NSO |
--nso-password | NSO_PASSWORD | admin | Contraseña NSO |
--nso-verify | NSO_VERIFY | True | Verificar certificado HTTPS de NSO (predeterminado: True). Use --no-nso-verify para certificados autofirmados (solo desarrollo). |
--nso-ca-bundle | NSO_CA_BUNDLE | None | Ruta a un archivo de paquete CA para confiar en HTTPS de NSO. Aplicable cuando -nso-verify es True. |
Parámetros del Servidor MCP
| Argumento de Línea de Comandos | Variable de Entorno | Predeterminado | Descripción |
|---|---|---|---|
--transport | MCP_TRANSPORT | stdio | Tipo de transporte MCP (stdio/http) |
Opciones de Transporte HTTP (solo se usan cuando --transport=http)
FastMCP HTTP Server reference: https://gofastmcp.com/deployment/http#http-deployment
| Command-line Argument | Environment Variable | Default | Description |
|---|---|---|---|
--host | MCP_HOST | 0.0.0.0 | Host to bind to when using HTTP transport |
--port | MCP_PORT | 8000 | Port to bind to when using HTTP transport |
Logging Configuration
| Environment Variable | Default | Description |
|---|---|---|
LOG_FILE | None | Path to log file. If not set, logs will be sent to stdout only |
Environment variables take precedence over default values but are overridden by command-line arguments.
Connecting to the Server with MCP Clients
You can connect to the server using any MCP client that supports the selected transport type. A few options are:
Windsurf Cascade
Windsurf Cascade supports MCP servers through a configuration file. To use the Cisco NSO MCP server with Windsurf, add it to your mcp_config.json file.
Using uv (recommended)
When using uv, no specific installation is needed. You can use uvx to directly run the package:
{
"mcpServers": {
"nso": {
"command": "uvx",
"args": [
"cisco-nso-mcp-server",
"--nso-address=127.0.0.1",
"--nso-port=8080",
"--nso-username=admin",
"--nso-password=admin"
],
"env": {
"LOG_FILE": "/path/to/your/logs/nso-mcp.log"
}
}
}
}
Uso con instalación pip
Alternativamente, puede instalar cisco-nso-mcp-server vía pip:
pip install cisco-nso-mcp-server
Ahora puede usar la ruta directa al ejecutable:
{
"mcpServers": {
"nso": {
"command": "/path/to/your/env/bin/cisco-nso-mcp-server",
"args": [
"--nso-address=127.0.0.1",
"--nso-port=8080",
"--nso-username=admin",
"--nso-password=admin"
],
"env": {
"LOG_FILE": "/path/to/your/logs/nso-mcp.log"
}
}
}
}
Reemplace /path/to/your/env/bin/cisco-nso-mcp-server con la ruta real donde instaló el paquete con pip. Puede encontrarla ejecutando which cisco-nso-mcp-server si lo instaló en su entorno principal, o localizándolo en el directorio bin de su entorno virtual.
En cualquier caso, la sección env es opcional. Si la incluye, puede especificar la variable de entorno LOG_FILE para habilitar el registro en archivo.
Uso en una aplicación Python de cliente MCP personalizada con transporte stdio
Se proporciona una aplicación Python de ejemplo en sample_stdio_client.py que demuestra cómo conectarse al servidor MCP localmente y ejecutar una herramienta.
Ejecutar el Servidor como Independiente
Aunque el servidor se usa típicamente con un cliente MCP, también puede ejecutarlo directamente como un proceso independiente:
# Run with default NSO connection and MCP settings (see Configuration Options above for details)
cisco-nso-mcp-server
# Run with custom NSO connection parameters
cisco-nso-mcp-server --nso-scheme=http --nso-address=127.0.0.1 --nso-port=8080 --nso-username=admin --nso-password=admin
Cuando se ejecuta como un proceso independiente con transporte stdio, necesitará canalizar entrada/salida al proceso o usarlo con un cliente MCP que soporte transporte stdio.
Licencia
Este proyecto está licenciado bajo la Licencia MIT. Esto significa que puede usar, modificar y distribuir el código, sujeto a los términos y condiciones de la Licencia MIT.