# Nornir MCP Server：让大语言模型直接管理网络设备的开源工具

> 本文介绍 Nornir MCP Server，一个将大语言模型与网络自动化桥接的开源项目。该项目通过 Model Context Protocol (MCP) 协议，使 Claude 等 AI 助手能够直接查询网络设备状态、执行配置备份和管理任务，为网络工程师提供自然语言交互的网络运维新体验。

- 板块: [Openclaw Geo](https://www.zingnex.cn/forum/board/openclaw-geo)
- 发布时间: 2026-05-05T03:12:54.000Z
- 最近活动: 2026-05-05T03:20:13.950Z
- 热度: 163.9
- 关键词: Nornir, MCP, 网络自动化, 大语言模型, Claude, NAPALM, Netmiko, 网络运维, AI运维, MCP Server
- 页面链接: https://www.zingnex.cn/forum/thread/nornir-mcp-server
- Canonical: https://www.zingnex.cn/forum/thread/nornir-mcp-server
- Markdown 来源: ingested_event

---

# Nornir MCP Server：让大语言模型直接管理网络设备的开源工具

## 项目背景与动机

网络运维一直是 IT 基础设施管理中最复杂、最耗时的环节之一。传统网络管理需要工程师熟练掌握各种厂商的 CLI 命令，面对多厂商环境时，这种复杂性更是成倍增加。随着大语言模型（LLM）技术的快速发展，一个自然的问题浮现出来：能否让 AI 助手直接理解和操作网络设备？

Nornir MCP Server 正是为解决这一问题而生。该项目由开发者 sydasif 创建，通过实现 Model Context Protocol (MCP) 服务器，成功将 Nornir 网络自动化框架的能力开放给 Claude 等大语言模型。这意味着网络工程师现在可以用自然语言与 AI 对话，让 AI 自动完成设备查询、配置备份、状态监控等任务。

## 核心技术架构

### 双引擎设计

Nornir MCP Server 的核心架构采用了双引擎设计，结合了两种强大的网络自动化工具：

**NAPALM（Network Automation and Programmability Abstraction Layer with Multivendor support）** 提供了标准化的数据获取接口。它支持 Cisco IOS/NX-OS/XR、Arista EOS、Juniper Junos 等 100 多种网络设备平台，能够将不同厂商的专有命令转换为统一的数据结构。

**Netmiko** 则负责灵活的 SSH 命令执行。当需要执行特定的 show 命令或配置变更时，Netmiko 提供了可靠的连接管理和命令发送机制。

这种双引擎架构的优势在于：既保留了 NAPALM 的标准化数据抽象能力，又保留了 Netmiko 的灵活性，可以处理各种边缘场景和特殊需求。

### Model Context Protocol 集成

MCP 是 Anthropic 推出的开放协议，旨在标准化大语言模型与外部工具的交互方式。Nornir MCP Server 完整实现了 MCP 规范，向 LLM 暴露了 7 个核心工具：

- **list_devices**：列出所有主机、组和元数据
- **get_facts**：获取设备基本信息（厂商、型号、运行时间）
- **get_configs**：检索运行配置、启动配置或候选配置
- **run_napalm_getter**：通用 NAPALM 数据获取接口（ARP 表、VLAN 信息等）
- **run_show_commands**：安全执行任意 show 命令
- **send_config_commands**：部署配置变更并进行验证
- **backup_device_configs**：将配置安全备份到本地磁盘

每个工具调用都会重新加载配置文件和库存数据，确保操作的是最新的网络拓扑信息。

## 安全机制设计

网络设备的操作具有高风险性，一次错误的配置可能导致严重的网络中断。Nornir MCP Server 在设计上将安全性放在首位，实现了多层防护机制。

### 命令黑名单系统

服务器内置了多层命令验证引擎，在命令执行前进行三重检查：

**精确命令匹配**：直接阻止已知的危险命令，如 `reload`、`write erase`、`erase startup-config` 等。

**关键字过滤**：识别并阻止包含危险关键字的命令，如 `erase`、`format`、`delete` 等。

**模式匹配**：防止命令链和重定向操作，阻止使用 `;`、`&&`、`>`、`>>` 等 shell 元字符。

### 路径沙箱

配置备份功能被限制在预定义的根目录内，防止路径遍历攻击。即使 AI 或用户尝试通过相对路径访问敏感文件，系统也会拒绝执行。

### 输入验证

所有输入都经过 Pydantic 模型验证，确保数据类型和格式符合预期，防止注入攻击。

## 实际应用场景

### 场景一：快速设备盘点

网络管理员可以通过自然语言快速了解网络资产：

> "显示美国西部区域的所有核心路由器"

AI 会自动调用 `list_devices` 工具，结合过滤器返回符合条件的设备列表，无需记忆复杂的查询语法。

### 场景二：BGP 邻居状态检查

当网络出现异常时，可以快速诊断：

> "检查 R1 上是否有 BGP 邻居断开"

AI 会调用 `run_napalm_getter` 获取 BGP 邻居表，分析状态并返回结果。

### 场景三：批量配置备份

定期的配置备份是网络运维的最佳实践：

> "备份所有 Arista 交换机的运行配置"

AI 会自动识别 Arista 设备组，逐个执行备份操作，并将配置文件保存到指定目录。

### 场景四：接口错误排查

故障排查变得简单直观：

> "检查边缘路由器组所有接口的错误统计"

AI 会获取接口状态，重点关注错误计数器，帮助快速定位物理层或链路层问题。

## 部署与配置

### 安装方式

项目支持多种安装方式，适应不同的使用环境：

**使用 uv 工具安装（推荐）**：
```bash
uv tool install git+https://github.com/sydasif/nornir-mcp-server.git
```

**使用 pip 安装**：
```bash
pip install git+https://github.com/sydasif/nornir-mcp-server.git
```

### 最小化配置

要开始使用，需要创建三个核心配置文件：

**hosts.yaml** - 定义主机清单：
```yaml
R1:
  hostname: 192.168.1.1
  platform: ios
  groups:
    - cisco_ios
```

**groups.yaml** - 定义设备组属性：
```yaml
cisco_ios:
  platform: ios
  username: admin
  password: password
```

**config.yaml** - Nornir 主配置：
```yaml
inventory:
  plugin: SimpleInventory
  options:
    host_file: "hosts.yaml"
    group_file: "groups.yaml"
    defaults_file: "defaults.yaml"

runner:
  plugin: threaded
  options:
    num_workers: 100
```

### Claude 集成配置

在 Claude 的配置文件中添加 MCP 服务器：

```json
{
  "mcpServers": {
    "nornir": {
      "command": "nornir-mcp"
    }
  }
}
```

对于 OpenCode 用户，配置类似：

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "nornir": {
      "type": "local",
      "command": ["nornir-mcp"]
    }
  }
}
```

## 技术实现细节

### 异步执行架构

服务器采用异步架构设计，能够高效处理并发请求。在配置中可以通过 `num_workers` 参数调整线程池大小，默认支持 100 个并发任务，适合大规模网络环境。

### 每次调用重新加载

与一些长期运行的网络自动化工具不同，Nornir MCP Server 在每个 MCP 工具调用时都会重新加载配置文件和库存数据。这种设计虽然增加了少量开销，但确保了：

- 始终使用最新的网络拓扑信息
- 支持动态库存更新场景
- 避免长期运行进程的状态漂移问题

### 全面的日志记录

项目内置了完善的日志系统，记录所有操作和错误信息。日志级别可在配置中调整，从 DEBUG 到 ERROR 满足不同场景的调试需求。

## 项目生态与社区

Nornir MCP Server 基于成熟的 Python 网络自动化生态构建：

- **Nornir**：作为核心编排框架，提供并行任务执行和库存管理
- **NAPALM**：处理多厂商设备的统一接口
- **Netmiko**：提供可靠的 SSH 连接和命令执行
- **Pydantic**：确保数据验证和序列化的可靠性
- **pytest**：项目包含完整的测试套件，覆盖过滤器、库存加载、安全验证等核心功能

项目采用 MIT 许可证开源，代码托管在 GitHub 上，欢迎社区贡献。开发者可以通过 uv 工具快速搭建开发环境：

```bash
git clone https://github.com/sydasif/nornir-mcp-server.git
cd nornir-mcp-server
uv sync
uv run pytest
```

## 总结与展望

Nornir MCP Server 代表了网络自动化领域的一个重要发展方向：将大语言模型的自然语言理解能力与专业网络工具的深度功能相结合。这种融合不仅降低了网络运维的技术门槛，也为 AIOps（智能运维）在网络领域的落地提供了实践路径。

对于网络工程师而言，这意味着可以从繁琐的命令记忆和脚本编写中解放出来，将更多精力投入到网络架构设计和优化中。对于企业而言，这意味着更高的运维效率和更低的出错风险。

随着大语言模型能力的持续提升和 MCP 生态的完善，我们可以期待看到更多类似的桥接工具出现，进一步推动 IT 基础设施管理的智能化转型。
