返回 MCP 目录
public公开dns本地运行

aflpp-mcp

一个为AFL++模糊测试框架提供模型上下文协议(MCP)接口的服务器,允许通过标准化的API创建和管理模糊测试工作区、构建插桩目标、导入语料库、启动/停止模糊测试任务以及分析测试结果。

article

README

🚀 AFL++ MCP 服务器

AFL++ 的模型上下文协议(MCP)服务器。

本仓库包含一个 AFLplusplus 的检出副本(如果需要 AFL++ 可选模式子模块,请使用 git submodule update --init --recursive),并为以下操作提供了便于代理使用的 API:

  • 创建模糊测试工作区
  • 对目标进行插桩
  • 语料库导入/最小化
  • 测试 harness 预检(试运行 / 显示映射)
  • 启动/停止 AFL++ 作业
  • 轮询结构化状态并对发现的问题进行分类
  • 其他操作

📦 安装指南

构建

npm install
npm run build

在 Codex CLI 中安装

先进行构建,然后将 MCP 服务器注册到 Codex CLI 中:

codex mcp add aflpp --env AFLPP_MCP_ROOT="$PWD" -- node "$PWD/dist/index.js"

通过标准输入输出运行

node dist/index.js

环境变量

  • AFLPP_MCP_ROOT(默认值:当前工作目录)
  • AFLPP_DIR(默认值:$AFLPP_MCP_ROOT/AFLplusplus) – 必须位于 AFLPP_MCP_ROOT 内部

其他 MCP 客户端配置

Claude Desktop

添加到你的 mcpServers 配置中(调整路径):

{
  "mcpServers": {
    "aflpp": {
      "command": "node",
      "args": ["/home/kevinv/aflpp-mcp/dist/index.js"],
      "env": {
        "AFLPP_MCP_ROOT": "/home/kevinv/aflpp-mcp"
      }
    }
  }
}

💻 使用示例

MCP 提示

  • aflpp-agent-workflow:高级端到端工作流(构建 -> 语料库 -> 预检 -> 模糊测试 -> 分类)。
  • aflpp-harness-workplan:以 harness 为先的工作流(用法 -> LLVMFuzzerTestOneInput harness -> 初始语料库 -> CMPLOG/ASAN/普通构建 -> 启动命令)。

MCP 资源

  • aflpp://config:服务器配置(工作区根目录、限制、允许列表)。
  • aflpp://docs/quickstart:一些工作流说明。
  • aflpp://docs/fuzzing_in_depth:AFL++ 的 fuzzing_in_depth.md
  • aflpp://docs/cmplog:AFL++ 的 instrumentation/README.cmplog.md
  • aflpp://docs/env_variables:AFL++ 的 docs/env_variables.md
  • aflpp://workspace/{name}/tree:高级工作区树
  • aflpp://job/{job_name}/latest_status:作业的最新解析状态快照
  • aflpp://campaign/{campaign_name}/latest_status:活动的最新解析状态快照

MCP 工具

  • aflpp.list_tools:列出 AFL++ MCP 工具及其简短描述。
  • aflpp.help:获取工具的详细帮助(模式 + 描述)。
  • aflpp.version:获取 AFL++ 和服务器的版本信息。
  • aflpp.init_workspace:在 workspaces/<name> 下创建一个工作区,包含用于输入、输出、目标、日志、重现和报告的标准子目录。
  • aflpp.detect_build_system:检测项目路径可能使用的构建系统(启发式方法)。
  • aflpp.build_instrumented:使用 AFL++ 编译器包装器(以及可选的 sanitizer 配置文件 + 构建时旋钮)构建目标,并将工件存储在工作区的 targets/ 目录下。
  • aflpp.build_cmplog_variant:构建一个 CMPLOG 插桩的变体(AFL_LLVM_CMPLOG=1),并将工件存储在工作区的 targets/ 目录下。
  • aflpp.import_corpus:从文件或目录导入种子语料库到 workspaces/<ws>/in/<corpus_name>
  • aflpp.list_corpus:总结语料库目录(文件数量和总大小)。
  • aflpp.list_builtin_dictionaries:列出 AFLplusplus/dictionaries 中附带的 AFL++ 内置字典。
  • aflpp.attach_dictionary:将字典文件附加到作业名称(存储为作业配置,供 aflpp.start_fuzz 使用)。
  • aflpp.dry_run:直接针对目标运行简短的 harness 验证(不是 afl-fuzz),以检查输入模式、稳定性、超时和基本性能。
  • aflpp.showmap:对单个测试用例运行 afl-showmap 并返回跟踪摘要。
  • aflpp.coverage_summary:使用 afl-showmap -C 在 AFL++ 输出目录上测量语料库覆盖率(尽力解析)。
  • aflpp.analyze_testcase:在测试用例上运行 afl-analyze 以识别关键输入区域。
  • aflpp.preflight_checks:在启动 afl-fuzz 之前运行轻量级预检检查(核心模式、CPU 缩放、语料库非空)。
  • aflpp.start_fuzz:在工作区中启动一个 afl-fuzz 作业(非阻塞;支持常见的 afl-fuzz 旋钮 + 允许列表中的环境覆盖)。
  • aflpp.start_fuzz_cluster:启动一个多实例 afl-fuzz 活动(主实例 + 辅助实例;支持每个实例的覆盖)。
  • aflpp.stop_fuzz:通过 PID 停止正在运行的 afl-fuzz 作业(先发送 SIGTERM 信号,再发送 SIGKILL 信号)。
  • aflpp.status:通过解析 fuzzer_stats 以及队列/崩溃/挂起计数(与上次调用的差值)获取作业状态。
  • aflpp.campaign_summary:通过解析每个实例目录的 fuzzer_stats 总结多实例活动。
  • aflpp.whatsup:在 AFL++ 输出目录上运行 afl-whatsup
  • aflpp.generate_progress_plot:为作业或活动生成 AFL++ 进度图(包装 afl-plot)。
  • aflpp.list_findings:列出具有稳定 ID 和路径的崩溃和挂起发现。
  • aflpp.repro_crash:通过直接使用测试用例运行目标命令来重现发现的问题,并在 repros/ 下写入重现包。
  • aflpp.crash_report:为发现的问题编写崩溃报告(去重签名 + 重现信息 + 如果存在则包含 sanitizer 帧)。
  • aflpp.casr_report:使用 casr-afl 生成聚类崩溃报告(如果已安装)。
  • aflpp.minimize_corpus:使用 afl-cmin 最小化语料库,并将其存储为工作区中的新语料库目录。
  • aflpp.minimize_testcase:使用 afl-tmin 最小化单个测试用例,并将最小化后的测试用例存储在 repros/ 下。
  • aflpp.suggest_fuzz_cluster_mix:为 aflpp.start_fuzz_cluster 建议多核活动组合(instance_overrides)。
help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端