使用说明

项目简介

POX MCP服务器是一个基于Model Context Protocol (MCP) 构建的应用后端,专门为Software-Defined Networking (SDN) 环境设计。它利用POX SDN控制器作为底层网络管理平台,通过MCP协议向LLM客户端提供网络上下文信息和控制能力。该服务器允许用户通过LLM应用以自然语言的方式查询网络状态、配置网络设备和自动化网络任务。

主要功能点

  • 资源 (Resources):
    • pox://network-config: 提供POX控制器配置备忘录,包含当前激活的POX组件、网络拓扑结构、流规则以及网络分析洞察。
    • pox://topology: 实时网络拓扑视图,展示活动的OpenFlow数据路径(交换机)、主机位置、连接状态、链路状态和端口映射。
  • Prompt 模板 (Prompts):
    • pox-network-manager: 交互式Prompt,用于POX控制器管理。允许用户通过指定主题与LLM进行对话,配置POX组件、实施网络策略和集成网络配置备忘录。
    • simple-hub: 配置交换机为简单L2 Hub的Prompt。用户只需提供交换机的DPID,即可引导LLM配置POX实现基本Hub功能。
    • learning-switch: 配置交换机为学习型L2交换机的Prompt。用户提供DPID后,LLM将引导配置POX实现MAC地址学习和转发功能。
  • 工具 (Tools):
    • Datapath Management Tools:
      • 'get_switches': 列出所有连接的OpenFlow数据路径(交换机),返回交换机的连接状态和能力信息。
      • 'get_switch_desc': 获取指定DPID交换机的详细信息,包括POX管理的交换机详情和特性。
    • Flow Management Tools:
      • 'get_flow_stats': 检索POX流统计信息,可以根据DPID、匹配条件、表ID和输出端口进行过滤。
      • 'set_table': 配置POX流表,允许用户通过提供流规范来更新指定交换机的流表。
    • Analysis Tools:
      • 'append_insight': 向POX配置备忘录添加网络洞察,用于记录网络观察或分析结果。

安装步骤

  1. 克隆仓库: 从GitHub克隆 'pox-mcp-server' 仓库到本地。
    git clone https://github.com/davidlin2k/pox-mcp-server.git
    cd pox-mcp-server
  2. 安装依赖 (可选): 虽然文档中没有明确提及 requirements.txt,但通常Python项目需要安装依赖。如果项目根目录下有 'requirements.txt' 文件,请运行以下命令安装依赖。如果使用 'uv run',依赖管理可能由 'uv' 工具自动处理。
    # 如果有 requirements.txt
    pip install -r requirements.txt
    # 或者使用 uv (如果适用)
    # uv pip install -r requirements.txt
  3. 启动POX控制器 (先决条件): POX MCP服务器依赖于POX SDN控制器。您需要先安装并运行POX控制器,并确保POX控制器可以通过HTTP接口访问。具体的POX控制器安装和启动方法请参考POX官方文档。通常POX控制器默认运行在 'http://localhost:8000'。
  4. 启动MCP服务器: 进入 'src/mcp_server_pox' 目录,使用 'uv' 或 'python' 命令运行 'server.py' 脚本。
    cd src/mcp_server_pox
    # 使用 uv 启动 (推荐,根据 README 配置)
    uv run server.py
    # 或者直接使用 python 启动 (确保安装了 mcp-server-fastapi 等相关库,如果需要)
    # python server.py
    注意: 启动命令和参数可能需要根据您的实际环境和 'uv' 工具的配置进行调整。请参考仓库 'README.md' 中关于 "Usage with Claude Desktop" 的 'uv' 配置示例。

服务器配置 (MCP客户端配置)

为了让MCP客户端(例如 Claude Desktop)连接到 POX MCP服务器,您需要在客户端的配置文件中添加服务器信息。以下是一个 JSON 格式的配置示例,可以直接复制粘贴到 MCP 客户端的配置文件中。

{
  "mcpServers": {
    "pox": {
      "command": "uv",  // 启动服务器的命令,这里使用 uv
      "args": [
        "--directory",
        "parent_of_servers_repo/servers/src/mcp_server_pox", // MCP服务器代码所在的目录,需要根据实际路径调整
        "run",
        "server.py" // 运行服务器的脚本
      ],
      "env": {
        "POX_SERVER_URL": "http://localhost:8000" // POX控制器的URL,确保与您运行的POX控制器地址一致
      }
    }
  }
}

配置参数说明:

  • '"pox"': 服务器名称,可以自定义,用于在客户端中标识该服务器。
  • '"command"': 启动服务器的命令,通常是 'uv' 或 'python'。
  • '"args"': 传递给启动命令的参数列表。
    • '"--directory"': 指定服务器代码所在的目录,需要根据您本地仓库的实际路径进行修改。'parent_of_servers_repo/servers/src/mcp_server_pox' 只是一个示例路径,您需要替换为正确的路径。
    • '"run server.py"': 指示 'uv' 运行 'server.py' 脚本。
  • '"env"': 环境变量配置。
    • '"POX_SERVER_URL"': 非常重要,指定POX控制器的HTTP API地址。请确保此地址与您实际运行的POX控制器地址一致。如果POX控制器运行在不同的主机或端口,请修改此值。

请注意: '"parent_of_servers_repo/servers/src/mcp_server_pox"' 这个路径是示例,您需要将其替换为 MCP服务器代码在您本地文件系统中的绝对路径或相对路径,确保客户端能够正确找到并启动服务器。 并且 'POX_SERVER_URL' 环境变量也需要根据实际POX控制器的地址进行配置。

基本使用方法

  1. 启动 MCP 客户端: 启动配置了 POX MCP服务器信息的 MCP 客户端应用(例如 Claude Desktop)。
  2. 连接到 POX MCP服务器: 在客户端中选择或连接到名为 "pox" (或您在配置中指定的名称) 的 MCP服务器。
  3. 探索资源、Prompt 和工具: 连接成功后,您可以在客户端中浏览和使用 POX MCP服务器提供的资源 (例如 'pox://network-config', 'pox://topology')、Prompt 模板 (例如 'pox-network-manager', 'simple-hub', 'learning-switch') 和工具 (例如 'get_switches', 'set_table')。
  4. 通过 Prompt 与 LLM 交互: 使用 Prompt 模板,结合 LLM 的自然语言处理能力,以对话的方式管理和配置 SDN 网络。例如,可以使用 'pox-network-manager' Prompt 询问关于网络拓扑、流规则配置等方面的问题,并指示 LLM 调用相应的工具来执行网络操作。

信息

分类

开发者工具