Zing 论坛

正文

Nornir MCP Server:将大语言模型引入网络自动化的企业级桥梁

Nornir MCP Server 是一个基于 Model Context Protocol (MCP) 的企业级服务器,它将大语言模型(如 Claude)与网络自动化框架 Nornir 无缝集成,支持多厂商网络设备(Cisco、Arista、Juniper 等)的自然语言编排,提供双重引擎架构(NAPALM + Netmiko)、智能过滤、安全沙箱等生产级功能。

MCPModel Context ProtocolNornir网络自动化Network AutomationLLM大语言模型ClaudeNAPALMNetmiko
发布时间 2026/05/06 20:39最近活动 2026/05/06 20:51预计阅读 7 分钟
Nornir MCP Server:将大语言模型引入网络自动化的企业级桥梁
1

章节 01

Nornir MCP Server:将大语言模型引入网络自动化的企业级桥梁

背景:网络自动化与大语言模型的融合挑战\n\n网络自动化领域长期以来面临着工具碎片化、配置复杂、学习曲线陡峭等问题。传统的网络运维工程师需要掌握多种命令行接口(CLI)、API 以及自动化框架(如 Ansible、Nornir)才能高效管理多厂商网络设备。与此同时,大语言模型(LLM)在代码生成、自然语言理解和推理方面展现出强大能力,但如何将这些能力安全、高效地引入网络运维场景,一直是业界探索的方向。\n\nModel Context Protocol(MCP)作为 Anthropic 推出的开放协议,为 LLM 与外部工具、数据源之间的标准化交互提供了解决方案。通过 MCP,LLM 可以像调用函数一样使用外部工具,实现真正的"代理式"(Agentic)工作流。而 Nornir MCP Server 正是这一理念在网络自动化领域的具体落地。\n\n## 项目概述:Nornir MCP Server 是什么\n\nNornir MCP Server 是一个企业级的 MCP 服务器实现,它将 Nornir——一个基于 Python 的并行化网络自动化框架——与大语言模型连接起来。该项目由网络工程师 Syed Asif 开发并开源,旨在让网络运维人员能够用自然语言与网络基础设施进行交互。\n\n项目的核心定位是"桥梁":一端连接 LLM 的自然语言理解能力,另一端连接 Nornir 强大的多厂商网络设备管理能力。通过标准化的 MCP 协议,Claude、OpenCode 等支持 MCP 的 AI 助手可以直接调用网络管理工具,执行从监控到配置变更的全生命周期操作。\n\n## 核心架构:双重引擎设计\n\nNornir MCP Server 采用了独特的双重引擎架构,兼顾了结构化数据获取的规范性和命令行执行的灵活性:\n\n### NAPALM 引擎:标准化的网络数据获取\n\nNAPALM(Network Automation and Programmability Abstraction Layer with Multivendor support)是一个支持多厂商网络设备的 Python 库,它提供了一套统一的 API 来获取网络设备的状态信息。Nornir MCP Server 集成了 NAPALM,支持对 Cisco IOS/NX-OS/XR、Arista EOS、Juniper Junos 等主流厂商设备的标准化查询。\n\n通过 NAPALM,用户可以用统一的接口获取 ARP 表、MAC 地址表、VLAN 信息、接口状态、BGP 邻居状态等关键网络数据,无需关心底层设备的命令差异。\n\n### Netmiko 引擎:灵活的 CLI 命令执行\n\nNetmiko 是一个基于 Paramiko 的 Python SSH 库,专门用于网络设备的命令行交互。Nornir MCP Server 利用 Netmiko 提供灵活的 show 命令执行和配置下发能力,支持那些尚未被 NAPALM 标准化覆盖的设备或自定义命令场景。\n\n这种双重引擎设计使得 Nornir MCP Server 既能提供标准化的数据视图,又能保持对底层命令行的完全控制,适应企业网络环境的复杂需求。\n\n## 工具集:六大核心功能\n\nNornir MCP Server 向 LLM 暴露了六个核心工具,覆盖网络运维的监控、管理和备份场景:\n\n### 1. 清单管理(list_network_devices)\n\n支持按主机名、设备组、平台类型等维度查询网络设备清单。这一功能让 LLM 能够"了解"网络拓扑,为后续的定向操作提供上下文。\n\n### 2. 设备监控(get_device_facts, run_napalm_getter)\n\n- get_device_facts:获取设备基本信息,包括厂商、型号、序列号、运行时间等\n- run_napalm_getter:通用数据获取接口,支持调用任意 NAPALM getter(如 ARP、VLAN、路由表等)\n\n### 3. 配置管理(run_show_commands, send_config_commands)\n\n- run_show_commands:安全执行 show 命令,获取设备运行状态\n- send_config_commands:下发配置变更,支持配置验证和回滚\n\n### 4. 配置备份(backup_device_configs)\n\n支持将设备配置批量备份到本地指定目录,为变更管理提供安全保障。\n\n## 安全设计:生产环境的第一考量\n\n网络自动化工具直接关系到生产环境的稳定性,Nornir MCP Server 在安全性方面做了多层次的防护:\n\n### 命令黑名单机制\n\n服务器内置了多阶段命令验证引擎,默认阻止以下危险操作:\n- 高危命令:reload、write erase、erase startup-config 等\n- 敏感关键词:erase、format、delete 等\n- 命令链与重定向:阻止使用 ;、&&、>、< 等符号,确保单次执行完整性\n\n### 输入验证与沙箱\n\n所有输入均通过 Pydantic 进行严格的类型验证,防止注入攻击。配置备份路径被限制在指定的根目录内,防止目录遍历攻击。\n\n### 凭据安全\n\n支持环境变量和 Nornir 原生的安全凭据管理机制,避免在配置文件中硬编码敏感信息。\n\n## 实时重载:动态配置更新\n\n与许多将配置缓存在内存中的服务不同,Nornir MCP Server 的每个工具调用都会从磁盘重新加载 config.yaml 和清单文件。这一设计带来了显著优势:\n- 动态扩容:无需重启服务即可添加新设备\n- 配置热更新:清单变更即时生效\n- 状态隔离:每次调用都是独立的执行上下文,避免状态污染\n\n## 使用场景:自然语言驱动的网络运维\n\n通过 Nornir MCP Server,网络工程师可以用自然语言完成复杂的运维任务:\n\n### 场景一:快速故障排查\n\n工程师可以向 Claude 提问:"US-West 区域的核心路由器中,有没有 BGP 邻居状态异常的?" Claude 会自动调用 list_network_devices 筛选设备,然后执行 run_napalm_getter 获取 BGP 状态,最后汇总结果。\n\n### 场景二:批量配置备份\n\n指令:"备份所有 Arista 交换机的运行配置。" 系统会自动识别 Arista 设备组,调用 backup_device_configs 完成批量备份。\n\n### 场景三:接口健康检查\n\n指令:"检查 edge-group 中各设备的接口错误计数。" 系统会执行针对性的 show 命令,收集并汇总接口统计信息。\n\n## 技术实现:Python 异步与模块化设计\n\nNornir MCP Server 采用 Python 3.10+ 开发,充分利用了异步执行能力。项目结构清晰,核心模块包括:\n\n- services/runner.py:共享的任务执行和超时处理逻辑\n- services/inventory.py:清单加载和过滤辅助函数\n- tools/monitoring.py:监控工具实现,复用内部 NAPALM 执行辅助函数\n\n项目使用 uv 作为包管理工具,支持快速安装和依赖锁定。完整的 pytest 测试套件覆盖了过滤器、清单加载、安全验证、执行器错误处理等核心功能。\n\n## 安装与配置\n\n### 快速安装\n\n使用 uv(推荐):\nbash\nuv tool install git+https://github.com/sydasif/nornir-mcp-server.git\n\n\n或使用 pip:\nbash\npip install git+https://github.com/sydasif/nornir-mcp-server.git\n\n\n### Claude 集成配置\n\n在 Claude 配置文件中添加:\njson\n{\n \"mcpServers\": {\n \"nornir\": {\n \"command\": \"nornir-mcp\"\n }\n }\n}\n\n\n### OpenCode 配置\n\njson\n{\n \"$schema\": \"https://opencode.ai/config.json\",\n \"mcp\": {\n \"nornir\": {\n \"type\": \"local\",\n \"command\": [\"nornir-mcp\"]\n }\n }\n}\n\n\n## 项目意义与展望\n\nNornir MCP Server 代表了网络自动化与 AI 融合的一个重要方向。它不仅降低了网络运维的门槛——让工程师可以用自然语言而非复杂的 CLI 命令与设备交互——更重要的是,它为 LLM 代理在 IT 基础设施管理领域的应用提供了一个安全、可控的范例。\n\n随着 MCP 生态的不断发展,我们可以预见类似的桥接项目将在更多专业领域涌现,推动"AI 原生运维"(AIOps)从概念走向实践。对于网络工程师而言,掌握这类工具将成为未来竞争力的重要组成部分。\n\n## 相关资源\n\n- GitHub 仓库:https://github.com/sydasif/nornir-mcp-server\n- Nornir 官网:https://nornir.tech/\n- MCP 协议文档:https://modelcontextprotocol.io\n- NAPALM 项目:https://github.com/napalm-automation/napalm\n- Netmiko 项目:https://github.com/ktbyers/netmiko