网络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.txt2.配置设备
cp .env.example .env
# Edit .env with your device IPs and credentials3.立即尝试(无需实验室)
# Demo mode returns realistic mock data — no devices needed
DEMO_MODE=true python network_mcp_server.py4.连接到克劳德桌面
增添 ~/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 | 端到端网络验证 |
建筑
┌─────────────────────────────────────────┐
│ 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许可证-请参阅 许可证 了解详情。
