1. 为什么要在 OpenCode 里操控 Burp Suite
Burp Suite 是 Web 安全测试里绕不开的工具,Proxy 抓包、Repeater 重放、Intruder 爆破这些操作大家都很熟。但实际做接口审计的时候,我经常遇到一个尴尬场景:Burp 的 HTTP history 里躺着几百条请求,我想让 AI 帮我快速筛出所有/api/开头的端点、看看哪些响应里带了 JWT、哪些 JS 文件里硬编码了内网地址,结果只能手动一条条翻,或者导出成文件再丢给 AI,来回折腾。
Burp Suite MCP Server 扩展解决的正是这个问题。它把 Burp 的 Proxy history、请求发送、Repeater 创建、编码解码等能力封装成 MCP 工具,OpenCode 作为支持 MCP 协议的客户端,通过mcp-proxy.jar桥接到 Burp 的 SSE 端点,就能用自然语言直接操控 Burp。适合谁?做 API 安全审计、JS 敏感信息排查、日常渗透测试的同学,尤其是已经在用 OpenCode 写代码、想顺手把安全测试也接进同一个工作流的人。
这篇不讲概念,直接给可复制的配置骨架和逐步验证动作。从 Java 环境准备、mcp-proxy.jar 放置、Burp MCP Server 扩展加载,到 OpenCode 侧opencode.json配置接入,最后跑一次请求拦截与重放验证,确认链路真正打通。踩过的坑我也会在排障章节里标出来。
2. 前置准备:Java、mcp-proxy.jar 与 Burp 扩展
2.1 环境要求对照
先把版本对齐,版本不对后面全是玄学问题。
| 组件 | 版本要求 | 说明 |
|---|---|---|
| Burp Suite | Professional / Community 2024+ | 扩展依赖新版 API |
| Java | JRE 17+ | 运行 mcp-proxy.jar |
| OpenCode | 已安装可正常运行 | 支持 MCP 配置 |
| 网络 | 本机回环 127.0.0.1 | 无需外网 |
| mcp-proxy.jar | 本地文件 | 桥接 Burp SSE 端点 |
Java 版本用一条命令确认:
java --version输出里看到17.x或更高就行。低于 17 的话 mcp-proxy.jar 启动会直接报UnsupportedClassVersionError,这个报错很典型,看到就知道是 Java 版本问题。
2.2 mcp-proxy.jar 放哪
mcp-proxy.jar 是 MCP Server 的服务器代理包,负责把 OpenCode 的 stdio 通信转成 Burp 的 HTTP SSE 请求。我把它放在桌面,路径是C:\Users\22538\Desktop\mcp-proxy.jar。这个路径后面要写进配置文件,放好之后不要删、不要移、不要改名,否则 OpenCode 启动时找不到文件,MCP 连接直接失败。
2.3 安装 Burp MCP Server 扩展
推荐走 BApp Store,省事。打开 Burp Suite,进入Extender → BApp Store,搜索MCP Server,找到作者是 Daniel S & Daniel Allen 的那个,点安装。
如果 BApp Store 里搜不到或者网络加载慢,走手动安装:访问 PortSwigger 的 BApp Store 页面找到 MCP Server 扩展,下载最新版.bapp文件,然后在 Burp 里进Extender → BApp Store → Manual install,选中下载的.bapp文件加载。
安装完成后,Burp 主界面会多出一个MCP Server标签页,这就说明扩展加载成功了。
3. 启动 MCP Server 并确认监听地址
进入 Burp 的MCP Server标签页,点击Start按钮。默认监听地址是:
http://127.0.0.1:9876注意这里是HTTP 不是 HTTPS,后面配置--sse-url的时候必须写http://,写成https://会连接失败。
注意:每次重启 Burp Suite 后,MCP Server 都需要重新点一次 Start。这个设计是为了安全,避免扩展在后台静默监听。我一开始忘了这茬,OpenCode 那边一直报连接失败,排查了半天才发现是 Burp 重启后没点 Start。
启动后可以在浏览器里访问http://127.0.0.1:9876看看有没有响应,有响应说明 SSE 端点活着。
4. OpenCode 侧配置接入
4.1 配置文件路径
OpenCode 的全局配置文件在:
C:\Users\22538\.config\opencode\opencode.json如果目录不存在就手动建一下。这个文件是 JSON 格式,改之前建议先备份一份。
4.2 可复制的配置骨架
{ "$schema": "https://opencode.ai/config.json", "mcp": { "burp-suite": { "type": "local", "command": [ "java", "-jar", "C:\\Users\\22538\\Desktop\\mcp-proxy.jar", "--sse-url", "http://127.0.0.1:9876" ], "enabled": true, "timeout": 30000 } } }4.3 字段逐个说明
| 字段 | 值 | 说明 |
|---|---|---|
| type | "local" | 本地 MCP 服务器,通过 stdio 通信 |
| command | ["java", "-jar", "...mcp-proxy.jar", "--sse-url", "http://127.0.0.1:9876"] | 用 mcp-proxy.jar 桥接 Burp 的 HTTP SSE 端点 |
| enabled | true | 启动时自动启用 |
| timeout | 30000 | 请求超时时间,单位毫秒 |
关键点有三个:一是--sse-url必须是http://127.0.0.1:9876,协议和端口都要对;二是 jar 路径里的反斜杠在 JSON 里要写成\\转义;三是 timeout 给 30000ms 起步,history 数据量大的时候可以往上加。
如果 Burp 的 MCP Server 开启了 External Access(需要 Token 认证),需要在 command 里加--oauth21参数,或者配置MCP_AUTH_TOKEN环境变量。默认不开 External Access 的话不用管。
4.4 可选:Burp Analyst Agent
如果想让 OpenCode 用专用 Agent 来做安全分析,可以建一个 agent 文件:
C:\Users\22538\.opencode\agents\burp-analyst.md内容骨架:
--- name: burp-analyst description: Burp Suite 安全分析师,通过 Burp 官方 MCP Server 扩展连接 Burp Suite。 mode: subagent --- 你是一个 Burp Suite 安全分析师,通过 Burp 官方 MCP Server 扩展连接 Burp Suite。 ## 可用工具 - burp_get_proxy_history:获取 HTTP proxy history - burp_send_request:发送 HTTP/1.1 请求 - burp_send_request_http2:发送 HTTP/2 请求 - burp_create_repeater:创建 Repeater 标签页 - burp_proxy_intercept:控制 Proxy 拦截开关 - burp_encode / burp_decode:编码解码 - burp_collaborator:生成 Collaborator 负载(仅 Pro) ## 工作流程 1. 用 burp_get_proxy_history 拉取请求 2. 提取 API 端点、JS 文件、敏感信息 3. 对关键端点用 burp_send_request 手动测试 4. 输出摘要,标记高危发现配好之后在 OpenCode 里输入@burp-analyst就能激活这个专用 Agent。
5. 重启验证:一次可复现的拦截与重放
5.1 重启 OpenCode
配置改完必须重启 OpenCode 才生效。先退出当前运行的客户端,再重新启动,观察启动日志里有没有 MCP 相关的报错。
5.2 验证连接
在 OpenCode 对话里输入:
查看 Burp 的 HTTP history如果配置正确,OpenCode 会调用burp_get_proxy_history工具,返回 Burp Proxy 里捕获的请求列表。能返回数据就说明链路通了。
5.3 一次完整的拦截与重放验证
光看 history 还不够,得验证写操作也能走通。按下面步骤来一遍:
第一步,确保浏览器已经配好 Burp 代理(默认127.0.0.1:8080),随便访问一个目标站点,让 Proxy history 里有记录。
第二步,在 OpenCode 里发指令:
从 Burp history 里找一条 GET 请求,用 burp_send_request 重放一次,把响应状态码和响应头返回给我第三步,观察 OpenCode 的返回。正常情况它会先调burp_get_proxy_history拿到请求,再调burp_send_request发送,最后把响应结果贴出来。如果能看到状态码和响应头,说明读和写两条链路都通了。
第四步,验证 Repeater 创建:
把刚才那条请求用 burp_create_repeater 发到 Repeater 标签页然后切到 Burp 界面,看 Repeater 里是不是多了一个标签页。有的话,说明 OpenCode 对 Burp 的操控是真实生效的,不是只读了个缓存。
5.4 成功结果长什么样
一次成功的调用,OpenCode 侧会显示工具调用记录,类似:
调用 burp_get_proxy_history → 返回 128 条记录 调用 burp_send_request → 返回 200 OK,Content-Type: application/json 调用 burp_create_repeater → 成功创建 Repeater 标签页Burp 侧则能在 Proxy history 和 Repeater 里看到对应的变化。两边对得上,链路就是通的。
6. 本篇常见错排查
6.1 OpenCode 启动时 MCP 连接失败
最常见的原因是 Burp 的 MCP Server 没点 Start。每次重启 Burp 都要重新点一次,这个坑我踩过不止一回。其次检查 mcp-proxy.jar 路径对不对,桌面文件是不是被移走了。再就是 Java 版本,跑java --version确认是 17+。最后看 9876 端口有没有被别的程序占用。
6.2 连接成功但工具调用报错
Burp 版本太低或者 MCP Server 扩展版本太旧,去 BApp Store 检查更新。另一个高频原因是 Burp 没捕获到任何流量,Proxy history 是空的,OpenCode 自然查不到数据。先配好浏览器代理,浏览一下目标网站再试。还有 Proxy Intercept 处于开启状态时,发送请求会被挂起,建议调用期间先关掉 Intercept,或者用burp_proxy_intercept工具控制。
6.3 查询超时
History 数据量太大是主因。先按域名、方法、状态码过滤缩小范围,分批查询。如果 Burp 本身响应慢,把opencode.json里的 timeout 从 30000 往上加。网络代理配置也要检查,Burp 的代理监听设置不对会影响 SSE 端点响应。
6.4 返回 403 Forbidden
Burp MCP Server 开启了 External Access 但没提供 Token。两个解法:在 MCP Server 设置里关掉 External Access,或者获取 Token 后在配置里加上认证信息。默认不开 External Access 的话不会遇到这个问题。
6.5 其他注意事项
mcp-proxy.jar 不能删除或移动,路径是写死在配置里的。避免大量请求同时操作,并发太高容易超时。通过 Burp MCP 拿到的数据可能包含 JWT、API Key、内网 IP 这些敏感信息,分享截图或记录的时候记得脱敏。Java 环境要保持可用,卸载或者降级到 17 以下都会让 MCP 服务器起不来。
7. 把安全测试接进日常编码流
链路打通之后,实际用法比配置本身更有意思。我平时会这么组合:先在 Burp 里正常抓包,积累一批目标站点的请求;然后切到 OpenCode,用@burp-analyst让 Agent 批量分析 history,提取 API 端点、检查 JS 里的硬编码密钥、标记可疑的 JWT;对感兴趣的端点,直接让 OpenCode 调burp_send_request做参数变形测试,或者丢进 Repeater 手动深挖。
这套流程的价值在于,安全测试和代码审计在同一个 OpenCode 会话里完成,不用在多个工具之间来回切。如果你还没配 OpenCode 的模型接入,可以先去 TaoToken 模型对话 把对话链路跑通;需要长期跑 Agent 做批量分析的,看 Coding Plan 更划算;配置过程中要拿 API Key 的,直接进 API Keys 管理 生成;接入细节和参数说明在 接入文档 里都有。配置卡住了先翻第 6 节的排障清单,八成能对上号。