使用说明
项目简介
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配置备忘录添加网络洞察,用于记录网络观察或分析结果。
- Datapath Management Tools:
安装步骤
- 克隆仓库: 从GitHub克隆 'pox-mcp-server' 仓库到本地。
git clone https://github.com/davidlin2k/pox-mcp-server.git cd pox-mcp-server - 安装依赖 (可选): 虽然文档中没有明确提及 requirements.txt,但通常Python项目需要安装依赖。如果项目根目录下有 'requirements.txt' 文件,请运行以下命令安装依赖。如果使用 'uv run',依赖管理可能由 'uv' 工具自动处理。
# 如果有 requirements.txt pip install -r requirements.txt # 或者使用 uv (如果适用) # uv pip install -r requirements.txt - 启动POX控制器 (先决条件): POX MCP服务器依赖于POX SDN控制器。您需要先安装并运行POX控制器,并确保POX控制器可以通过HTTP接口访问。具体的POX控制器安装和启动方法请参考POX官方文档。通常POX控制器默认运行在 'http://localhost:8000'。
- 启动MCP服务器: 进入 'src/mcp_server_pox' 目录,使用 'uv' 或 'python' 命令运行 'server.py' 脚本。
注意: 启动命令和参数可能需要根据您的实际环境和 'uv' 工具的配置进行调整。请参考仓库 'README.md' 中关于 "Usage with Claude Desktop" 的 'uv' 配置示例。cd src/mcp_server_pox # 使用 uv 启动 (推荐,根据 README 配置) uv run server.py # 或者直接使用 python 启动 (确保安装了 mcp-server-fastapi 等相关库,如果需要) # python server.py
服务器配置 (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控制器的地址进行配置。
基本使用方法
- 启动 MCP 客户端: 启动配置了 POX MCP服务器信息的 MCP 客户端应用(例如 Claude Desktop)。
- 连接到 POX MCP服务器: 在客户端中选择或连接到名为 "pox" (或您在配置中指定的名称) 的 MCP服务器。
- 探索资源、Prompt 和工具: 连接成功后,您可以在客户端中浏览和使用 POX MCP服务器提供的资源 (例如 'pox://network-config', 'pox://topology')、Prompt 模板 (例如 'pox-network-manager', 'simple-hub', 'learning-switch') 和工具 (例如 'get_switches', 'set_table')。
- 通过 Prompt 与 LLM 交互: 使用 Prompt 模板,结合 LLM 的自然语言处理能力,以对话的方式管理和配置 SDN 网络。例如,可以使用 'pox-network-manager' Prompt 询问关于网络拓扑、流规则配置等方面的问题,并指示 LLM 调用相应的工具来执行网络操作。
信息
分类
开发者工具