caido-mcp-server
MCP server and CLI for Caido web proxy - browse, replay, and analyze HTTP traffic from AI assistants or your terminal.
______________________________________________________________________
它做什么
与Caido代理交互的两种方式:
- MCP服务器 -通过模型上下文协议向AI助手公开42个工具和4个只读资源(Claude Code、Cursor等)
- 命令行界面 -适用于喜欢命令行的Pentester的独立终端客户端
两者共享相同的身份验证令牌、相同的Go SDK和相同的代码库。
特性
| 类别 | 功能 |
|---|---|
| 代理历史记录 | 使用HTTPQL搜索请求,获取完整的请求/响应详细信息 |
| 回放 | 发送HTTP请求,内联获取响应(状态、标头、正文)。每次会话cookie jar自动持久化 Set-Cookie 通话之间 |
| 自动化 | 访问模糊测试会话、结果和有效载荷。开始/暂停/恢复/取消任务 |
| 研究结果 | 创建、列出、删除和导出安全调查结果 |
| 网站地图 | 浏览已发现的端点 |
| 范围 | 创建和管理目标范围定义 |
| 项目 | 列出项目并在项目之间切换 |
| 工作流 | 列出、运行和切换自动化工作流 |
| 篡改 | 列出、创建、切换和删除匹配和替换规则 |
| 拦截 | 检查状态、暂停/恢复、列出/转发/删除截获的请求 |
| 环境 | 列出和切换变量环境(令牌、密钥) |
| 过滤器 | 列出已保存的HTTPQL筛选器预设 |
| 托管文件 | 列出Caido提供的有效载荷文件 |
| 任务 | 列出并取消正在运行的后台任务 |
| 插件 | 列出已安装的插件包 |
| 例子 | 获取Caido版本和平台信息 |
内置安全性和性能:
- 凭证编校-在工具输出中对授权、Cookie和API密钥头进行编校
- 会话cookie jar-每个重播会话的RFC 6265 jar;
Set-Cookie从响应自动附加到下一个send_request反对同一届会议 - 响应指纹识别-自动检测内容类型(json/html/xml/text/binary),以便代理知道他们正在处理什么
- 自适应体限制-JSON获取4KB,HTML获取3KB,二进制获取200B(用显式重写
bodyLimit) - 响应差异-同一会话中重复的相同响应会折叠为一行摘要,从而节省令牌
- 输入验证-对所有字符串输入进行长度限制,以防止上下文泛滥
- 令牌自动刷新-过期的OAuth令牌在会话中期自动刷新
- 会话重用-每个服务器生命周期只有一个重播会话,没有蔓延
会话cookie罐
这 caido_send_request 工具在内存中维护 http.CookieJar 每次重播会话。通过设置Cookie Set-Cookie 在任何响应中,都会存储并自动注入到针对同一RFC 6265域/路径的后续请求中。通过 useCookieJar: false 只需一次调用即可禁用注入(可用于会话固定测试或验证身份验证门)。使用 caido_clear_session_cookies 在测试运行之间擦除会话jar caido_get_session_cookies 反思存储的内容(不返回cookie值,只返回元数据)。
输出的 caido_send_request 包括a cookieJar 块与 injectedCookies (本次通话中发送的姓名)以及 storedCookies (姓名取自 Set-Cookie),因此LLM可以验证保持身份验证的链。
______________________________________________________________________
MCP服务器
安装
curl -fsSL https://raw.githubusercontent.com/c0tton-fluff/caido-mcp-server/main/install.sh | bash或者从以下网址下载预构建的二进制文件 发布 (macOS、Linux、Windows-amd64/arm64)。
Build from source
git clone https://github.com/c0tton-fluff/caido-mcp-server.git
cd caido-mcp-server
go build -ldflags "-X main.version=$(git describe --tags)" -o caido-mcp-server ./cmd/mcp快速开始
选项A:个人访问令牌(推荐)
在Caido中生成PAT(设置>开发人员>个人访问令牌),并通过环境变量传递它。不需要登录命令。
{
"mcpServers": {
"caido": {
"command": "caido-mcp-server",
"args": ["serve"],
"env": {
"CAIDO_URL": "http://127.0.0.1:8080",
"CAIDO_PAT": "your-personal-access-token"
}
}
}
}选项B:Autho设备流
CAIDO_URL=http://localhost:8080 caido-mcp-server login这将打开您的浏览器进行OAuth身份验证,并将令牌保存到 ~/.caido-mcp/token.json。然后配置您的MCP客户端:
{
"mcpServers": {
"caido": {
"command": "caido-mcp-server",
"args": ["serve"],
"env": {
"CAIDO_URL": "http://127.0.0.1:8080"
}
}
}
}3.使用它
"List all POST requests to /api"
"Send this request with a modified user ID"
"Create a finding for this IDOR"
"Show fuzzing results from Automate session 1"
"What's in scope?"MCP工具(42)
| 工具 | 说明 |
|---|---|
caido_list_requests | 使用HTTPQL筛选器和分页列出请求 |
caido_get_request | 获取请求详细信息(元数据、标头、正文)。2KB机身限制默认值 |
caido_send_request | 通过Replay发送HTTP请求,内联返回响应。民意调查高达10分。自动注入会话Cookie并保持 Set-Cookie (切换至 useCookieJar) |
caido_batch_send | 并行发送多个请求(BAC扫描、参数模糊、端点扫描)。每批最多50个 |
caido_create_replay_session | 创建一个命名的重播会话,可以选择用请求作为种子 |
caido_list_replay_sessions | 列出重播会话 |
caido_get_replay_entry | 获取带有响应的重播条目。2KB机身限制默认值 |
caido_clear_session_cookies | 擦除内存中的cookie jar以进行重播会话 |
caido_get_session_cookies | 列出存储在会话jar中与URL匹配的Cookie的元数据(不返回值) |
caido_list_automate_sessions | 列出模糊测试会话 |
caido_get_automate_session | 使用条目列表获取会话详细信息 |
caido_get_automate_entry | 获取模糊结果和有效载荷 |
caido_automate_task_control | 开始/暂停/恢复/取消模糊任务 |
caido_list_findings | 列出安全发现 |
caido_create_finding | 创建与请求链接的查找结果 |
caido_delete_findings | 按ID或报告人姓名删除调查结果 |
caido_export_findings | 出口调查结果以供报告 |
caido_get_sitemap | 浏览站点地图层次结构 |
caido_list_scopes | 列出目标范围 |
caido_create_scope | 使用允许/拒绝列表创建新范围 |
caido_list_projects | 列出项目,标记当前 |
caido_select_project | 切换活动项目 |
caido_list_workflows | 列出自动化工作流程 |
caido_run_workflow | 执行活动或转换工作流 |
caido_toggle_workflow | 启用或禁用工作流 |
caido_list_tamper_rules | 列出匹配和替换规则集合 |
caido_create_tamper_rule | 在集合中创建篡改规则 |
caido_update_tamper_rule | 更新现有的篡改规则 |
caido_toggle_tamper_rule | 启用或禁用篡改规则 |
caido_delete_tamper_rule | 删除篡改规则 |
caido_get_instance | 获取Caido版本和平台信息 |
caido_intercept_status | 获取拦截状态(PAUSED/RUNNING) |
caido_intercept_control | 暂停或恢复拦截 |
caido_list_intercept_entries | 使用HTTPQL筛选列出排队拦截条目 |
caido_forward_intercept | 转发截获的请求,可选择进行修改 |
caido_drop_intercept | 删除截获的请求 |
caido_list_environments | 列出环境及其变量 |
caido_select_environment | 切换活动环境 |
caido_list_filters | 列出已保存的HTTPQL筛选器预设 |
caido_list_hosted_files | 列出托管的有效负载文件 |
caido_list_tasks | 列出正在运行的后台任务 |
caido_cancel_task | 按ID取消正在运行的任务 |
caido_list_plugins | 列出已安装的插件包 |
MCP资源(4)
通过MCP资源协议公开的只读数据。代理可以在不调用工具的情况下读取这些内容。
| URI | 描述 |
|---|---|
caido://requests/{id} | 给定请求ID的完整HTTP请求和响应 |
caido://replay-sessions/{id} | 使用条目列表回放会话详细信息 |
caido://sitemap | 站点地图中的根域 |
caido://findings | 安全发现摘要(最多100份) |
Parameter reference
caido_list_requests
| 参数 | 类型 | 说明 |
|---|---|---|
httpql | string | HTTPQL筛选器查询 |
limit | int | 最大请求数(默认20,最大100) |
after | string | 分页光标 |
caido_get_request
| 参数 | 类型 | 说明 |
|---|---|---|
ids | string\[\] | 请求ID(必填) |
include | string\[\] | requestHeaders, requestBody, responseHeaders, responseBody |
bodyOffset | int | 字节偏移量 |
bodyLimit | int | 字节限制(默认值2000) |
caido_send_request
| 参数 | 类型 | 说明 |
|---|---|---|
raw | string | 完整HTTP请求(必填) |
host | string | 目标主机(覆盖主机标头) |
port | int | 目标端口 |
tls | bool | 使用HTTPS(默认为true) |
sessionId | string | 重播会话(如果省略,则自动管理) |
caido_get_replay_entry
| 参数 | 类型 | 说明 |
|---|---|---|
id | string | 重播条目ID(必需) |
bodyOffset | int | 字节偏移量 |
bodyLimit | int | 字节限制(默认值2000) |
caido_get_automate_entry
| 参数 | 类型 | 说明 |
|---|---|---|
id | string | 条目ID(必填) |
limit | int | 最大结果 |
after | string | 分页光标 |
caido_create_finding
| 参数 | 类型 | 说明 |
|---|---|---|
requestId | string | 关联请求(必填) |
title | string | 查找标题(必填) |
description | string | 查找描述 |
caido_create_scope
| 参数 | 类型 | 说明 |
|---|---|---|
name | string | 作用域名称(必需) |
allowlist | string\[\] | 要包含的主机名,例如。 example.com, *.example.com (必填) |
denylist | string\[\] | 要排除的主机名 |
caido_select_项目
| 参数 | 类型 | 说明 |
|---|---|---|
id | string | 要切换到的项目ID(必需) |
caido_intercept_control
| 参数 | 类型 | 说明 |
|---|---|---|
action | 字符串 | pause 或 resume (必填) |
caido_list_intercept_entrys
| 参数 | 类型 | 说明 |
|---|---|---|
filter | string | HTTPQL筛选器查询 |
limit | int | 最大条目数(默认20,最大100) |
after | string | 分页光标 |
caido_forward_intercept
| 参数 | 类型 | 说明 |
|---|---|---|
id | string | 拦截条目ID(必填) |
raw | string | 修改后的原始HTTP请求(base64编码,可选) |
caido_drop_intercept
| 参数 | 类型 | 说明 |
|---|---|---|
id | string | 拦截条目ID(必填) |
caido_automate_task_control
| 参数 | 类型 | 说明 |
|---|---|---|
action | 字符串 | start, pause, resume,或 cancel (必填) |
session_id | string | 自动生成会话ID(启动时需要) |
task_id | string | 自动生成任务ID(暂停/恢复/取消时需要) |
caido_delete调查结果
| 参数 | 类型 | 说明 |
|---|---|---|
ids | string\[\] | 查找要删除的ID |
reporter | string | 删除此报告者的所有发现 |
caido_export_findings
| 参数 | 类型 | 说明 |
|---|---|---|
ids | string\[\] | 查找要导出的ID |
reporter | string | 导出此记者的所有发现 |
caido_list_环境
无需参数。返回所有包含变量和选定/全局上下文的环境。
caido_select_environment
| 参数 | 类型 | 说明 |
|---|---|---|
id | string | 环境ID(必填,空字符串取消选择) |
caido_run工作流
| 参数 | 类型 | 说明 |
|---|---|---|
id | string | 工作流ID(必填) |
type | 字符串 | active 或 convert (必填) |
request_id | string | 请求ID(活动工作流所需) |
input | string | 输入数据(转换工作流所需) |
caido_toggle_workflow
| 参数 | 类型 | 说明 |
|---|---|---|
id | string | 工作流ID(必填) |
enabled | bool | 启用或禁用(必填) |
caido_list_tamper_rules
无需参数。返回所有具有嵌套规则的篡改规则集合。
caido_create_tamper_rule
| 参数 | 类型 | 说明 |
|---|---|---|
collection_id | string | 集合ID(必填) |
name | string | 规则名称(必填) |
condition | string | HTTPQL筛选条件 |
sources | string\[\] | 流量来源:INTERCEPT、REPLAY、AUTOMATE、IMPORT、PLUGIN、工作流、示例 |
caido_toggle_tamper_rule
| 参数 | 类型 | 说明 |
|---|---|---|
id | string | 篡改规则ID(必填) |
enabled | bool | 启用或禁用(必填) |
caido_delete_tamper_rule
| 参数 | 类型 | 说明 |
|---|---|---|
id | string | 篡改规则ID(必填) |
______________________________________________________________________
命令行界面
Caido的独立终端客户端。无需MCP-直接从您的shell中使用它。
安装
curl -fsSL https://raw.githubusercontent.com/c0tton-fluff/caido-mcp-server/main/install.sh | TOOL=cli bash或从以下网址下载 发布.
Build from source
git clone https://github.com/c0tton-fluff/caido-mcp-server.git
cd caido-mcp-server
go build -o caido-cli ./cmd/cli用法
需要身份验证-任一设置 CAIDO_PAT env变量或运行 caido-mcp-server login 第一。
# Check connection and auth
caido status -u http://localhost:8080
# Send structured requests
caido send GET https://target.com/api/users
caido send POST https://target.com/api/login -j '{"user":"admin","pass":"test"}'
caido send PUT https://target.com/api/profile -H "Authorization: Bearer tok" -j '{"role":"admin"}'
# Send raw HTTP requests
caido raw 'GET /api/users HTTP/1.1\r\nHost: target.com\r\n\r\n'
caido raw -f request.txt --host target.com --port 8443
echo -n 'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n' | caido raw -
# Browse proxy history
caido history
caido history -f 'req.host.eq:"target.com"' -n 20
# Get full request/response details
caido request 12345
# Encode/decode
caido encode base64 "hello world"
caido decode url "%3Cscript%3E"
caido encode hex "test"命令
| 命令 | 描述 |
|---|---|
status | 检查Caido实例运行状况和身份验证令牌 |
send METHOD URL | 通过Replay API发送结构化HTTP请求 |
raw | 发送原始HTTP请求(参数,文件 -f,或stdin与 -) |
history | 使用HTTPQL筛选列出代理历史记录 |
request ID | 按ID获取完整的请求/响应 |
encode TYPE VALUE | 编码值(url, base64, hex) |
decode TYPE VALUE | 解码值(url, base64, hex) |
全球旗帜
| 标志 | 描述 |
|---|---|
-u, --url | Caido实例URL(或设置 CAIDO_URL) |
-b, --body-limit | 响应体字节限制(默认值2000) |
______________________________________________________________________
建筑
caido-mcp-server/
cmd/
mcp/ MCP server (stdio transport)
cli/ Standalone CLI
internal/
auth/ OAuth device flow, PAT support, token store, auto-refresh
httputil/ HTTP parsing, fingerprinting, response diff, CRLF normalization
replay/ Replay session management, cookie jar, response polling
resources/ MCP read-only resources (requests, sessions, sitemap, findings)
tools/ MCP tool definitions (one file per tool)
testutil/ Mock GraphQL server, MCP test helpers, fixtures两者 cmd/mcp 和 cmd/cli 分享 internal/ 包装。该项目使用 caido社区/sdk go 用于与Caido的所有GraphQL通信。
______________________________________________________________________
故障排除
| 错误 | 修复 |
|---|---|
Invalid token | 检查 CAIDO_PAT 价值或运行 caido-mcp-server login 再一次 |
token expired, no refresh token | 改用PAT身份验证,或重新登录 |
poll failed: timed out | 目标服务器速度慢;使用 get_replay_entry 与返回 entryId |
no authentication token found | 设置 CAIDO_PAT env变量或运行 caido-mcp-server login 之前 serve |
MCP服务器日志: ~/.cache/claude-cli-nodejs/*/mcp-logs-caido/
______________________________________________________________________
安全
所有工具输出中的敏感HTTP头(授权、Cookie、Set-Cookie、API密钥)都会自动编辑,以防止凭据泄漏到LLM上下文。所有字符串输入都是服务器端长度验证的。请求批量大小有上限。
PAT令牌和OAuth令牌以0600权限存储,从不出现在进程参数或日志输出中。
要报告安全问题,请打开GitHub问题或直接联系维护人员。
______________________________________________________________________
贡献
- 分叉回购
- 创建要素分支
go build ./...和go test ./... -race- 打开PR(CI运行构建、测试、审查、统计检查)
