Network Incident MCP
Network Incident MCP Demo
Un pequeño prototipo/demo que muestra a un agente LLM (Google Gemini) utilizando el Model Context Protocol (MCP) para hacer el triaje de un incidente de red simulado: obtener telemetría de dispositivos, inspeccionar syslogs, decidir si se necesita alguna acción y ejecutar un paso de remediación — todo a través de herramientas expuestas por un servidor MCP local.
Este es un prototipo con fines de aprendizaje/demo. Todos los datos de red son falsos y están hardcodeados en mcp_server/mock_network_db.py. No hay un backend de red real.
Cómo funciona
mcp_server/— un servidor MCP que expone:get_device_telemetry(device_id)— estado del dispositivo, potencia óptica, flaps de BGPget_latest_syslog()— líneas recientes del syslogapply_traffic_reroute(source_pop, target_pop, circuit_id)— una acción de remediación simulada (rechaza cualquier destino que no sea un PoP conocido y en buen estado)incident_triage_prompt(device_id)— una plantilla de prompt que describe los pasos del triaje y el umbral de redirección de -20.0 dBm
agent/gemini_mcp_client.py— un cliente que lanza el servidor MCP, ofrece sus herramientas a Gemini como herramientas de llamada a funciones y ejecuta un bucle: Gemini decide qué herramienta llamar a continuación, el cliente la ejecuta vía MCP y le devuelve el resultado, hasta que Gemini dé una respuesta final.
Related MCP server: Pulse
Configuración
git clone <your-repo-url>
cd network-incident-mcp
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtEjecutar las pruebas
python3 -m pytest tests/Ejecutar el servidor MCP de forma independiente
python3 mcp_server/server.pyEjecutar el agente en vivo
Requiere una clave de API de Gemini de Google AI Studio:
export GEMINI_API_KEY=your-key-here
python3 agent/gemini_mcp_client.pyEjemplo de salida
El agente apunta al dispositivo simulado router-van-01, que se simula como DEGRADED con una potencia óptica de -28.5 dBm — por debajo del umbral de redirección de -20.0 dBm. Una ejecución real tiene este aspecto:
(venv) ac@ubuntuserver2026:~/network-incident-mcp$ python3 agent/gemini_mcp_client.py
Processing request of type ListToolsRequest
[+] Connected to MCP. Registered 3 tools with Gemini 3.6 Flash.
Processing request of type GetPromptRequest
[--> Model Tool Call Request]: get_device_telemetry({'device_id': 'router-van-01'})
Processing request of type CallToolRequest
[<-- MCP Execution Output]: {
"device_id": "router-van-01",
"data": {
"status": "DEGRADED",
"location": "Vancouver PoP",
"bgp_flaps": 14,
"optical_power_dbm": -28.5,
"circuits": [
"fiber-van-richmond-10G"
]
}
}
[--> Model Tool Call Request]: get_latest_syslog({})
Processing request of type CallToolRequest
[<-- MCP Execution Output]:
[2026-08-24T10:12:01Z] WARN router-van-01 BGP neighbor 192.168.10.1 DOWN (Retries: 3)
[2026-08-24T10:12:15Z] CRIT router-van-01 Optical signal loss detected on fiber-van-richmond-10G (-28.5 dBm)
[2026-08-24T10:14:02Z] WARN router-van-01 Packet loss spike: 18.4% on interface ge-0/0/1
[--> Model Tool Call Request]: apply_traffic_reroute({'target_pop': 'Richmond PoP', 'circuit_id': 'fiber-van-richmond-10G', 'source_pop': 'Vancouver PoP'})
Processing request of type CallToolRequest
[<-- MCP Execution Output]: {
"status": "ERROR",
"error": "Target PoP 'Richmond PoP' is not a known healthy PoP. Healthy PoPs: ['Toronto PoP']"
}
[--> Model Tool Call Request]: apply_traffic_reroute({'circuit_id': 'fiber-van-richmond-10G', 'target_pop': 'Toronto PoP', 'source_pop': 'Vancouver PoP'})
Processing request of type CallToolRequest
[<-- MCP Execution Output]: {
"status": "SUCCESS",
"action": "Traffic shifted from Vancouver PoP to Toronto PoP",
"isolated_circuit": "fiber-van-richmond-10G",
"new_route_metric": 10
}
[Model Final Response]: ### Incident Analysis Summary for `router-van-01`
1. **Device Telemetry Analysis**
- **Device ID:** `router-van-01`
- **Location:** Vancouver PoP
- **Device Status:** DEGRADED
- **Optical Power Level:** **-28.5 dBm**
- **BGP Flaps:** 14
- **Active Circuit:** `fiber-van-richmond-10G`
2. **Syslog Inspection**
- Critical optical signal loss log detected:
`[2026-08-24T10:12:15Z] CRIT router-van-01 Optical signal loss detected on fiber-van-richmond-10G (-28.5 dBm)`
- Additional warnings observed regarding BGP neighbor timeouts and interface packet loss spikes (`ge-0/0/1`).
3. **Remediation Action**
- **Condition Met:** Optical power level (-28.5 dBm) is below the threshold of -20.0 dBm.
- **Action Taken:** Executed `apply_traffic_reroute`.
- **Circuit:** `fiber-van-richmond-10G`
- **Source PoP:** Vancouver PoP
- **Target PoP:** Toronto PoP
- **Status:** **SUCCESS** — Traffic successfully rerouted from Vancouver PoP to Toronto PoP, isolating circuit `fiber-van-richmond-10G`.Nótese que el primer intento de redirección del modelo apunta a Richmond PoP, que no es una ubicación real y en buen estado en los datos simulados — el servidor lo rechaza con un ERROR en lugar de completarse silenciosamente, y el modelo reintenta con el destino correcto y en buen estado (Toronto PoP) antes de lograrlo.
Demo HTTP pública (sin necesidad de clave de API)
web/app.py es un pequeño envoltorio de FastAPI alrededor de la misma lógica simulada de telemetría/redirección,
expuesta como endpoints REST simples — no requiere cliente MCP ni clave de API de Gemini.
/triage/{device_id} reimplementa el flujo de obtener → comprobar → redirigir
de forma determinista en Python (no mediante un LLM), por lo que es gratuito y seguro exponerlo
públicamente.
Ejecútalo localmente:
uvicorn web.app:app --host 127.0.0.1 --port 8001Luego, desde otra terminal:
curl http://127.0.0.1:8001/devices
curl http://127.0.0.1:8001/telemetry/router-van-01
curl http://127.0.0.1:8001/syslog
curl http://127.0.0.1:8001/triage/router-van-01 # degraded device -> auto-reroutes
curl http://127.0.0.1:8001/triage/router-yyz-02 # healthy device -> no rerouteNotas
Requiere
mcp<2(ya fijado enrequirements.txt) — el servidor usa la API v1 deFastMCP.La disponibilidad de los modelos de Gemini cambia con el tiempo; si te encuentras con un error
404de modelo no encontrado, enumera los modelos disponibles para tu clave de API y actualiza el nombre del modelo enagent/gemini_mcp_client.py.Las rondas de llamada a herramientas están limitadas por ejecución (
GeminiMCPOrchestrator.MAX_TURNS, por defecto 5) para evitar un uso descontrolado de la API.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides AI assistants with direct access to multi-vendor network devices for tasks like configuration management, health checks, and topology discovery through 35 specialized tools. It enables natural language control over platforms including Cisco, Juniper, and Nokia using SSH, NETCONF, and SNMP protocols.11MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to investigate and manipulate live network simulations via MCP, including protocol debugging and fault injection.
- AlicenseAqualityDmaintenanceAn MCP server that exposes live network monitoring data as Resources and diagnostic capabilities as Tools, letting AI assistants query network health conversationally.6MIT
- AlicenseNot gradedqualityBmaintenanceExposes network-monitoring tools (query metrics, analyze windows, compare, logs, status, runbooks, speed tests) as an MCP server for agentic workflows. Designed with evaluation suites, cost-aware model routing, and semantic tool retrieval.MIT
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Phone, SMS & email for AI agents — one remote MCP endpoint, OAuth login, zero install.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/asif-c/network-incident-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server