Topolograph MCP
Um servidor MCP que permite que LLMs interajam com os protocolos OSPF e IS-IS e analisem topologias de rede, consultem eventos de rede e realizem cálculos de caminho para os protocolos OSPF e IS-IS.
Documentação
Servidor Topolograph MCP
Um servidor Model Context Protocol (MCP) que fornece acesso à API Topolograph para análise de redes OSPF/IS-IS.
Visão Geral
Este servidor MCP permite que agentes de IA interajam com a API Topolograph para analisar topologias de rede, monitorar eventos e realizar cálculos de caminho para protocolos OSPF e IS-IS. O MCP (Model Context Protocol) é essencial para conectar Modelos de Linguagem de Grande Porte (LLMs) à infraestrutura de rede, permitindo que agentes de IA consultem e analisem dados de rede em tempo real.
Este servidor MCP está incluído no repositório topolograph-docker e está disponível através do arquivo docker-compose.yml fornecido.
Recursos
- Gerenciamento de Grafos: Recuperar e enviar grafos de rede
- Análise de Rede: Consultar informações de rede por IP, ID de nó ou máscara de rede
- Monitoramento de Eventos: Acompanhar eventos de rede e adjacência com filtragem por tempo
- Cálculo de Caminho: Calcular caminhos mais curtos entre nós com suporte a caminhos de backup
- Monitoramento de Status: Verificar conectividade e status de saúde do grafo
- Consultas de Nó/Aresta: Recuperar informações detalhadas de nós e arestas dos diagramas
Instalação
pip install -r requirements.txt
Configuração
Defina a variável de ambiente necessária:
export TOPOLOGRAPH_API_BASE="https://your-topolograph-api-url"
Autenticação opcional:
export TOPOLOGRAPH_API_TOKEN="your-api-token"
Modo somente leitura opcional (padrão é true, recomendado para implantações voltadas a agentes):
export TOPOLOGRAPH_MCP_READ_ONLY="true"
Quando habilitado, as ferramentas de mutação (upload_graph, add_lsp, update_lsp, delete_lsp) são
removidas da superfície de ferramentas anunciada (tools/list) e não podem ser chamadas, mesmo por um
cliente que já conheça seus nomes. Defina como false apenas para implantações confiáveis/de administração
que precisam de acesso de escrita.
Uso
Inicie o servidor MCP:
python mcp-server.py
O servidor roda em http://0.0.0.0:8000/mcp por padrão.
Integração com Docker Compose
Este servidor MCP está incluído no repositório topolograph-docker. Para usá-lo como parte da stack completa do Topolograph:
git clone https://github.com/Vadims06/topolograph-docker.git
cd topolograph-docker
docker-compose pull
docker-compose up -d
O servidor MCP estará disponível em http://localhost:8000/mcp e se conecta automaticamente à API Flask.
Ferramentas Disponíveis
Ferramentas de leitura (sempre disponíveis)
get_all_graphs: Listar grafos disponíveis com opções de filtragemget_graph_by_time: Buscar grafo específico por tempoget_network_by_graph_time: Consultar informações de redeget_graph_status: Verificar saúde e conectividade do grafoget_network_events: Recuperar eventos de rede up/downget_adjacency_events: Obter eventos de nós/hosts e linksget_events_timeline: Eventos de nós/hosts agrupados em ondas de tempo para narração de incidentesget_nodes: Consultar nós do diagrama (filtrar por flags de função: ABR/ASBR, overload/attached IS-IS);protocol="bgp"comvni,vrfourtlista as folhas (VTEPs) que carregam esse VNI, VRF ou route targetget_edges: Consultar arestas do diagrama (include=["lsp_left_bw", "lsps", "is_te_link", "edge_key"]para campos MPLS TE;is_te_link=true|falsemantém apenas links TE ou apenas o restante)get_lsps: Listar/inspecionar túneis LSP MPLS TE (filtros:status,via_node,via_edge,via_edge_key)get_shortest_path: Calcular o caminho mais curto entre dois nós (with_lsps=truepara considerar túneis MPLS-TE com autoroute habilitado);dst_nodepode ser uma lista de destinos, como cada VTEP de um VNI, respondido a partir de um único SPFget_cspf_path: Verificação de viabilidade de caminho mais curto com restrições (CSPF) entre dois nós; nunca modifica o grafo;levelopcional (1 ou 2) restringe um caminho IS-IS a um nívelget_edge_failure_reaction: Prever o impacto em toda a rede se um ou mais links caírem; apenas simulação
Ferramentas de topologia BGP (requerem Topolograph >= 2.69)
list_bgp_graphs/get_bgp_graph: Listar/buscar épocas do grafo BGPlist_bgp_nodes/list_bgp_sessions: Speakers BGP e sessões de peering de uma épocasearch_bgp_routes: Pesquisar a tabela de rotas BGP, em todo o grafo ou limitada à visão RIB resolvida de um speakerget_bgp_node_route_summary: Totais de rotas por speaker (histograma de tags RIB, contagem Adj-RIB-Out)get_bgp_route_state: Estado de rota BGP em um ponto no tempocompare_bgp_routes: Diff de rotas BGP entre dois instantesget_bgp_events_timeline: Eventos de monitoramento de sessão/rota BGPlist_bgp_bindings/get_bgp_binding: Correlação de grafo BGP-para-IGPresolve_route: Resolver um caminho até um destino, incluindo handoffs VPN/MPLSget_vrf_inventory: Inventário de VRFs
Ferramentas BGP VPN e EVPN no grafo IGP (requerem Topolograph >= 2.73)
Consultadas com o graph_time OSPF/IS-IS; a época BGP mais recente de cada fonte vinculada a esse grafo responde.
list_vpns: VNIs e VRFs da fabric, ou as VPNs que um roteador (router_id) vêget_routes: Onde um MAC ou IP está (leaf, VNI, VRF, ESI), o que um VRF ou VNI contém, e rotas atrás de um VTEP. Filtros:mac,prefix,vni,vrf,rt,rd,vtep,at;router_idlimita a visão RIB de um roteadorget_route_events: Histórico de rotas; a chegada de um MAC em um novo VTEP carregamoved_from_vtep
Os tipos de rota EVPN 1 a 5 são cobertos (RFC 7432, RFC 9136); os campos são descritos no guia BMP Watcher.
Ferramentas de mutação (ocultas e desabilitadas quando TOPOLOGRAPH_MCP_READ_ONLY=true)
upload_graph: Enviar novos grafos para a APIadd_lsp/update_lsp/delete_lsp: Criar, atualizar e excluir túneis LSP MPLS TE (delete_lsptambém é marcado como destrutivo)
As ferramentas são marcadas com read, write e/ou destructive no código-fonte, e carregam anotações MCP
padrão (readOnlyHint, destructiveHint, idempotentHint) para clientes que as utilizam
para seleção de ferramentas. Anotações são metadados para clientes, não uma fronteira de segurança: a
fronteira real é TOPOLOGRAPH_MCP_READ_ONLY ocultando ferramentas de mutação de tools/list,
respaldada por uma proteção no lado do servidor que também rejeita chamadas diretas a elas em modo somente leitura.
Padrões de onda (get_events_timeline)
get_events_timeline agrupa eventos de nós/hosts up/down em ondas cronológicas,
cada uma rotulada com um pattern (outage / flap / up). Para a
referência completa de campos e o mapeamento pattern ↔ status do grafo, consulte a documentação:
➡️ Linha do Tempo de Eventos (Ondas)
Licença
Consulte o arquivo LICENSE para detalhes.