ez-xbow-platform-mcp

项目简介

  • 该仓库实现了一个基于 MCP 的服务器端,面向 LLM 客户端提供挑战赛的上下文服务,包括获取挑战、查看提示、提交答案、记录挑战历史,以及在本地容器中执行命令等能力。服务器通过 JSON-RPC/HTTP 风格的接口与客户端通信,支持多种传输模式。

主要功能点

  • MCP 服务端实现:注册并暴露多种工具,供 LLM 客户端通过统一协议调用。
  • 资源与挑战管理:从远端 API 拉取挑战列表、提示、提交答案等,结合本地历史记录保持状态。
  • 本地历史与笔记:对挑战的尝试、笔记、历史记录进行本地持久化,便于复用与追踪。
  • 容器化执行能力:在持久化 Kali 容器中执行命令并返回输出、退出码及耗时,支持前后台执行。
  • 数据持久化与日志:记录执行历史、挑战元数据、笔记等,方便审计。
  • 模板技能文档:通过内嵌的技能文档(ctf-skills)提供技能资料查询。
  • Mock 平台支持(可选):可从本地 JSON 文件启动模拟挑战环境,便于本地开发与测试。
  • 传输协议支持:在运行时可切换 Stdio、SSE、Streamable 等 MCP 传输模式。

安装与运行

  • 需要 Go 语言环境(Golang)来编译运行。
  • 使用示例(简要描述,具体执行请按实际环境配置):
    1. 获取代码并安装依赖。
    2. 构建可执行二进制。
    3. 以默认配置启动 MCP 服务器,或使用自定义参数启动。
    4. 客户端通过配置指向该 MCP 服务器进行交互。
  • 运行前提与依赖已在代码中实现,包括对 Kali 容器的管理、Docker 操作等。

服务器配置(供 MCP 客户端使用的启动配置示例) { "server_name": "ez-xbow-platform-mcp", "command": "/path/to/ez-xbow-platform-mcp", "args": [ "--mode", "streamable", "--listen", "127.0.0.1:8080", "--xbow-url", "http://127.0.0.1:8000", "--xbow-token", "YOUR_XBOW_TOKEN", "--docker-container", "xbow-kail", "--docker-image", "xbow-kail:latest", "--dockerfile-dir", "./Dockerfile", "--docker-exec-log-dir", "./.kail-history", "--mock", "false", "--mock-addr", "127.0.0.1:8000", "--mock-dir", "./mock-challenges" ] }

  • 说明
    • server_name: 给 MCP 客户端显示的服务器名称,便于区分与管理。
    • command: 启动 MCP 服务器的可执行文件路径。
    • args: 上述命令行参数及取值,客户端仅需理解服务器端的启动信息并在需要时提供给相应的运行环境。
  • 注释(若需要说明,可在配置旁边的注释区说明各字段含义与取值范围,便于自动化生成客户端配置。)

基本使用方法

  • 启动服务器后,LLM 客户端通过 MCP 协议与服务器交互,调用诸如 list_challenges、get_challenge_hint、do_challenge、write_challenge_note、read_challenge_note、submit_answer、kail_terminal、get_terminal_history、get_ctf_skill 等工具来完成挑战任务。
  • 支持的传输模式(stdio、sse、streamable)可在启动参数中指定,确保与不同类型的 LLM 客户端适配。
  • 服务器会对挑战和笔记等进行本地持久化,便于跨会话跟踪与复用。

关键词 对话上下文, 工具执行, 容器化执行, API 集成, 数据持久化

分类ID 6

服务器信息