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 filtradoget_graph_by_time: Obtener un grafo específico por tiempoget_network_by_graph_time: Consultar información de redget_graph_status: Verificar la salud y conectividad del grafoget_network_events: Recuperar eventos de red de activación/desactivaciónget_adjacency_events: Obtener eventos de nodos/hosts y enlacesget_events_timeline: Eventos de nodos/hosts agrupados en olas de tiempo para narración de incidentesget_nodes: Consultar nodos del diagrama (filtrar por banderas de rol: ABR/ASBR, sobrecarga/adjunto IS-IS);protocol="bgp"convni,vrfortlista las hojas (VTEPs) que transportan ese VNI, VRF o route targetget_edges: Consultar enlaces del diagrama (include=["lsp_left_bw", "lsps", "is_te_link", "edge_key"]para campos MPLS TE;is_te_link=true|falsemantiene 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=truepara tener en cuenta túneles MPLS-TE con autoroute habilitado);dst_nodepuede ser una lista de destinos, como cada VTEP de un VNI, respondida desde un solo SPFget_cspf_path: Verificación de viabilidad de ruta más corta con restricciones (CSPF) entre dos nodos; nunca muta el grafo;levelopcional (1 o 2) restringe una ruta IS-IS a un nivelget_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 BGPlist_bgp_nodes/list_bgp_sessions: Hablantes BGP y sesiones de peering de una épocasearch_bgp_routes: Buscar en la tabla de rutas BGP, en todo el grafo o limitado a la vista RIB resuelta de un hablanteget_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 tiempocompare_bgp_routes: Diferenciar rutas BGP entre dos instantesget_bgp_events_timeline: Eventos de monitoreo de sesiones/rutas BGPlist_bgp_bindings/get_bgp_binding: Correlación de grafos BGP a IGPresolve_route: Resolver una ruta a un destino, incluidos traspasos VPN/MPLSget_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) veget_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_idlo limita a la vista RIB de un routerget_route_events: Historial de rutas; la llegada de una MAC a un nuevo VTEP llevamoved_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 APIadd_lsp/update_lsp/delete_lsp: Crear, actualizar y eliminar túneles LSP MPLS TE (delete_lsptambié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.