网络设备AI管理协议

通过MCP协议为AI助手提供实时访问网络设备的能力,支持多厂商设备管理、健康检查、拓扑发现及配置管理。

  • by E-Conners-Lab
  • Python
  • 本地部署
  • 12 星标
  • 更新于
在 GitHub 查看 E-Conners-Lab/MCP-DEMO-LAB

使用说明

网络mcp

让AI直接访问您的网络设备。 35个MCP工具,多供应商,一个接口。

停止编写Netmiko脚本。将Claude、ChatGPT或任何兼容MCP的AI连接到您的路由器、交换机和防火墙,让它运行显示命令、检查健康状况、计算子网、发现拓扑结构,并通过自然语言管理配置。

You: "Check the health of all my devices"
Claude: [calls health_check_all] → 6 devices healthy, Switch-R2 has 2 interfaces down

这是什么?

一 MCP(模型上下文协议) 服务器,使AI助手能够实时访问网络设备。专为希望在不编写样板的情况下实现自动化的网络工程师而设计。

支持的平台:

  • 思科IOS-XE(路由器、交换机)
  • 诺基亚SR Linux
  • FR路由(FRR)
  • Juniper Junos
  • 阿鲁巴 AOS-CX
  • Linux主机

快速开始

1.安装

git clone https://github.com/E-Conners-Lab/MCP-DEMO-LAB.git
cd network-mcp
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt

2.配置设备

cp .env.example .env
# Edit .env with your device IPs and credentials

3.立即尝试(无需实验室)

# Demo mode returns realistic mock data — no devices needed
DEMO_MODE=true python network_mcp_server.py

4.连接到克劳德桌面

增添 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "network": {
      "command": "/path/to/network-mcp/.venv/bin/python",
      "args": ["/path/to/network-mcp/network_mcp_server.py"]
    }
  }
}

重新启动克劳德桌面。您现在有35个可用的网络工具。

5.尝试一个真实的实验室(5分钟)

# Spin up 2 FRR routers with containerlab
cd quickstart && sudo containerlab deploy -t topology.clab.yml

工具

设备操作

工具 说明
get_devices 列出库存中的所有设备
send_command 在任何设备上运行show命令
send_config 推送配置更改
health_check 检查设备健康状况(CPU、内存、接口)
health_check_all 并行检查所有设备的健康状况
backup_config 备份运行配置
compare_configs 区分两个配置备份
rollback_config 还原以前的配置

网络智能

工具 说明
discover_topology 基于LLDP的拓扑发现
get_routing_table 查看路由表
get_neighbors BGP/OSPF邻居状态
get_arp_table ARP表查找
get_mac_table MAC地址表
ping_sweep 扫描子网以查找可访问的主机
traceroute 跟踪目标路径

计算器(无需设备)

工具 说明
calculate_tunnel_mtu VPN隧道的最佳MTU/MSS
calculate_subnet_info CIDR表示法的子网详细信息
split_network VLSM子网拆分
convert_netmask CIDR到点分十进制转换

SNMP和监控

工具 说明
snmp_get_oid 特定OID的SNMP GET
snmp_walk_oid SNMP WALK子树
snmp_poll_metrics 轮询接口/CPU/内存指标

网络配置

工具 说明
get_interfaces_netconf 通过NETCONF接口数据
get_bgp_neighbors_netconf 通过NETCONF的BGP状态
get_netconf_capabilities 设备NETCONF功能

配置管理

工具 说明
compliance_check 根据合规性模板检查设备
full_network_test 端到端网络验证

查看全部35个工具→

建筑

┌─────────────────────────────────────────┐
│  AI Assistant (Claude, ChatGPT, etc.)   │
└────────────────┬────────────────────────┘
                 │ MCP Protocol (stdio/SSE)
┌────────────────▼────────────────────────┐
│  network_mcp_server.py                  │
│  FastMCP server + tool registry         │
└────────────────┬────────────────────────┘
                 │
┌────────────────▼────────────────────────┐
│  mcp_tools/                             │
│  ├── device.py      (9 tools)           │
│  ├── calculators.py (6 tools)           │
│  ├── topology.py    (6 tools)           │
│  ├── config.py      (8 tools)           │
│  ├── snmp.py        (5 tools)           │
│  ├── netconf.py     (4 tools)           │
│  ├── compliance.py  (7 tools)           │
│  └── ... (10 modules, 35 tools total)   │
└────────────────┬────────────────────────┘
                 │
┌────────────────▼────────────────────────┐
│  core/                                  │
│  ├── connection.py   (Netmiko/Scrapli)  │
│  ├── parser.py       (NTC/Genie)        │
│  ├── mtu_calculator.py                  │
│  └── subnet_calculator.py              │
└────────────────┬────────────────────────┘
                 │ SSH / NETCONF / SNMP
┌────────────────▼────────────────────────┐
│  Network Devices                        │
│  Cisco · Nokia · FRR · Juniper · Aruba  │
└─────────────────────────────────────────┘

项目结构

network-mcp/
├── network_mcp_server.py    # MCP server entry point
├── config/
│   └── devices.py           # Device inventory (env var overrides)
├── mcp_tools/               # All MCP tool implementations
│   ├── device.py            # Core device operations
│   ├── calculators.py       # MTU/subnet calculators
│   ├── topology.py          # LLDP discovery
│   ├── config.py            # Config backup/compare/rollback
│   ├── snmp.py              # SNMP polling
│   ├── netconf.py           # NETCONF operations
│   ├── compliance.py        # Compliance checking
│   └── ...                  # 10 modules, 35 tools total
├── core/                    # Connection and parsing libraries
├── templates/               # Jinja2 config templates (FRR, IOS-XE)
├── quickstart/              # Containerlab quick-start lab
└── tests/                   # Test suite

配置

所有配置都是通过环境变量(或 .env 文件):

# Device credentials
DEVICE_USERNAME=admin
DEVICE_PASSWORD=admin

# Device IPs (override defaults)
R1_HOST=10.255.255.11
R2_HOST=10.255.255.12

# Optional features
DEMO_MODE=true              # Mock data, no real devices
USE_NETBOX=true             # Pull inventory from NetBox
NETBOX_URL=http://localhost:8000
NETBOX_TOKEN=your-token

需求

  • Python 3.11+
  • 可通过SSH/NETCONF/SNMP访问的网络设备
  • 克劳德桌面 或任何MCP兼容客户端

贡献

看 贡献.md 作为指导方针。

许可证

MIT许可证-请参阅 许可证 了解详情。