SuzieQ 网络观测 MCP 服务器

项目简介

本项目是一个基于 Model Context Protocol (MCP) 构建的服务器,它充当 LLM (大型语言模型) 客户端与 SuzieQ 网络观测平台之间的桥梁。通过此服务器,LLM 客户端可以利用 SuzieQ 强大的网络数据收集和分析能力,以自然语言的方式查询和理解网络状态。

主要功能点

  • 网络状态查询: 提供 'run_suzieq_show' 工具,允许 LLM 客户端查询 SuzieQ 中详细的网络状态表,例如设备、接口、BGP、路由等。
  • 网络状态摘要: 提供 'run_suzieq_summarize' 工具,允许 LLM 客户端获取 SuzieQ 中网络状态的聚合统计和摘要信息。
  • 标准化接口: 遵循 MCP 协议,通过 JSON-RPC 与客户端通信,提供标准化的工具调用方式。
  • 易于集成: 可以通过 Smithery 或手动方式安装,并提供详细的 Claude Desktop 集成指南。
  • 安全配置: 使用 '.env' 文件管理 SuzieQ API 密钥等敏感信息,提高安全性。

安装步骤

  1. 环境准备: 确保已安装 Python 3.8+ 和 uv (一个快速的 Python 包管理器)。
  2. 获取代码: 下载或克隆仓库代码到本地。
  3. 创建虚拟环境: 在项目目录下使用 'uv venv' 创建 Python 虚拟环境。
  4. 激活虚拟环境:
    • macOS/Linux: 'source .venv/bin/activate'
    • Windows: '.venv\Scripts\activate'
  5. 安装依赖: 在虚拟环境中运行 'uv pip install mcp httpx python-dotenv' 安装所需的 Python 包。
  6. 配置 SuzieQ API:
    • 在项目根目录下创建 '.env' 文件。
    • 在 '.env' 文件中添加 SuzieQ API 端点 ('SUZIEQ_API_ENDPOINT') 和 API 密钥 ('SUZIEQ_API_KEY'),例如:
      SUZIEQ_API_ENDPOINT=http://your-suzieq-host:8000/api/v2
      SUZIEQ_API_KEY=your_actual_api_key
    • 将 '.env' 文件添加到 '.gitignore',防止泄露密钥。

服务器配置

要将此 MCP 服务器配置到 MCP 客户端(例如 Claude Desktop),您需要提供服务器的启动命令和参数。以下是配置 Claude Desktop 的 'claude_desktop_config.json' 文件的示例配置信息:

{
  "mcpServers": {
    "suzieq-server": {
      "command": "uv",
      "args": [
        "run",
        "python",
        "/full/path/to/your/project/mcp-suzieq-server/main.py"  // 替换为 main.py 文件的绝对路径
      ],
      "workingDirectory": "/full/path/to/your/project/mcp-suzieq-server/" // 替换为项目根目录的绝对路径
    }
  }
}

配置参数说明:

  • '"server name"': 'suzieq-server' (可以自定义服务器名称)
  • '"command"': 'uv' (启动命令,假设 uv 可执行文件在系统 PATH 中,否则需要使用 uv 的绝对路径)
  • '"args"': 启动参数,包括 'run'、'python' 和 'main.py' 脚本的绝对路径
  • '"workingDirectory"': 项目根目录的绝对路径,用于确保服务器能正确加载 '.env' 配置文件。

请将上述 JSON 配置添加到您的 'claude_desktop_config.json' 文件中,并根据您的实际项目路径替换 '"args"' 和 '"workingDirectory"' 中的占位符路径。

基本使用方法

  1. 启动服务器: 在项目目录下,激活虚拟环境后运行 'uv run python main.py' 启动 MCP 服务器。
  2. 客户端连接: 配置 MCP 客户端连接到该服务器。对于 Claude Desktop,按照上述服务器配置进行配置并重启 Claude Desktop。
  3. 调用工具: 在 MCP 客户端中,您应该能看到 'run_suzieq_show' 和 'run_suzieq_summarize' 两个工具。
  4. 使用 'run_suzieq_show' 工具:
    • 'table' 参数 (必填): 指定要查询的 SuzieQ 表名,例如 '"device"', '"interface"', '"bgp"', '"route"' 等。
    • 'filters' 参数 (可选): 使用 JSON 字典格式指定过滤器,例如 '{"hostname": "leaf01", "vrf": "default"}'。留空或使用 '{}' 表示无过滤器。
  5. 使用 'run_suzieq_summarize' 工具:
    • 'table' 参数 (必填): 指定要摘要的 SuzieQ 表名,例如 '"device"', '"interface"', '"bgp"', '"route"' 等。
    • 'filters' 参数 (可选): 使用 JSON 字典格式指定过滤器,例如 '{"hostname": "leaf01"}'。留空或使用 '{}' 表示无过滤器。

示例:使用 'run_suzieq_show' 工具查询设备信息

在 MCP 客户端中,选择 'run_suzieq_show' 工具,并填写参数:

{
  "table": "device"
}

服务器将返回 JSON 格式的设备信息。

示例:使用 'run_suzieq_summarize' 工具摘要 BGP 会话

在 MCP 客户端中,选择 'run_suzieq_summarize' 工具,并填写参数:

{
  "table": "bgp",
  "filters": { "hostname": "spine01" }
}

服务器将返回 JSON 格式的 BGP 会话摘要信息,针对主机名为 'spine01' 的设备。

通过以上步骤,您可以成功安装、配置和使用 SuzieQ 网络观测 MCP 服务器,从而在 LLM 客户端中实现对 SuzieQ 网络数据的访问和分析。

信息

分类

开发者工具