使用说明

项目简介

Netmiko MCP 服务器是一个基于 Model Context Protocol (MCP) 构建的应用后端,旨在使大型语言模型 (LLM) 能够通过 SSH 协议和 Netmiko 库与网络设备进行交互。它提供了一组工具,允许 LLM 执行如设备信息查询、命令发送和配置更改等网络管理任务,从而实现网络设备的自动化管理。

主要功能点

  • 列出设备 (list_devices): 允许 LLM 获取配置文件中定义的网络设备列表,包括设备名称和类型,以便 LLM 了解可以操作的网络设备。
  • 发送命令并获取输出 (send_command_and_get_output): 允许 LLM 向指定的网络设备发送命令,并返回命令执行的详细输出结果,使 LLM 能够获取设备运行状态和信息。
  • 配置命令并提交/保存 (set_config_commands_and_commit_or_save): 允许 LLM 向网络设备发送配置命令,并自动执行配置的提交或保存操作,从而实现网络设备的自动化配置更改。

安装步骤

  1. 克隆仓库到本地

    git clone https://github.com/upa/mcp-netmiko-server
    cd mcp-netmiko-server
  2. 创建设备配置文件 复制 'test/sample.toml' 文件并重命名为 'my-devices.toml',然后根据您的网络环境修改 'my-devices.toml' 文件,配置需要管理的网络设备信息。配置文件格式如下,您可以参考 sample.toml 文件:

    [default]
    username = "默认用户名"
    password = "默认密码"
    
    [设备名称1]
    hostname = "设备1主机名或IP地址"
    device_type = "设备1类型 (例如: juniper_junos, cisco_nxos)"
    
    [设备名称2]
    hostname = "设备2主机名或IP地址"
    device_type = "设备2类型"
    username = "设备2用户名 (如果与默认用户名不同)"
    password = "设备2密码 (如果与默认密码不同)"

    '[default]' 部分定义了默认的用户名和密码,设备配置部分可以继承这些默认值。'device_type' 的可选值请参考 netmiko Supported Platforms

  3. 运行 MCP 服务器

    • 标准输入/输出模式 (stdio): 这是默认的运行模式,通过标准输入和输出与 MCP 客户端通信。
      uv run --with mcp[cli] --with netmiko main.py my-devices.toml
    • SSE 服务器模式: 以 SSE (Server-Sent Events) 服务器模式运行,通过 HTTP SSE 与 MCP 客户端通信。服务器 URL 为 'http://localhost:10000/sse'。
      uv run --with mcp[cli] --with netmiko main.py my-devices.toml --sse

服务器配置

MCP 客户端需要配置 MCP 服务器的连接信息才能正常使用。以下是 Claude 桌面客户端的 MCP 服务器配置示例,您需要根据您的实际情况进行修改:

{
  "mcpServers": {
    "netmiko server": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "mcp[cli]",
        "--with",
        "netmiko",
        "[仓库路径]/mcp-netmiko-server/main.py",
        "[设备配置文件路径]/my-devices.toml"
      ]
    }
  }
}

配置参数说明:

  • '"netmiko server"': 服务器名称,您可以自定义。
  • '"command": "uv"': 启动服务器的命令,这里使用 'uv' 运行器。
  • '"args"': 启动参数列表,包括:
    • '"run"': 'uv' 运行器的子命令。
    • '"--with"': 'uv' 运行器的参数,用于加载依赖。
    • '"mcp[cli]"': 加载 'mcp' 库的命令行接口组件。
    • '"--with"': 'uv' 运行器的参数,用于加载依赖。
    • '"netmiko"': 加载 'netmiko' 库。
    • '"[仓库路径]/mcp-netmiko-server/main.py"': 请替换为 'main.py' 文件在您本地文件系统中的绝对路径
    • '"[设备配置文件路径]/my-devices.toml"': 请替换为您创建的设备配置文件 'my-devices.toml' 的绝对路径

请务必将 '[仓库路径]' 和 '[设备配置文件路径]' 替换为实际的本地路径。

基本使用方法

配置完成后,在 MCP 客户端中选择 "netmiko server" (或您自定义的服务器名称),即可连接到 Netmiko MCP 服务器。LLM 可以通过自然语言指令调用服务器提供的工具,例如:

  • "使用 'list_devices' 工具列出所有网络设备"
  • "使用 'send_command_and_get_output' 工具,在设备 'qfx1' 上执行命令 'show version'"
  • "使用 'set_config_commands_and_commit_or_save' 工具,在设备 'nexus1' 上配置 VLAN 10"

LLM 将根据工具描述和参数要求,自动构建 MCP 请求并发送给服务器,服务器执行相应的网络操作后,将结果返回给 LLM。

信息

分类

桌面与硬件