项目简介

NetBox MCP 服务器是一个基于 Model Context Protocol (MCP) 的应用后端,旨在让大语言模型(LLM)客户端(如 Claude Desktop)能够直接与您的 NetBox 实例交互。它将 NetBox 中庞杂的网络设备、IP 地址管理、站点、机架、虚拟化等数据以结构化的工具和可定制的 Prompt 形式暴露给 LLM,从而实现通过自然语言查询和管理 NetBox 数据的能力。

主要功能点

  • NetBox 数据查询: 支持通过自然语言查询 NetBox 中的各种资源,包括设备、站点、IP 地址、VLAN、线路、机架、虚拟机等。
  • 工具调用: LLM 可以调用服务器提供的近百种工具,执行特定操作或获取详细信息,例如“搜索设备”、“获取站点详情”、“查找可用 IP”等。
  • Prompt 模板: 定义了多种预设的 Prompt 模板,用于引导 LLM 进行特定场景的交互,例如“设备概览”、“站点总结”、“IP 管理”等,简化了复杂的查询流程。
  • 标准化协议: 通过 JSON-RPC 协议与 LLM 客户端通信,确保了数据交互的标准化和互操作性。
  • Streamable HTTP 传输: 支持基于 HTTP 的事件流(SSE)传输协议,适用于 LLM 客户端的上下文服务。
  • 会话管理: 服务器支持会话管理,为每个客户端会话提供独立的上下文。

安装步骤

  1. 安装 Python 环境: 确保您的系统安装了 Python 3.8 或更高版本。

  2. 克隆仓库: 从 GitHub 克隆 'netbox-mcp' 仓库到本地。

    git clone https://github.com/simonpainter/netbox-mcp.git
    cd netbox-mcp
  3. 创建并激活虚拟环境(推荐):

    python3 -m venv venv
    source venv/bin/activate
  4. 安装依赖:

    pip install -r requirements.txt

    (请注意,'requirements.txt' 文件在仓库中通常包含 'Flask', 'httpx', 'flask-cors' 等核心依赖。)

  5. 配置环境变量: 您需要设置以下环境变量,以便服务器能够连接到您的 NetBox 实例。请将示例值替换为您的实际配置:

    • 'NETBOX_URL': 您的 NetBox 实例的完整 URL(例如 'https://netbox.your-company.com')。
    • 'NETBOX_TOKEN': 一个具有足够权限访问 NetBox API 的令牌。
    • 'PORT' (可选): 服务器监听的端口,默认为 '8080'。

    在 Linux/macOS 上:

    export NETBOX_URL="https://netbox.example.com"
    export NETBOX_TOKEN="your_netbox_api_token"
    # export PORT="8080" # 默认端口8080,如需修改请设置

    在 Windows 上(PowerShell):

    $env:NETBOX_URL="https://netbox.example.com"
    $env:NETBOX_TOKEN="your_netbox_api_token"
    # $env:PORT="8080"

    请务必替换为您的实际 NetBox URL 和 API 令牌。

  6. 运行服务器:

    python app.py

    服务器启动后,您将在控制台看到类似 'Starting NetBox MCP Server with Streamable HTTP transport on port 8080' 的信息。

服务器配置 (供 MCP 客户端使用)

MCP 客户端需要配置服务器的启动命令和参数以建立连接。以下是 JSON 格式的示例配置,您可以根据实际情况修改:

{
  "name": "NetBox MCP Server",
  "command": "python",
  "args": ["/path/to/your/netbox-mcp/app.py"],
  "env": {
    "NETBOX_URL": "https://netbox.example.com",
    "NETBOX_TOKEN": "your_netbox_api_token",
    "PORT": "8080"
  },
  "description": "连接到您的NetBox实例,通过MCP协议提供网络基础设施的AI查询和管理能力。",
  "transport": "streamable-http",
  "url": "http://localhost:8080/api/mcp"
}

配置参数说明:

  • 'name': 服务器在客户端界面显示的名称,可自定义。
  • 'command': 启动 MCP 服务器的可执行文件,通常是 'python'。
  • 'args': 传递给 'command' 的参数,这里是 'app.py' 脚本的路径。请将 '/path/to/your/netbox-mcp/' 替换为 'app.py' 文件在您的服务器上的实际路径。
  • 'env': 环境变量,用于配置 NetBox 服务的连接信息。请将 'NETBOX_URL' 和 'NETBOX_TOKEN' 替换为您的实际值。'PORT' 应与您启动 Flask 应用时设置的端口一致。
  • 'description': 服务器的简要描述。
  • 'transport': 传输协议类型,此实现为 'streamable-http'。
  • 'url': MCP 服务器的端点 URL。如果 'PORT' 为 '8080',则为 'http://localhost:8080/api/mcp'。

基本使用方法

一旦服务器启动并在您的 MCP 客户端中配置好,您就可以在客户端中通过自然语言向其提问,例如:

  • "What devices do you see in NetBox?" (NetBox 中有哪些设备?)
  • "Search for devices at the Skipton site" (搜索 Skipton 站点的设备)
  • "Show me all Cisco devices" (显示所有 Cisco 设备)
  • "Find devices with 'router' in the name" (查找名称中包含 'router' 的设备)
  • "Get details for device ID 123" (获取 ID 为 123 的设备详情)
  • "List all sites" (列出所有站点)
  • "Show me available IP addresses in prefix 192.168.1.0/24" (显示 192.168.1.0/24 网段中可用的 IP 地址)

服务器将通过 MCP 协议解析您的请求,调用 NetBox API 获取数据,并将结果返回给 LLM 客户端,最终以易于理解的方式呈现给您。

信息

分类

AI与计算