Topolograph MCP

Un servidor MCP que permite a los LLMs interactuar con los protocolos OSPF e IS-IS, analizar topologías de red, consultar eventos de red y realizar cálculos de rutas para los protocolos OSPF e IS-IS.

Documentación

Servidor MCP de Topolograph

Un servidor de Model Context Protocol (MCP) que proporciona acceso a la API de Topolograph para el análisis de redes OSPF/IS-IS.

Descripción general

Este servidor MCP permite a los agentes de IA interactuar con la API de Topolograph para analizar topologías de red, monitorear eventos y realizar cálculos de rutas para los protocolos OSPF e IS-IS. MCP (Model Context Protocol) es esencial para conectar Modelos de Lenguaje de Gran Escala (LLMs) a la infraestructura de red, permitiendo a los agentes de IA consultar y analizar datos de red en tiempo real.

Este servidor MCP está incluido en el repositorio topolograph-docker y está disponible a través del archivo docker-compose.yml proporcionado.

Características

  • Gestión de grafos: Recuperar y cargar grafos de red
  • Análisis de red: Consultar información de red por IP, ID de nodo o máscara de red
  • Monitoreo de eventos: Rastrear eventos de red y de adyacencia con filtrado por tiempo
  • Cálculo de rutas: Calcular rutas más cortas entre nodos con soporte de rutas de respaldo
  • Monitoreo de estado: Verificar la conectividad y el estado de salud del grafo
  • Consultas de nodos/enlaces: Recuperar información detallada de nodos y enlaces de los diagramas

Instalación

pip install -r requirements.txt

Configuración

Establezca la variable de entorno requerida:

export TOPOLOGRAPH_API_BASE="https://your-topolograph-api-url"

Autenticación opcional:

export TOPOLOGRAPH_API_TOKEN="your-api-token"

Modo de solo lectura opcional (por defecto es true, recomendado para implementaciones orientadas a agentes):

export TOPOLOGRAPH_MCP_READ_ONLY="true"

Cuando está habilitado, las herramientas de mutación (upload_graph, add_lsp, update_lsp, delete_lsp) se eliminan de la superficie de herramientas anunciada (tools/list) y no se pueden llamar, incluso por un cliente que ya conoce su nombre. Establezca false solo para implementaciones de confianza/administración que necesiten acceso de escritura.

Uso

Inicie el servidor MCP:

python mcp-server.py

El servidor se ejecuta en http://0.0.0.0:8000/mcp por defecto.

Integración con Docker Compose

Este servidor MCP está incluido en el repositorio topolograph-docker. Para usarlo como parte de la pila completa de Topolograph:

git clone https://github.com/Vadims06/topolograph-docker.git
cd topolograph-docker
docker-compose pull
docker-compose up -d

El servidor MCP estará disponible en http://localhost:8000/mcp y se conecta automáticamente a la API de Flask.

Herramientas disponibles

Herramientas de lectura (siempre disponibles)

  • get_all_graphs: Listar grafos disponibles con opciones de filtrado
  • get_graph_by_time: Obtener un grafo específico por tiempo
  • get_network_by_graph_time: Consultar información de red
  • get_graph_status: Verificar la salud y conectividad del grafo
  • get_network_events: Recuperar eventos de red de activación/desactivación
  • get_adjacency_events: Obtener eventos de nodos/hosts y enlaces
  • get_events_timeline: Eventos de nodos/hosts agrupados en olas de tiempo para narración de incidentes
  • get_nodes: Consultar nodos del diagrama (filtrar por banderas de rol: ABR/ASBR, sobrecarga/adjunto IS-IS); protocol="bgp" con vni, vrf o rt lista las hojas (VTEPs) que transportan ese VNI, VRF o route target
  • get_edges: Consultar enlaces del diagrama (include=["lsp_left_bw", "lsps", "is_te_link", "edge_key"] para campos MPLS TE; is_te_link=true|false mantiene solo enlaces TE o solo el resto)
  • get_lsps: Listar/inspeccionar túneles LSP MPLS TE (filtros: status, via_node, via_edge, via_edge_key)
  • get_shortest_path: Calcular la ruta más corta entre dos nodos (with_lsps=true para tener en cuenta túneles MPLS-TE con autoroute habilitado); dst_node puede ser una lista de destinos, como cada VTEP de un VNI, respondida desde un solo SPF
  • get_cspf_path: Verificación de viabilidad de ruta más corta con restricciones (CSPF) entre dos nodos; nunca muta el grafo; level opcional (1 o 2) restringe una ruta IS-IS a un nivel
  • get_edge_failure_reaction: Predecir el impacto en toda la red si uno o más enlaces se caen; solo simulación

Herramientas de topología BGP (requieren Topolograph >= 2.69)

  • list_bgp_graphs / get_bgp_graph: Listar/obtener épocas de grafos BGP
  • list_bgp_nodes / list_bgp_sessions: Hablantes BGP y sesiones de peering de una época
  • search_bgp_routes: Buscar en la tabla de rutas BGP, en todo el grafo o limitado a la vista RIB resuelta de un hablante
  • get_bgp_node_route_summary: Totales de rutas por hablante (histograma de etiquetas RIB, conteo de Adj-RIB-Out)
  • get_bgp_route_state: Estado de rutas BGP en un punto en el tiempo
  • compare_bgp_routes: Diferenciar rutas BGP entre dos instantes
  • get_bgp_events_timeline: Eventos de monitoreo de sesiones/rutas BGP
  • list_bgp_bindings / get_bgp_binding: Correlación de grafos BGP a IGP
  • resolve_route: Resolver una ruta a un destino, incluidos traspasos VPN/MPLS
  • get_vrf_inventory: Inventario de VRF

Herramientas BGP VPN y EVPN en el grafo IGP (requieren Topolograph >= 2.73)

Consultadas con el graph_time OSPF/IS-IS; la época BGP más reciente de cada fuente vinculada a ese grafo responde.

  • list_vpns: VNIs y VRFs de la infraestructura, o las VPNs que un router (router_id) ve
  • get_routes: Dónde está una MAC o IP (leaf, VNI, VRF, ESI), qué contiene un VRF o VNI, y rutas detrás de un VTEP. Filtros: mac, prefix, vni, vrf, rt, rd, vtep, at; router_id lo limita a la vista RIB de un router
  • get_route_events: Historial de rutas; la llegada de una MAC a un nuevo VTEP lleva moved_from_vtep

Los tipos de ruta EVPN 1 a 5 están cubiertos (RFC 7432, RFC 9136); los campos se describen en la guía de BMP Watcher.

Herramientas de mutación (ocultas y deshabilitadas cuando TOPOLOGRAPH_MCP_READ_ONLY=true)

  • upload_graph: Cargar nuevos grafos a la API
  • add_lsp / update_lsp / delete_lsp: Crear, actualizar y eliminar túneles LSP MPLS TE (delete_lsp también está etiquetado como destructivo)

Las herramientas están etiquetadas como read, write y/o destructive en el código fuente, y llevan anotaciones MCP estándar (readOnlyHint, destructiveHint, idempotentHint) para clientes que las usan para la selección de herramientas. Las anotaciones son metadatos para clientes, no un límite de seguridad: el límite real es TOPOLOGRAPH_MCP_READ_ONLY que oculta las herramientas de mutación de tools/list, respaldado por una protección del lado del servidor que también rechaza llamadas directas a ellas en modo de solo lectura.

Patrones de olas (get_events_timeline)

get_events_timeline agrupa los eventos de activación/desactivación de nodos/hosts en olas cronológicas, cada una etiquetada con un pattern (outage / flap / up). Para la referencia completa de campos y el mapeo de pattern ↔ estado del grafo, consulte la documentación:

➡️ Línea de tiempo de eventos (Olas)

Licencia

Consulte el archivo LICENSE para más detalles.