Token导航 LogoToken导航TokenDH.com
NetworkOps Platform logo
运维云端stdio官方级别未说明来源级核验

NetworkOps Platform

MCP Server

NetworkOps是一个基于模型上下文协议(MCP)的网络自动化平台,通过自然语言命令管理多厂商网络设备,无需脚本编写。

工具数

44

提示词数

0

GitHub Stars

0

资源数

0
PythonClaude云端部署Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

E-Conners-Lab

提供方

E-Conners-Lab

最后核验

2026/5/17 20:21

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python dashboard/api_server.py

详细介绍

网络运营

](https://github.com/E-Conners-Lab/NetworkOps_Platform/releases) ![Python 3.11+](https://www.python.org/downloads/) ![MCP Compatible](https://modelcontextprotocol.io/)

人工智能网络自动化平台

管理多供应商基础设施的自然语言命令

NetworkOps是基于模型上下文协议(MCP)构建的网络自动化平台。它支持通过自然语言对思科、瞻博网络、诺基亚、Arista和Linux设备进行人工智能辅助管理,无需脚本。

______________________________________________________________________

截图

拓扑仪表板

具有设备健康指示器、图例和网络统计数据的交互式强制网络拓扑。

Topology Dashboard

设备详情

单击任何设备以查看其属性、接口状态和补救控件。

Device Details

OSPF邻接重叠

直接在拓扑链路上用区域标签可视化OSPF邻接。

OSPF Adjacencies

BGP会话覆盖

对等链路上带有AS号注释的BGP会话状态。

BGP Sessions

DMVPN结构状态

DMVPN集线器和辐条覆盖,带有显示隧道IP、NBMA地址和正常运行时间的对等状态表。

DMVPN Fabric

使用延迟热图进行Ping扫描

批量ping结果可视化为整个拓扑的颜色编码延迟热图。

Ping Sweep

命令终端

在任何具有完整输出显示的设备上执行显示命令。

Command Terminal

AI文档助理

RAG支持的实时网络查询聊天——用自然语言提问,并获得源引用的答案。

AI Chat

实时遥测(MDT)

实时CPU、内存、接口流量和计数器以5秒的间隔通过gRPC进行流式传输。

MDT Telemetry

影响分析

在执行配置更改之前,预测其爆炸半径。

Impact Analysis

意图漂移引擎

YAML定义了预期的状态验证,包括每项合规性检查和违规警报。

Intent Drift Engine

路由器工具

内置子网计算器,带有VLSM分割和快速参考表。

Subnet Calculator

______________________________________________________________________

快速开始

演示模式(无需网络设备)

尝试不使用任何硬件的NetworkOps。演示模式模拟具有路由器、交换机和FRR边缘设备的多设备网络。

git clone https://github.com/E-Conners-Lab/NetworkOps_Platform.git && cd NetworkOps_Platform
./scripts/quickstart.sh --demo
# Follow the prompts, then open http://localhost:5001 — Login: admin/admin

或手动:

git clone https://github.com/E-Conners-Lab/NetworkOps_Platform.git && cd NetworkOps_Platform
uv venv --python 3.11                  # downloads Python 3.11 if needed
source .venv/bin/activate
uv pip install -r requirements.txt
cd dashboard && npm install && npm run build && cd ..
JWT_SECRET=$(python3 -c "import secrets; print(secrets.token_hex(32))")
DEMO_MODE=true JWT_SECRET=$JWT_SECRET python dashboard/api_server.py
没有紫外线? 用以下方式安装 curl -LsSf https://astral.sh/uv/install.sh | sh。您也可以使用 python3.11 -m venv .venvpip install -r requirements.txt 相反。

使用真实设备

git clone https://github.com/E-Conners-Lab/NetworkOps_Platform.git && cd NetworkOps_Platform
./scripts/quickstart.sh
# Edit .env with your device IPs and credentials
# Edit config/devices.py with your device inventory
python dashboard/api_server.py

码头工人

git clone https://github.com/E-Conners-Lab/NetworkOps_Platform.git && cd NetworkOps_Platform
./scripts/docker-init.sh
# Edit .env with your credentials (or add DEMO_MODE=true for demo)
docker compose up

______________________________________________________________________

演示模式

演示模式使用模拟网络数据提供功能齐全的仪表板体验。不需要真正的设备、SSH连接或实验室基础设施。

演示模式下的工作原理

功能状态详细信息
拓扑可视化7节点网络,带路由器、交换机和FRR边缘设备
BGP覆盖模拟iBGP(AS 65000)和eBGP(AS 65100)对等互联
OSPF覆盖所有路由器上的区域0邻接
DMVPN覆盖完整具有3个辐条的轮毂和辐条拓扑
交换机织物覆面2个具有上行链路状态和端口数的交换机
平扫完全模拟100%可达性,具有真实的延迟
接口列表完整每个设备界面显示状态
显示命令部分show ip interface brief, show version, show ip route 返回模拟输出;其他命令返回占位符消息
登录/RBAC完整JWT身份验证,基于角色的权限,所有仪表板功能已解锁
健康终点/healthz/health/detailed 在没有Redis的情况下工作

什么在演示模式下不起作用

特性原因
配置变更没有真正的设备可以推送配置
NETCONF/YANG查询需要实时设备连接
pyATS基线/差异需要SSH连接到真实设备
RAG聊天机器人需要 ANTHROPIC_API_KEY ChromaDB指数
流式遥测需要来自真实设备的gRPC流
终端(任意命令)大多数命令返回占位符输出
NetBox集成需要一个正在运行的NetBox实例
通过Claude使用MCP工具SSH到设备的工具将失败;只读工具工作

演示拓扑

        R1 ──── R2
        │        │
   Switch-R1  Switch-R2
        │
        R3 ──── R4
        │
      edge1 (FRR, AS 65100)
  • R1至R4:思科C8000V路由器(IOS-XE)——OSPF区域0、iBGP AS 65000、DMVPN集线器/辐条
  • 开关-R1、开关-R2:思科Cat9kv开关
  • 边缘1:FR路由设备——与R3的eBGP对等

______________________________________________________________________

特性

React仪表板

  • 具有拖放定位的交互式力导向拓扑
  • 实时设备健康监测(健康/退化/严重)
  • 基于角色的访问控制(管理员/操作员/查看器)
  • 带输出显示的命令终端
  • AI聊天面板(RAG-powered,需要Anthropic API键)
  • 设备详细信息面板:

- Cisco设备:带有管理员/线路协议状态、补救按钮的接口列表 - Linux主机:正常运行时间、内存、磁盘、网关可达性 - Containerlab设备:容器状态、正常运行时间、内存

  • 可视化覆盖:

- 带有AS号的BGP会话状态 - 具有区域映射的OSPF邻接 - DMVPN集线器/辐条结构 - 具有EIGRP状态的交换结构 - 带延迟热图的Ping扫描

  • 意图漂移引擎:

- YAML定义的预期状态验证 - 力导向依赖图 - 前/后/爆炸半径影响分析 - 跨子系统事件关联

  • 分层站点视图(区域→ Site → Rack → 设备)
  • 通过本地存储实现位置持久化
  • 变更管理工作流程

MCP工具(178种工具,24类)

与Claude Code或Claude Desktop集成,用于自然语言网络管理。

健康与监测

工具说明
health_check检查单个设备连接
health_check_all所有设备的并行健康检查
full_network_test验证OSPF、BGP、DMVPN和可达性
linux_health_checkLinux主机状态(正常运行时间、内存、磁盘)
get_cpu_memoryCPU和内存利用率
ping_sweep从设备到所有目标的批量ping

设备操作

工具说明
get_devices列出可用设备
send_command执行显示命令
send_config发送配置命令
discover_topology通过CDP/LDP发现拓扑
get_interface_status详细的接口状态
remediate_interface修复接口(无关机、反弹)
bulk_command在多个设备上并行执行命令

配置管理

工具说明
backup_config将运行配置保存到带时间戳的文件中
compare_configs区分两个配置或备份文件
list_backups列出已保存的配置备份

路由和故障排除

工具说明
get_routing_table带协议过滤的解析路由表
traceroute逐跳路径分析
get_arp_table支持VRF的解析ARP表
get_mac_table来自交换机的MAC地址表
get_neighbors结构化CDP/LDP邻居数据
get_logs具有严重性过滤的Syslog缓冲区

网络配置协议

工具说明
get_interfaces_netconf通过NETCONF/YANG获取接口信息
get_netconf_capabilities设备NETCONF功能
get_bgp_neighbors_netconf通过NETCONF连接BGP邻居

pyATS集成

工具说明
pyats_learn_feature了解设备功能状态
pyats_snapshot_state捕获设备状态基线
pyats_diff_state与基线进行比较
pyats_check_compliance对照黄金模板检查配置
pyats_list_baselines列出已保存的基线
pyats_list_templates列出黄金配置模板

NetBox集成

工具说明
netbox_get_devices列出NetBox中的设备
netbox_get_interfacesNetBox的设备接口
netbox_get_prefixesNetBox的IP前缀
netbox_generate_configs通过Jinja2从NetBox生成FRR配置
netbox_generate_iosxe_config从NetBox生成IOS-XE配置
netbox_allocate_ip从前缀分配下一个可用IP

记忆与上下文系统

工具说明
memory_search跨对话历史的语义搜索
memory_save保存笔记以供以后检索
memory_recall_device设备的最近事件
memory_stats内存系统统计信息

事件记录和缓存

工具说明
get_event_log审核日志事件(可过滤)
clear_event_log清除审核日志
cache_statusRedis缓存统计

流遥测(MDT)

  • 通过gRPC实时计算CPU、内存和接口计数器(间隔5秒)
  • WebSocket通过Socket推送到仪表板。输入
  • 配置在C8000V路由器和Cat9kv开关上

RAG文档聊天机器人

  • 使用语义搜索对CCIE/Cisco文档进行索引
  • ChromaDB+句子转换器嵌入
  • 聊天时通过SSH进行实时网络查询
  • Claude以源引用为动力的回应

Discord Bot(聊天操作)

  • 命令: !devices, !health, !bgp, !ping, !events, !topology, !run
  • RBAC:管理员命令需要“网络管理员”角色

企业功能

类别功能
认证JWT令牌、带恢复代码的MFA/TOTP
授权基于角色的访问控制(管理员/操作员/查看器)
缓存Redis支持的响应缓存
速率限制可配置的每个端点速率限制
异步作业具有PostgreSQL持久性的Celery任务队列
健康探测器/healthz, /readyz, /health/detailed, /metrics
TLS/HTTPS使用TLS 1.2/1.3的Nginx反向代理
日志记录用于聚合的结构化JSON日志
SIEM转发Splunk、Elasticsearch、Syslog、Webhook
KubernetesHPA、PDB、滚动部署的完整清单
优雅地关闭SIGTERM处理请求耗尽

______________________________________________________________________

建筑

┌─────────────────────────────────────────────────────────────────────┐
│                        NetworkOps Platform                          │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│   ┌──────────────┐    ┌──────────────┐    ┌────────────────────┐   │
│   │   Frontend   │    │  API Server  │    │    MCP Server      │   │
│   │   (React)    │◄──►│   (Flask)    │    │  (Claude Tools)    │   │
│   │  Port 3000   │    │  Port 5001   │    │                    │   │
│   │              │    │              │    │  178 tools across  │   │
│   │  • Topology  │    │  • REST API  │    │  24 categories     │   │
│   │  • Terminal  │    │  • WebSocket │    │  • NETCONF/YANG    │   │
│   │  • RAG Chat  │    │  • Auth/RBAC │    │  • pyATS           │   │
│   └──────────────┘    └──────┬───────┘    └──────────┬─────────┘   │
│                              │                       │              │
│                 ┌────────────┴───────────────────────┴──────────┐  │
│                 │             Shared Data Layer                  │  │
│                 │  • networkops.db (Alembic-managed)             │  │
│                 │  • chromadb/ (RAG)    • baselines/ (pyATS)     │  │
│                 └───────────────────────┬───────────────────────┘  │
│                                         │                          │
├─────────────────────────────────────────┼──────────────────────────┤
│                                         │                          │
│              Network Devices (SSH / NETCONF)                       │
│   ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌───────┐ │
│   │ Cisco   │  │ Juniper │  │ Nokia   │  │ Arista  │  │ Linux │ │
│   │ IOS-XE  │  │ Junos   │  │ SR Linux│  │  EOS    │  │ FRR   │ │
│   └─────────┘  └─────────┘  └─────────┘  └─────────┘  └───────┘ │
└─────────────────────────────────────────────────────────────────────┘

______________________________________________________________________

建立自己的实验室

使用快速入门脚本为您自己的网络设备配置NetworkOps:

# Interactive setup (recommended)
./scripts/quickstart.sh

# Demo mode (no devices needed)
./scripts/quickstart.sh --demo

# Non-interactive (CI/CD, Docker)
./scripts/quickstart.sh --headless

# Setup and auto-start
./scripts/quickstart.sh --headless --auto-start

脚本检测 紫外线 自动实现更快的依赖关系安装。

在Linux虚拟机(Proxmox、裸机等)上部署

您可以在单个Linux主机上运行整个平台和containerlab,无需多路径。

1.安装必备组件:

# Docker
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER && newgrp docker

# Containerlab
sudo bash -c "$(curl -sL https://get.containerlab.dev)"

# uv (Python version manager + package installer)
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc

# Node.js (for building the React frontend)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

2.克隆并设置项目:

git clone https://github.com/E-Conners-Lab/NetworkOps_Platform.git && cd NetworkOps_Platform
uv venv --python 3.11
source .venv/bin/activate
uv pip install -r requirements.txt

3.配置 .env:

cp .env.example .env

在中设置这些值 .env:

CONTAINERLAB_LOCAL=true
CONTAINERLAB_ONLY=true
CONTAINERLAB_TOPOLOGY_PATH=/path/to/NetworkOps_Platform/containerlab/datacenter.clab.yml
DEMO_MODE=false
JWT_SECRET=

4.提取图像并部署实验室:

docker pull frrouting/frr:v8.4.1
docker pull ghcr.io/nokia/srlinux:24.10.1
docker pull alpine:3.19

cd containerlab
sudo containerlab deploy -t datacenter.clab.yml
cd ..

5.构建前端,运行迁移,然后开始:

cd dashboard && npm install && npm run build && cd ..
alembic upgrade head
python dashboard/api_server.py

6.更改默认密码:

TOKEN=$(curl -s http://localhost:5001/api/auth/login -H "Content-Type: application/json" -d '{"username":"admin","password":"admin"}' | python3 -c "import sys,json;print(json.load(sys.stdin)['token'])")

curl -X POST http://localhost:5001/api/auth/change-password -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" -d '{"old_password":"admin","new_password":"YourNewPassword"}'

7.访问仪表板http://:5001 并使用登录 admin 以及您的新密码。

注: CONTAINERLAB_LOCAL=true 直接运行Docker命令,而不是通过Multipass路由。 CONTAINERLAB_ONLY=true 隐藏不存在的EVE-NG/物理设备,在仪表板中仅显示containerlab设备。

通过多路径(macOS)访问Containerlab

如果您使用的是macOS,并且更喜欢使用Multipass来托管containerlab VM,请离开 CONTAINERLAB_LOCAL=false (默认)并设置 CONTAINERLAB_VM 您的VM名称。看 core/containerlab.py 了解详情。

支持的设备类型

平台device_type特点
思科IOS-XEcisco_xeSSH、NETCONF、pyATS
思科IOScisco_ios仅限SSH
LinuxlinuxSSH
FR路由containerlab_frrSSH(通过Containerlab)
诺基亚SR Linuxcontainerlab_srlinuxSSH(通过Containerlab)

设备输入示例

DEVICES = {
    "core-router": {
        "host": "192.168.1.10",
        "device_type": "cisco_xe",
        "username": "admin",
        "password": "secret",
        "netconf_port": 830,
    },
    "linux-server": {
        "host": "192.168.1.100",
        "device_type": "linux",
        "username": "root",
        "password": "password",
    },
}

______________________________________________________________________

Claude命令示例

"Show me the interfaces on R1"
"What's the OSPF neighbor status across all routers?"
"Run a health check on all devices"
"Take a baseline snapshot of R2 and check for drift"
"Ping from R1 to all router loopbacks"
"Compare the running config of R1 and R2"
"Show me the PIM neighbors and RP mapping"

______________________________________________________________________

项目结构

.
├── network_mcp_async.py     # MCP server entry point
├── mcp_tools/               # 178 MCP tools (24 categories)
├── config/
│   └── devices.py           # Device inventory (static or NetBox)
├── core/                    # Core engines
│   ├── intent_engine.py     # Intent-based validation
│   ├── impact_analyzer.py   # Impact analysis
│   ├── demo/                # Demo mode fixtures
│   └── unified_db.py        # Unified SQLite database
├── dashboard/               # React dashboard + Flask API
│   ├── api_server.py        # Flask API backend (port 5001)
│   ├── routes/              # Modular route blueprints
│   ├── auth/                # JWT, MFA/TOTP, RBAC
│   ├── src/                 # React frontend
│   ├── Dockerfile.api       # API container
│   └── Dockerfile.frontend  # React + nginx container
├── templates/               # Jinja2 config templates (FRR, IOS-XE)
├── alembic/                 # Database migrations
├── ansible/                 # Playbooks and inventory
├── containerlab/            # Topology and device configs
├── docker/                  # Production Dockerfiles
├── helm/                    # Helm chart for Kubernetes
├── k8s/                     # Kubernetes manifests
├── nginx/                   # TLS reverse proxy config
├── netbox/                  # NetBox integration
├── scripts/                 # Quickstart, benchmarks, utilities
├── services/                # Discord bot, background services
├── tests/                   # Test suite
└── docs/                    # Documentation

______________________________________________________________________

需求

  • Python 3.11+(推荐使用;pyATS尚不支持3.14)
  • Node.js 18+(用于仪表板)
  • 可通过SSH访问的网络设备(用于非演示用途)
  • 支持MCP的Claude Code或Claude Desktop(用于AI工具)

可选的

  • Redis(缓存和速率限制)
  • PostgreSQL(作业持久化)
  • 人类API密钥(RAG聊天机器人)
  • NetBox实例(IPAM集成)

______________________________________________________________________

使用本地LLM

RAG聊天机器人默认使用Claude,但如果你想让一切都在本地,你可以交换本地LLM。

什么已经在本地运行

  • 嵌入sentence-transformers (all-MiniLM-L6-v2)在本地运行,用于所有矢量搜索和文档索引。没有外部API调用。
  • MCP工具 --178个MCP工具使用SSH/NETCONF上的标准MCP协议。任何兼容MCP的客户端都可以使用它们,HTTP代理也可以使用它们(mcp_http_proxy.py)将它们作为任何LLM或脚本的REST端点公开。

本地LLM需要什么变化

RAG聊天面板(rag/query.py)连接到Anthropic SDK。要将其指向本地模型(Ollama、vLLM、LM Studio、llama.cpp等),您需要修改三个文件:

1. rag/query.py --将Anthropic客户端替换为与OpenAI兼容的客户端:

# Before (Anthropic)
import anthropic
client = anthropic.Anthropic(api_key=api_key)
response = client.messages.create(
    model=model,
    max_tokens=1024,
    system=self.SYSTEM_PROMPT,
    messages=[{"role": "user", "content": user_message}]
)

# After (OpenAI-compatible — works with Ollama, vLLM, LM Studio)
from openai import OpenAI
client = OpenAI(base_url="http://localhost:11434/v1", api_key="unused")
response = client.chat.completions.create(
    model="llama model here",
    max_tokens=1024,
    messages=[
        {"role": "system", "content": self.SYSTEM_PROMPT},
        {"role": "user", "content": user_message}
    ]
)

2. rag/sanitizer.py --更新模型allowlist(第15-22行)以包含您的本地模型名称,或完全删除allowlist检查。

3. dashboard/routes/chat.py --更改默认模型 claude-sonnet-4-20250514 到您当地的型号名称。

工具调用(实时设备查询)

RAG聊天可以在对话过程中对您的设备执行实时SSH命令(例如,“运行健康检查”)。这使用了Anthropic的 tool_use 块格式。如果你想与当地法学硕士合作:

  • 中的工具调用循环 rag/query.py (第406行附近)需要适应OpenAI函数调用模式
  • 你需要一个支持可靠函数调用的模型-- Llama 3.1 70B+, Qwen 2.5 72B,或 西北风大 运作良好
  • 较小的型号(7B/8B)将难以使用多步工具链

如果你只需要RAG问答(询问有关索引文档的问题)而不需要实时设备查询,你可以完全跳过调用重构的工具。任何处理基本聊天完成的本地模型都可以工作。

推荐的本地设置

设置型号需要VRAM工具调用
奥拉玛llama3.1:70b约40 GB
奥拉玛qwen2.5:32b约20 GB
奥拉玛llama3.1:8b~5 GB仅限RAG(无工具)
vLLM任何HuggingFace模型变化是(使用OpenAI服务器)
LM 工作室任何GGUF型号变化是(与OpenAI兼容的API)

______________________________________________________________________

演出

在Gunicorn的MacBook Pro M4上与4名工人进行了测试:

并发请求/秒平均延迟
100537624毫秒
5005100+略有增加
10004800+接近饱和

所有并发级别均无错误。看 scripts/wrk_benchmark.sh 对于完整的基准测试套件。

______________________________________________________________________

安全须知

  • 永不承诺 .env --它包含凭据和机密
  • 生成唯一 JWT_SECRET 对于每次部署
  • 仪表板使用RBAC按角色限制命令访问
  • 危险指令(reload, write erase等)被阻塞
  • 在生产中执行之前审查命令

______________________________________________________________________

许可证

MIT许可证

目录标签

目录标签

PythonClaude云端部署网络自动化本地部署AI辅助管理多厂商支持自然语言处理网络拓扑可视化

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

44

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP