Network Incident MCP
Network Incident MCP Demo
Небольшой демо/прототип, показывающий, как LLM-агент (Google Gemini) использует Model Context Protocol (MCP) для разбора имитированного сетевого инцидента: получение телеметрии устройства, просмотр системных журналов, принятие решения о необходимости действий и выполнение шага по устранению неполадки — всё через инструменты, предоставляемые локальным MCP-сервером.
Это прототип для учебных/демонстрационных целей. Все сетевые данные вымышлены и жёстко заданы в mcp_server/mock_network_db.py. Реального сетевого бэкенда нет.
Как это работает
mcp_server/— MCP-сервер, предоставляющий:get_device_telemetry(device_id)— статус устройства, оптическая мощность, BGP-флапыget_latest_syslog()— последние строки системного журналаapply_traffic_reroute(source_pop, target_pop, circuit_id)— имитация действия по устранению неполадки (отклоняет любую цель, не являющуюся известным, работоспособным PoP)incident_triage_prompt(device_id)— шаблон промпта, описывающий шаги разбора и порог перемаршрутизации -20.0 dBm
agent/gemini_mcp_client.py— клиент, который запускает MCP-сервер, передаёт его инструменты Gemini в качестве инструментов вызова функций и выполняет цикл: Gemini решает, какой инструмент вызвать следующим, клиент выполняет его через MCP и возвращает результат, пока Gemini не даст окончательный ответ.
Related MCP server: Pulse
Установка
git clone <your-repo-url>
cd network-incident-mcp
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtЗапуск тестов
python3 -m pytest tests/Запуск MCP-сервера в автономном режиме
python3 mcp_server/server.pyЗапуск живого агента
Требуется API-ключ Gemini из Google AI Studio:
export GEMINI_API_KEY=your-key-here
python3 agent/gemini_mcp_client.pyПример вывода
Агент направлен на имитированное устройство router-van-01, которое смоделировано как DEGRADED с оптической мощностью -28.5 dBm — ниже порога перемаршрутизации -20.0 dBm. Реальный запуск выглядит так:
(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`.Обратите внимание: первая попытка перемаршрутизации модели направлена на Richmond PoP, который не является реальной, работоспособной локацией в имитированных данных — сервер отклоняет её с ERROR, а не молча добивается успеха, и модель повторяет попытку с корректной работоспособной целью (Toronto PoP), прежде чем добиться успеха.
Публичное HTTP-демо (без API-ключа)
web/app.py — это небольшая обёртка FastAPI вокруг той же имитированной логики телеметрии/перемаршрутизации, предоставленная в виде обычных REST-эндпоинтов — не требуется ни MCP-клиент, ни API-ключ Gemini. /triage/{device_id} детерминированно реализует последовательность получение → проверка → перемаршрутизация на Python (не через LLM), поэтому его можно бесплатно и безопасно открывать для публичного доступа.
Запустите его локально:
uvicorn web.app:app --host 127.0.0.1 --port 8001Затем из другого терминала:
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 rerouteПримечания
Требуется
mcp<2(версия уже закреплена вrequirements.txt) — сервер использует API v1FastMCP.Доступность моделей Gemini меняется со временем; если вы получите ошибку
404model-not-found, выведите список моделей, доступных для вашего API-ключа, и обновите название модели вagent/gemini_mcp_client.py.Количество раундов вызова инструментов ограничено в рамках одного запуска (
GeminiMCPOrchestrator.MAX_TURNS, по умолчанию 5), чтобы избежать неконтролируемого расхода 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