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(主函数入口)。
  • 构建与运行的常用流程(示例,具体根据环境调整):
    1. 获取源码并进入项目根目录。
    2. 使用 Go 构建为可执行程序,例如 go build ./cmd。
    3. 运行生成的可执行文件,默认端口为 127.0.0.1:8080,传输模式默认为 streamable。
    4. 如需本地调试,可启用 mock 平台:
      • 传入 --mock 选项,指定 mock 目录(默认 ./mock-challenges),并可通过 --mock-addr 指定本地监听地址。
    5. 如需对接 XBow 服务,请确保 XBow 服务地址与令牌正确(通过 --xbow-url、--xbow-token 指定)。
    6. 如需 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 获取对应技能文档。
  • 使用流程示例(简要)
    1. 启动 MCP 服务端(按上述安装步骤构建并运行)。
    2. 在 MCP 客户端中使用上述 JSON 配置连接到服务器。
    3. 通过 MCP 客户端按照需要选择工具并传入相应参数调用。
    4. 如需本地测试,可先启动 Mock 平台,然后再将 XBow 相关接口对接到 mock 的地址。

注意事项

  • 服务器端需具备对 Docker 的访问能力(如 kail_terminal 功能所需),并在某些环境下需要 Docker 权限或特权配置。
  • 本仓库提供的 mock 平台与本地历史记录机制均为示例实现,实际生产环境需结合安全策略完善鉴权和数据保护。

关键词 模型上下文, LLM 集成, CTF 挑战平台, Docker Kali, AI 辅助

分类ID 6

服务器信息