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

demo

¿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_FILE está 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 HerramientaDescripciónEntradasRetorna
get_device_ned_idsRecupera IDs de Controlador de Elementos de Red (NED) de Cisco NSOUn diccionario con una lista de IDs NED
get_device_groupsRecupera grupos de dispositivos de Cisco NSOUn diccionario con una lista de grupos de dispositivos
get_device_platformObtiene 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_configObtiene 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_stateObtiene estado para un dispositivo específico en Cisco NSO'device_name' (cadena)Un diccionario con estado para el dispositivo especificado
check_device_syncVerifica 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_deviceSincroniza desde un dispositivo específico en Cisco NSO'device_name' (cadena)Un diccionario con estado de sincronización para el dispositivo especificado
get_service_typesObtiene tipos de servicio en Cisco NSOUn diccionario con tipos de servicio
get_servicesObtiene 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 ComandosVariable de EntornoPredeterminadoDescripción
--nso-schemeNSO_SCHEMEhttpEsquema de conexión NSO (http/https)
--nso-addressNSO_ADDRESSlocalhostDirección del servidor NSO
--nso-portNSO_PORT8080Puerto del servidor NSO
--nso-timeoutNSO_TIMEOUT10Tiempo de espera de conexión en segundos
--nso-usernameNSO_USERNAMEadminNombre de usuario NSO
--nso-passwordNSO_PASSWORDadminContraseña NSO
--nso-verifyNSO_VERIFYTrueVerificar certificado HTTPS de NSO (predeterminado: True). Use --no-nso-verify para certificados autofirmados (solo desarrollo).
--nso-ca-bundleNSO_CA_BUNDLENoneRuta 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 ComandosVariable de EntornoPredeterminadoDescripción
--transportMCP_TRANSPORTstdioTipo 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 ArgumentEnvironment VariableDefaultDescription
--hostMCP_HOST0.0.0.0Host to bind to when using HTTP transport
--portMCP_PORT8000Port to bind to when using HTTP transport

Logging Configuration

Environment VariableDefaultDescription
LOG_FILENonePath 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.