Caido MCP + Claude Code

Connect Caido proxy to Claude Code via a custom Go MCP server. Claude gets structured access to Caido’s proxy history, replay, automate (fuzzing), findings, sitemap, and scopes — all through HTTPQL-filtered, paginated, body-limited responses.

Architecture

Claude Code  -->  stdio  -->  caido-mcp-server (Go)  -->  GraphQL  -->  Caido (port 8080)

The Go binary acts as:

  • MCP server (stdio) to Claude Code — exposes 14 clean tools
  • GraphQL client to Caido — queries Caido’s API with OAuth token refresh

What You Get

  • 14 tools covering proxy history, replay, fuzzing, findings, sitemap, scopes
  • HTTPQL filtering on proxy history (req.host.eq:"example.com")
  • Body limits with offset support — no multi-MB response blobs
  • OAuth authentication with automatic token refresh
  • Structured JSON responses with pagination cursors

Prerequisites

  • Caido (free or Pro) running locally
  • Go 1.21+ (only if building from source)
  • Claude Code CLI

Installation

curl -fsSL https://raw.githubusercontent.com/c0tton-fluff/caido-mcp-server/main/install.sh | bash

Or download from Releases.

Option B: Build from Source

git clone https://github.com/c0tton-fluff/caido-mcp-server.git
cd caido-mcp-server
go build -o caido-mcp-server .

Setup

1. Start Caido

Launch Caido and note the listening address (default http://localhost:8080).

2. Authenticate

CAIDO_URL=http://localhost:8080 ./caido-mcp-server login

This opens a browser for Caido authentication and saves the token to ~/.caido-mcp/token.json.

3. Configure Claude Code

Add to ~/.mcp.json:

{
  "mcpServers": {
    "caido": {
      "command": "/path/to/caido-mcp-server",
      "args": ["serve"],
      "env": {
        "CAIDO_URL": "http://127.0.0.1:8080"
      }
    }
  }
}

4. Verify

Restart Claude Code and check that caido appears as a connected MCP server. Try:

  • caido_list_requests — should return proxied traffic (empty if no browser traffic yet)
  • caido_send_request — send a raw HTTP request through Caido’s replay

Available Tools

Proxy History

ToolDescriptionKey Params
caido_list_requestsList requests with HTTPQL filterhttpql, limit, after
caido_get_requestGet request details (headers, body, response)ids, include, bodyLimit, bodyOffset

Replay

ToolDescriptionKey Params
caido_send_requestSend raw HTTP requestraw, host, port, tls, sessionId
caido_list_replay_sessionsList Replay sessions
caido_get_replay_entryGet Replay entry with request/responseid

Automate (Fuzzing)

ToolDescriptionKey Params
caido_list_automate_sessionsList fuzzing sessions
caido_get_automate_sessionGet session details and entry listid
caido_get_automate_entryGet fuzz results with payloadsid, limit, after

Findings & Scope

ToolDescriptionKey Params
caido_list_findingsList security findingslimit, after, filter
caido_create_findingCreate finding for a requestrequestId, title, description
caido_get_sitemapBrowse discovered endpointsparentId
caido_list_scopesList target scopes
caido_create_scopeCreate new scopename, allowlist, denylist

Example: CTF in 3 Requests

1. caido_send_request  →  GET /  →  identify tech stack, discover endpoints
2. caido_send_request  →  POST /api/login  →  authenticate, get session token
3. caido_send_request  →  GET /api/admin/users  →  test access controls

Caido vs Burp MCP Comparison

FeatureCaido MCPBurp MCP
ArchitectureGo → GraphQL → CaidoGo → SSE → Burp Extension
Tools147 (consolidated from 14+)
FilteringHTTPQL (req.host.eq:"...")Regex on proxy history
FuzzingAutomate sessions + entriesSend to Intruder
ScannerNo built-in scannerget_scanner_issues
FindingsCreate + list via APIRead scanner findings
AuthOAuth with token refreshNone (localhost only)
Body limitsBuilt into get_requestBuilt into send_request

Use Caido for: daily proxy browsing, quick replay, HTTPQL filtering, fuzzing with Automate, lightweight CTFs.

Use Burp for: active scanning, Collaborator/blind testing, extension ecosystem (Autorize, Param Miner), scanner findings.

Proxy Port Notes

  • Caido default proxy: 127.0.0.1:8080
  • Burp default proxy: 127.0.0.1:8080 (conflict!)
  • Solution: Change one proxy port (e.g., Caido to 127.0.0.1:1234)
  • MCP servers use different ports: Caido GraphQL (8080) vs Burp SSE (9876) — no conflict

Troubleshooting

Tools not appearing after restart: Check that the binary path in ~/.mcp.json is correct and the binary is executable.

Invalid token error: Run caido-mcp-server login again to re-authenticate.

Empty proxy history: caido_list_requests only shows traffic proxied through Caido. Browse through Caido’s proxy first.

Parameter errors (sessionId required, depth required): Check the tool reference above for correct parameter names.

Rebuilding after changes:

cd ~/Documents/Caido-Repo && go build -o caido-mcp-server .
# Then restart Claude Code

Check MCP logs: ~/.cache/claude-cli-nodejs/*/mcp-logs-caido/