BTK
Health Pass
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 15 GitHub stars
Code Pass
- Code scan — Scanned 3 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
This tool acts as a transparent proxy between an AI coding assistant and Burp Suite. It intercepts tool responses, compresses and summarizes large data payloads, and drastically reduces token usage and context window consumption.
Security Assessment
Overall risk: Low. The proxy naturally handles highly sensitive web security traffic (HTTP requests, scanner issues, and response bodies). However, it does not request dangerous system permissions and the light code scan found no hardcoded secrets, shell execution commands, or malicious patterns. It does make network requests, but only to relay traffic between your local Burp Suite installation and the AI CLI.
Quality Assessment
The project is in an active state and uses Rust, a language known for building safe and performant system utilities. It has a clear purpose and is transparently documented, showing exactly how data is processed and truncated. It is licensed under the standard MIT license, which is permissive for open-source use. Community trust is currently budding with 15 GitHub stars and a very recent last push, indicating active maintenance and responsiveness from the creator.
Verdict
Safe to use.
Burp MCP proxy with compression pipeline — reduces 182KB responses to ~4KB
BTK — Burp Token Killer
A transparent MCP proxy between Claude Code and Burp Suite.
Reduces 182 KB tool responses to ~4 KB. No config. No workflow changes. Just faster, cheaper security work.
The Problem
Burp Suite's MCP extension is powerful — but its responses are enormous.
A single get_proxy_http_history call with 50 items returns 185 KB of raw HTTP wire format.
That's ~46,000 tokens. Per call. For data you mostly don't need.
At that rate, your context window fills up after a few exchanges, and you're restarting sessions before finishing the job.
The Solution
BTK sits between Claude Code and Burp, intercepting every response and compressing it before it reaches your context window.
Claude Code ──stdin──▶ BTK ──POST──▶ Burp MCP
◀──SSE──────────────
│
normalize
lossless strip
group & summarize ──▶ Claude Code
truncate bodies
No changes to your Burp setup. No changes to how Claude uses tools.
BTK is a drop-in replacement for the Burp MCP URL in your Claude config.
Benchmark
Real measurements. Same Burp instance. Same proxy history. Both sides measured directly.
| Tool | Burp MCP Raw | BTK | Reduction | Ratio |
|---|---|---|---|---|
get_proxy_http_history (10 items) |
42,379 B | 526 B | 98.8% | 81× |
get_scanner_issues (10 issues) |
230,343 B | 280 B | 99.9% | 823× |
tools/list |
6,837 B | 6,552 B | 4.2% | ~1× |
Scanner issues achieve 823× because the grouper collapses repeated issue types into a single summary line.
How Compression Works
Three layers, all lossless at the information level:
1 — Lossless strip
Removes empty fields, null headers, redundant metadata. Nothing useful is lost.
2 — Grouper summaryGET /api/users appearing 50 times with status 200 becomes one line:
GET /api/users (x50) — 200:50
The full data is cached in a snapshot. Claude expands any path on demand with btk_detail.
3 — Body truncation
Response bodies over 2000 chars are trimmed. Binary responses (images, fonts) are replaced with [image/png, 4321B]. Configurable.
Synthetic Tools
BTK injects two extra tools into tools/list that Claude can use to navigate compressed data:
| Tool | What it does |
|---|---|
btk_detail(snapshot, path) |
Expand a specific path from a compressed snapshot — returns full request/response |
btk_next_page(snapshot, cursor) |
Paginate through large history sets |
Usage with RTK
BTK pairs naturally with RTK (Real Token Killer) — the CLI proxy that compresses git, cargo, npm, and other dev tool output before it reaches your LLM.
Together they cover the two sides of a security workflow:
┌──────────────────────────────────────────────────────┐
│ Claude Code session │
├──────────────────────┬───────────────────────────────┤
│ Dev operations │ Burp operations │
│ git, cargo, files │ proxy history, scanner, │
│ │ repeater, collaborator │
│ RTK │ BTK │
│ 60-90% savings │ 97-99% savings │
└──────────────────────┴───────────────────────────────┘
A full pentest session — recon, active scanning, manual testing, reporting — without burning through your context window.
Installation
Arch Linux (AUR):
yay -S btk-bin
Via Cargo:
cargo install --git https://github.com/cbxcvl/BTK
Or build from source:
git clone https://github.com/cbxcvl/BTK
cd BTK
cargo build --release
./target/release/btk --help
Configuration
Claude Code (~/.claude/settings.json)
Replace your existing Burp MCP server entry:
{
"mcpServers": {
"burp": {
"command": "/path/to/btk",
"args": ["--burp-url", "http://127.0.0.1:9876"]
}
}
}
Options
--burp-url <URL> Burp MCP endpoint (default: http://127.0.0.1:9876)
--body-max-chars <N> Max response body chars before truncation (default: 2000)
--tools <names> Comma-separated allowlist of Burp tools to expose
--tools-config <path> TOML file with tool descriptions and allowlist
Optional TOML config
[tools]
allow = ["send_http1_request", "get_proxy_http_history", "get_scanner_issues"]
[tool.send_http1_request]
description = "My custom description"
What Claude Can Do With BTK
Every Burp tool works. Tested against a live Burp Pro instance:
| Category | Tools |
|---|---|
| HTTP | send_http1_request, send_http2_request |
| Proxy | get_proxy_http_history, get_proxy_http_history_regex |
| WebSocket | get_proxy_websocket_history, get_proxy_websocket_history_regex |
| Scanner | get_scanner_issues |
| Repeater | create_repeater_tab |
| Intruder | send_to_intruder |
| Collaborator | generate_collaborator_payload, get_collaborator_interactions |
| Editor | get_active_editor_contents, set_active_editor_contents |
| Config | output_project_options, output_user_options, set_project_options, set_user_options |
| Proxy control | set_proxy_intercept_state, set_task_execution_engine_state |
| Encoding | url_encode, url_decode, base64_encode, base64_decode, generate_random_string |
| BTK synthetic | btk_detail, btk_next_page |
Example Session
Claude: I'll check the proxy history for authentication endpoints.
[calls get_proxy_http_history(count=50)]
BTK proxy history snapshot ph_a3f8 (50 items):
POST /api/login (x12) — 200:8, 401:4
GET /api/profile (x30) — 200:28, 403:2
POST /api/password-reset (x4) — 200:4
GET /api/admin (x4) — 403:4
Use btk_detail(snapshot="ph_a3f8", path="<METHOD /path>") to expand.
Claude: I see 4 login attempts returning 401. Let me expand those.
[calls btk_detail(snapshot="ph_a3f8", path="POST /api/login")]
Returns: full request/response for the 4 failed logins, with headers and bodies.
Claude: The 401 responses don't have account lockout — username enumeration is possible.
I'll send a test to Repeater.
[calls create_repeater_tab(...)]
Total context used for 50-item history analysis: ~4 KB instead of ~185 KB.
Architecture
src/
├── main.rs — entry point, arg parsing
├── proxy.rs — task orchestration (SSE + stdin tasks)
├── sse_task.rs — SSE stream reader, compression pipeline
├── stdin_task.rs — stdin reader, request forwarding
├── normalizer.rs — Burp content[0].text → result.items
├── http_parse.rs — raw HTTP wire format parser
├── lossless.rs — field stripping (headers, cookies, empty fields)
├── grouper.rs — history/scanner summary with snapshot cache
├── body_truncate.rs — body size limiting, binary detection, HTML extraction
├── compressor.rs — tool description compression for tools/list
├── synthetic.rs — btk_detail / btk_next_page tool handlers
├── snapshot_cache.rs — in-memory TTL cache for compressed snapshots
└── config.rs — CLI config, TOML loading
Requirements
- Rust 1.75+
- Burp Suite Pro with the MCP extension installed and running
- Claude Code
Acknowledgments
BTK exists because of RTK (Real Token Killer) by @rtk-ai.
Seeing RTK compress dev tool output before it hits the LLM made the solution obvious — the same idea needed to exist for Burp Suite. BTK is that extension.
License
MIT
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found