ez-xbow-platform-mcp
使用说明(Markdown 格式)
项目简介
- ez-xbow-platform-mcp 是一个基于 MCP 的服务器实现,提供一个可与 LLM 客户端对接的后端服务,集中管理资源、注册并执行工具、定义并渲染提示模板等功能,便于在 AI 渗透测试/CTF 场景中为模型提供稳定的上下文与外部能力。
主要功能点
- MCP 服务端实现:支持 stdio、SSE、Streamable 三种传输模式,便于在不同环境中与 LLM 客户端通信。
- 提供一组工具(Tools):list_challenges、get_challenge_hint、do_challenge、write_challenge_note、read_challenge_note、submit_answer、kail_terminal、get_terminal_history、get_ctf_skill 等,覆盖题目读取、提示获取、挑战记录、答案提交、终端执行等场景。
- 赛题本地历史与元数据:将挑战的尝试次数、进行状态、笔记等信息持久化到本地目录,支持多轮挑战和笔记清理机制。
- 远程数据源对接:通过 doJSON 实现对 XBow API 的数据读取与写入,整合远端数据与本地挑战历史。
- Mock 平台支持:可通过本地 mock 平台模拟题目、提示、答案等交互,便于本地开发与测试。
- 容器化执行能力( kail_terminal):在 Docker Kali 容器中执行命令,支持同步与后台执行,并记录执行日志。
安装与运行
- 本项目需要 Go 环境进行编译,默认提供的入口是 cmd/main.go(主函数入口)。
- 构建与运行的常用流程(示例,具体根据环境调整):
- 获取源码并进入项目根目录。
- 使用 Go 构建为可执行程序,例如 go build ./cmd。
- 运行生成的可执行文件,默认端口为 127.0.0.1:8080,传输模式默认为 streamable。
- 如需本地调试,可启用 mock 平台:
- 传入 --mock 选项,指定 mock 目录(默认 ./mock-challenges),并可通过 --mock-addr 指定本地监听地址。
- 如需对接 XBow 服务,请确保 XBow 服务地址与令牌正确(通过 --xbow-url、--xbow-token 指定)。
- 如需 Docker Kali 环境执行命令,请配置 --docker-image、--docker-container、--dockerfile-dir 等参数(需本地有 Docker 环境并允许拉取镜像和创建容器)。
服务器配置(MCP 客户端需要的启动配置,形式为 JSON,包含 server name、command、args 等) 说明:以下 JSON 是给 MCP 客户端用于连接与启动 MCP 服务器的示例配置,不代表代码实现逻辑,仅用于描述如何在客户端配置连接信息。
{ "server_name": "ez-xbow-platform-mcp", "command": "./ez-xbow-platform-mcp", "args": [ "--mode", "streamable", "--listen", "127.0.0.1:8080", "--xbow-url", "http://127.0.0.1:8000", "--xbow-token", "", "--mock", "true", "--mock-addr", "127.0.0.1:8000", "--mock-dir", "./mock-challenges", "--docker-container", "xbow-kail", "--docker-image", "xbow-kail:latest", "--dockerfile-dir", "./Dockerfile", "--docker-exec-log-dir", "./.kail-history" ] } 注释说明
- server_name:服务器标识名称,用于 MCP 客户端辨识。
- command:可执行文件的路径或名称,客户端不需要执行该字段本身,但该字段用于描述连接信息。
- args:启动参数列表,对应仓库中的命令行参数,详见代码中的 flag 配置。
基本使用方法
- MCP 客户端将通过以上配置连接到服务器,发送请求执行以下操作:
- 调用 list_challenges 获取当前阶段的题目列表与挑战信息。
- 调用 get_challenge_hint 获取指定题目的提示。
- 调用 do_challenge 标记开始解题并记录尝试信息。
- 调用 write_challenge_note 与 read_challenge_note 记录和获取笔记。
- 调用 submit_answer 提交答案并获取正确性及得分。
- 调用 kail_terminal 在 Kali 容器中执行命令并获取输出与状态。
- 调用 get_terminal_history 查询历史执行结果。
- 调用 get_ctf_skill 获取对应技能文档。
- 使用流程示例(简要)
- 启动 MCP 服务端(按上述安装步骤构建并运行)。
- 在 MCP 客户端中使用上述 JSON 配置连接到服务器。
- 通过 MCP 客户端按照需要选择工具并传入相应参数调用。
- 如需本地测试,可先启动 Mock 平台,然后再将 XBow 相关接口对接到 mock 的地址。
注意事项
- 服务器端需具备对 Docker 的访问能力(如 kail_terminal 功能所需),并在某些环境下需要 Docker 权限或特权配置。
- 本仓库提供的 mock 平台与本地历史记录机制均为示例实现,实际生产环境需结合安全策略完善鉴权和数据保护。
关键词 模型上下文, LLM 集成, CTF 挑战平台, Docker Kali, AI 辅助
分类ID 6