Proxy MCP Server

An HTTP/HTTPS MITM proxy server for traffic capture, modification, and mocking.

README.md

proxy-mcp

proxy-mcp is an MCP server that runs an explicit HTTP/HTTPS MITM proxy (L7). It captures requests/responses, lets you modify traffic in-flight (headers/bodies/mock/forward/drop), supports upstream proxy chaining, and records TLS fingerprints for connections to the proxy (JA3/JA4) plus optional upstream server JA3S. It also ships "interceptors" to route Chrome, CLI tools, Docker containers, and Android devices/apps through the proxy.

81 tools + 8 resources + 4 resource templates. Built on mockttp.

Boundaries

  • Only sees traffic configured to route through it (not a network tap or packet sniffer)
  • Spoofs outgoing JA3 + HTTP/2 fingerprint + header order (via impit — native Rust TLS impersonation), not JA4 (JA4 is capture-only)
  • Can add, overwrite, or delete HTTP headers; outgoing header order can be controlled via fingerprint spoofing
  • Returns its own CA certificate — does not expose upstream server certificate chains

Pairs well with CDP/Playwright

Use CDP/Playwright for browser internals (DOM, JS execution, localStorage, cookie jar), and proxy-mcp for wire-level capture/manipulation + replay. They complement each other:

Capability CDP / Playwright proxy-mcp
See/modify DOM, run JS in page Yes No
Read cookies, localStorage, sessionStorage Yes (browser internals) Yes for proxy-launched Chrome via DevTools Bridge list/get tools; for any client, sees Cookie/Set-Cookie headers on the wire
Capture HTTP request/response bodies Yes for browser requests (protocol/size/streaming caveats) Body previews only (4 KB cap, 1000-entry ring buffer)
Modify requests in-flight (headers, body, mock, drop) Via route/intercept handlers Yes (declarative rules, hot-reload)
Upstream proxy chaining (geo, auth) Single browser via --proxy-server Global + per-host upstreams across all clients (SOCKS4/5, HTTP, HTTPS, PAC)
TLS fingerprint capture (JA3/JA4/JA3S) No Yes
JA3 + HTTP/2 fingerprint spoofing No Proxy-side only (impit re-issues matching requests with spoofed TLS 1.3, HTTP/2 frames, and header order; does not alter the client's TLS handshake)
Intercept non-browser traffic (curl, Python, Android apps) No Yes (interceptors)
Human-like mouse/keyboard/scroll input Via Playwright page.mouse/page.keyboard (instant, detectable timing) Yes — CDP humanizer with Bezier curves, Fitts's law, WPM typing, eased scrolling

A typical combo: launch Chrome via interceptor_chrome_launch (routes through proxy automatically), drive pages with Playwright/CDP, and use proxy-mcp to capture the wire traffic, inject headers, or spoof JA3 — all in the same session. For behavioral realism, use humanizer_* tools instead of Playwright's instant page.click()/page.type() — they dispatch human-like CDP Input.* events with natural timing curves.

Attach Playwright to proxy-launched Chrome:

  1. Call proxy_start
  2. Call interceptor_chrome_launch
  3. Read proxy://chrome/primary (or call interceptor_chrome_cdp_info) to get cdp.httpUrl (Playwright) and cdp.browserWebSocketDebuggerUrl (raw CDP clients)
  4. In Playwright:
    import { chromium } from "playwright";
    const browser = await chromium.connectOverCDP("http://127.0.0.1:<cdp-port>");
    

Proxy-safe built-in CDP flow (single-instance safe):

  1. Call proxy_start
  2. Call interceptor_chrome_launch
  3. Call interceptor_chrome_devtools_attach with that target_id
  4. Call interceptor_chrome_devtools_navigate with devtools_session_id
  5. Call proxy_search_traffic --query "<hostname>" to confirm capture

Human-like input flow (bypasses bot detection):

  1. Call proxy_start
  2. Optionally enable fingerprint spoofing: proxy_set_fingerprint_spoof --preset chrome_136
  3. Call interceptor_chrome_launch --url "https://example.com" (stealth mode auto-enabled when spoofing)
  4. Use humanizer_move / humanizer_click / humanizer_type / humanizer_scroll with the target_id
  5. Use humanizer_idle between actions to maintain natural presence

HTTP Proxy Configuration

1) Start proxy and get endpoint

proxy_start

Use the returned port and endpoint http://127.0.0.1:.

2) Browser setup (recommended: interceptor)

Use the Chrome interceptor so proxy flags and cert trust are configured automatically:

interceptor_chrome_launch --url "https://example.com"

Then bind DevTools safely to that same target:

interceptor_chrome_devtools_attach --target_id "chrome_"
interceptor_chrome_devtools_navigate --devtools_session_id "devtools_<id>" --url "https://apify.com"

3) Browser setup (manual fallback)

If launching Chrome manually, pass proxy flag yourself:

google-chrome --proxy-server="http://127.0.0.1:"

4) CLI/process setup

Route any process through proxy-mcp by setting proxy env vars:

export HTTP_PR

Tools 5

proxy_startStarts the HTTP/HTTPS MITM proxy server.
interceptor_chrome_launchLaunches a Chrome instance automatically routed through the proxy.
proxy_search_trafficSearches captured traffic logs for a specific hostname or query.
proxy_set_fingerprint_spoofSets a preset for TLS fingerprint spoofing.
humanizer_clickPerforms a human-like click action on a target.

Try it

Start the proxy server and launch a new Chrome instance to navigate to example.com.
Search the captured traffic logs for any requests made to apify.com.
Enable TLS fingerprint spoofing using the chrome_136 preset.
Perform a human-like click on the login button using the current browser target.

Frequently Asked Questions

What are the key features of Proxy MCP?

Explicit HTTP/HTTPS MITM proxy for traffic capture and modification. Supports JA3/JA4 TLS fingerprinting and JA3 spoofing. Includes interceptors for Chrome, CLI tools, Docker, and Android. Provides human-like input simulation for CDP to bypass bot detection. Supports upstream proxy chaining including SOCKS4/5, HTTP, and HTTPS.

What can I use Proxy MCP for?

Capturing and inspecting wire-level traffic for debugging web applications. Bypassing bot detection by spoofing TLS fingerprints and simulating human input. Injecting or modifying HTTP headers and bodies in-flight for testing. Routing CLI tools and Docker containers through a specific upstream proxy.

How do I install Proxy MCP?

Install Proxy MCP by running: npx -y proxy-mcp

What MCP clients work with Proxy MCP?

Proxy MCP works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep Proxy MCP docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Open Conare