🌐 Nornir MCP Server

🌐 Nornir MCP Server

site icon
2025.05.02 0
Python网络自动化并发处理开发效率其它
Nornir MCP Server 是一个基于 FastMCP 的服务,利用 Nornir 和 NAPALM 提供网络自动化工具。它作为桥梁,将 Nornir/NAPALM 的网络操作暴露为 MCP(大规模并发处理)工具,使其易于从兼容的 MCP 客户端(如 FastMCP Web UI)访问。
View on GitHub

Overview

✨ 核心功能

  • 利用 Nornir 进行库存管理和对网络设备的并发任务执行。
  • 使用 NAPALM 进行多厂商设备交互(信息收集、命令执行)。
  • 使用 FastMCP 构建,与使用各种传输(在此配置中为 SSE)的 MCP 客户端无缝集成。
  • 使用 Docker 容器化,便于设置和部署。
  • 使用 uv 在容器内快速管理 Python 依赖。

🔧 使用依赖

在开始之前,请确保已安装以下内容:

⚙️ 安装教程

  1. 导航到项目中的 conf/ 目录。
  2. 编辑 hosts.yaml:定义您的网络设备。指定其管理 IP/主机名、平台(例如 iosjunoseos)、凭据(如果不使用默认值),并根据需要将它们分配到组中。
  3. 编辑 groups.yaml:定义具有共享属性(如平台或连接选项)的设备组。此处的设置可以覆盖默认值。
  4. 编辑 defaults.yaml:设置默认凭据(usernamepassword)和连接选项(如 NAPALM secret 用于启用密码或默认 platform)。
  5. 查看 config.yaml:确保库存文件路径(host_filegroup_filedefaults_file)正确指向 conf/ 目录中的文件(默认情况下应该如此)。如果需要,调整运行器选项(num_workers)。

▶️ 运行服务器

配置完成后,您可以使用 Docker Compose 轻松运行服务器:

  1. 确保已按照上述说明配置了 conf/ 目录。
  2. 在项目的根目录(与 Dockerfiledocker-compose.yml 文件相同的目录)中打开终端或命令提示符。
  3. 运行以下命令: bash docker-compose up --build -d
  4. 服务器日志将显示在您的终端中。默认情况下,它应该可以在主机机器(localhost)的端口 8000 上访问。
  5. 要停止服务器,请在运行 docker-compose 的终端中按 Ctrl+C。要随后删除容器,请运行 docker-compose down

🔌 添加到 MCP 客户端

要在 MCP 客户端(如官方的 FastMCP Web UI 或其他兼容客户端)中使用此服务器提供的工具:

  1. 确保 Nornir MCP 服务器正在运行(使用 docker-compose up)。
  2. 打开您的 MCP 客户端应用程序。
  3. 找到添加或管理 MCP 服务器连接的选项。
  4. 添加一个新连接,详细信息如下:
    • 服务器 URL:由于此服务器使用 SSE(服务器发送事件)传输,默认情况下在端口 8000 上运行,URL 将为:
      • sse://localhost:8000
    • 连接名称:为其指定一个描述性名称,例如 Nornir Lab Server
  5. 保存并连接到新添加的服务器。
  6. MCP 客户端应发现 Nornir_MCP 服务并列出所有可用工具(如 get_factssend_command 等)。您现在可以通过客户端界面使用这些工具!

🛠️ 可用工具和资源

通过 MCP 客户端连接后,以下工具(在 "Nornir_MCP" 服务名称下)通常可用:

  • 库存:
    • list_all_hosts:列出您的 Nornir 库存(conf/hosts.yaml)中配置的设备。
  • NAPALM Getters:(检索信息)
    • get_facts
    • get_interfaces
    • get_interfaces_ip
    • get_interfaces_counters
    • get_config(带有 retrieve 选项:running、startup、candidate)
    • get_arp_table
    • get_mac_address_table
    • get_users
    • get_vlans
    • get_snmp_information
    • get_bgp_neighbors
  • 执行:
    • send_command:向设备发送单个只读命令并获取输出。
  • 流资源:
    • sse://updates:提供一个简单的心跳事件流。(可以订阅支持 SSE 资源的客户端)。

许可证

该项目遵循 MIT 开源许可条款,请参阅 MIT 了解完整条款。