项目简介
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 客户端的上下文服务。
- 会话管理: 服务器支持会话管理,为每个客户端会话提供独立的上下文。
安装步骤
-
安装 Python 环境: 确保您的系统安装了 Python 3.8 或更高版本。
-
克隆仓库: 从 GitHub 克隆 'netbox-mcp' 仓库到本地。
git clone https://github.com/simonpainter/netbox-mcp.git cd netbox-mcp -
创建并激活虚拟环境(推荐):
python3 -m venv venv source venv/bin/activate -
安装依赖:
pip install -r requirements.txt(请注意,'requirements.txt' 文件在仓库中通常包含 'Flask', 'httpx', 'flask-cors' 等核心依赖。)
-
配置环境变量: 您需要设置以下环境变量,以便服务器能够连接到您的 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 令牌。
-
运行服务器:
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与计算