Skip to main content
Glama
getproxykit

ProxyKit-mcp

Official
README.md
# proxykit-mcp [![ProxyKit-mcp MCP server – quality and maintenance score on Glama](https://glama.ai/mcp/servers/getproxykit/proxykit-mcp/badges/score.svg)](https://glama.ai/mcp/servers/getproxykit/proxykit-mcp)

**Model Context Protocol server for [ProxyKit](https://proxykit.net) — drive a local HTTP(S) debugging proxy from Claude, Cursor, and any MCP host.**

`proxykit-mcp` is a small stdio binary that exposes a running ProxyKit engine to
MCP clients. Every tool call is one HTTP call to the engine's control API on
`127.0.0.1` — the server holds no traffic of its own and talks to nothing off
your machine.

> "Mock the checkout endpoint to fail half the time." · "Summarize the last 500
> captured requests against my baseline." · "Add 800 ms of latency to
> /api/payments and replay the session."
>
> Typed into your editor, run against real traffic ProxyKit already captured.

- **Website:** https://proxykit.net
- **Setup guide (all hosts):** https://proxykit.net/mcp
- **CLI reference:** https://proxykit.net/docs

This repository is the public home of the `proxykit-mcp` server — its docs,
tool reference, and MCP registry metadata. The engine and desktop app are
[ProxyKit](https://proxykit.net), a proprietary product with a free tier.

---

## Install

The binary ships inside every ProxyKit CLI archive **and** inside the desktop
app. Pick whichever you already have.

### With Homebrew (CLI)

```bash
brew install getproxykit/tap/proxykit-cli
```

That puts `proxykit`, `proxy-engine`, and `proxykit-mcp` on your PATH.

### With WinGet (Windows)

```powershell
winget install ProxyKit.ProxyKitCLI
```

### From the desktop app

Download from https://proxykit.net/download. The binary is bundled at:

```
macOS    /Applications/ProxyKit.app/Contents/Resources/proxykit-mcp
Windows  C:\Program Files\ProxyKit\resources\proxykit-mcp.exe
Linux    (AppImage) squashfs-root/resources/proxykit-mcp
```

---

## Connect an MCP host

The engine writes a `control.token` file on startup; point the MCP server at
that file — **never paste the token into the config**. Add this to your host's
MCP config (`~/.cursor/mcp.json`, Claude Desktop's `claude_desktop_config.json`,
`.mcp.json`, …):

```jsonc
{
  "mcpServers": {
    "proxykit": {
      "command": "proxykit-mcp",
      "env": {
        "PROXYKIT_CONTROL_AUTH_TOKEN_FILE": "~/.config/ProxyKit/control.token",
        "PROXYKIT_MCP_TIER": "readonly"
      }
    }
  }
}
```

Start ProxyKit (desktop or `proxykit start --headless`), restart your MCP host,
and ask it: *"List my latest captured traffic in ProxyKit."*

Per-client paths and one-click install from the desktop app are documented at
**https://proxykit.net/mcp**.

### Environment variables

| Variable | Purpose |
|---|---|
| `PROXYKIT_CONTROL_AUTH_TOKEN_FILE` | Path to the engine's `control.token`. Preferred over the raw token. |
| `PROXYKIT_CONTROL_AUTH_TOKEN` | The token directly (use the `_FILE` form instead where possible). |
| `PROXYKIT_MCP_TIER` | Comma-separated allowlist: `readonly` (default), `mutate`, `capture`, `analysis`, `replay`. |
| `PROXYKIT_ENGINE_URL` | Engine control API. Defaults to `http://127.0.0.1:17171`. |

---

## Safety model

- **Local only.** The server calls `127.0.0.1:17171`. The engine binds loopback
  and rejects non-loopback callers.
- **Token-gated.** Every control call carries `X-Proxykit-Control-Token`. No
  token, no access.
- **Least privilege by tier.** `readonly` is the default and can only read.
  Anything that mutates rules, controls capture, or replays traffic is off
  until you opt its tier in — so an agent can't create a mock or clear your
  capture unless you explicitly allowed that tier.
- **Redacted at the source.** Response bodies are redacted server-side before
  they reach the agent.

---

## Tools

50 tools across five tiers. `readonly` is enabled by default; the rest are
opt-in via `PROXYKIT_MCP_TIER`.

### `readonly` — read state (default)

| Tool | Does |
|---|---|
| `proxy_status` | Is the proxy running, what port, TLS configured, buffer size |
| `list_traffic` | List captured requests; filter by method/URL/status, paged |
| `get_request` | Full headers + redacted body of one request |
| `search_traffic` | Substring search across captured URLs |
| `list_mock_rules` | Configured mock rules |
| `list_rewrite_rules` | Configured rewrite rules |
| `list_chaos_rules` | Configured chaos (latency/error injection) rules |
| `list_scripts` | Installed JS hook scripts |
| `list_sessions` | Named capture sessions |
| `get_session` | One session's manifest + baseline |
| `list_findings` | Privacy / schema / performance / lint findings |
| `get_findings_summary` | Finding counts by severity and category |
| `list_environments` | Environments and the active one (secrets redacted) |
| `list_paused_breakpoints` | Requests paused awaiting review |
| `list_rule_packs` | Installed rule packs |
| `get_ca_status` | Whether a CA root is available (public PEM only) |

### `mutate` — edit rules

`create_mock_rule`, `update_mock_rule`, `delete_mock_rule`, `toggle_mock_rule`,
`create_mock_from_request`, `create_rewrite_rule`, `update_rewrite_rule`,
`delete_rewrite_rule`, `toggle_rewrite_rule`, `create_chaos_rule`,
`update_chaos_rule`, `delete_chaos_rule`, `toggle_chaos_rule`,
`attach_environment`

### `capture` — control capture

`start_capture`, `stop_capture`, `clear_traffic`, `release_breakpoint`

### `analysis` — AI + findings workflows

`analyze_request`, `rescan_findings`, `dismiss_finding`, `restore_finding`,
`propose_redaction_rules`, `run_ai_workflow`, `compare_sessions`

### `replay` — sessions, replay, rule packs

`start_session`, `stop_session`, `delete_session`, `replay_session`,
`replay_request`, `import_rule_pack`, `install_rule_pack`, `export_rule_pack`,
`delete_rule_pack`

---

## License

**This repository** — the docs, `Dockerfile`, and registry metadata — is MIT
licensed (see [LICENSE](./LICENSE)); reuse it freely.

**ProxyKit itself** — the `proxykit-mcp` binary and the engine it drives — is
proprietary software © 2026 Seyed Ahmad Sarollahi, licensed under
https://proxykit.net/terms#license. Nothing in this repository grants any right
to the ProxyKit software; the binary is downloaded from the release server at
build time under its own terms.

TDQS

B3.4/5.0

Scored across 50 tools

Disambiguation4/5

Tools cluster into clear functional families (traffic, sessions, mocks, rewrites, chaos, findings, rule packs), and descriptions carefully differentiate the three parallel rule types. Minor overlap remains between list_traffic and search_traffic, and create_mock_rule vs create_mock_from_request, but boundaries are mostly inferable.

Naming Consistency5/5

Nearly every tool follows a strict snake_case verb_noun pattern (list_*, get_*, create_*, update_*, delete_*, toggle_*, start_*/stop_*, replay_*, import_/install_/export_*). The few noun-phrased tools like proxy_status and get_ca_status still fit cleanly. Consistency is excellent.

Tool Count2/5

At 50 tools the surface is very heavy, with three separate rule families (mock/rewrite/chaos) each carrying a full 5-6 tool CRUD set, plus sessions, findings, packs, envs, breakpoints, and scripts. The domain is broad, but the count sits at the extreme end and invites consolidation.

Completeness4/5

Coverage of the capture/replay/rule/findings lifecycle is thorough, including rule packs, environments, breakpoints, and CA status. Gaps are minor but real: scripts expose only list_scripts (no create/update/delete), breakpoints have no creation tool, and redaction rule installation is deliberately not exposed over MCP.

Maintenance

ActivityMaintained
ResponsivenessNo issues