proxy-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| proxy_startA | Start the HTTPS MITM proxy. Auto-generates a CA certificate. Returns port, URL, cert fingerprint, and setup instructions for the target device. |
| proxy_stopA | Stop the MITM proxy. Traffic history and CA certificate are retained. Interceptor targets (browsers, containers, spawned processes) activated by THIS MCP session are deactivated; targets belonging to other MCP sessions keep running, though the proxy they were pointed at is gone until someone calls proxy_start again. Pass all=true to deactivate every session's targets (the pre-3.5.3, process-wide behaviour). Over stdio there is one session, so every target is deactivated either way. |
| proxy_statusA | Get proxy running state, port, upstream config, rule count, and traffic count. |
| proxy_get_ca_certA | Get the CA certificate PEM and SPKI fingerprint for installing on the target device. |
| proxy_set_upstreamB | Set a global upstream proxy for all outgoing traffic. Supports socks4://, socks5://, http://, https://, and pac+http:// URLs. |
| proxy_clear_upstreamA | Remove the global upstream proxy. Traffic will go directly to target servers. |
| proxy_set_host_upstreamA | Set a per-host upstream proxy override. Traffic to this hostname will use the specified proxy instead of the global one. |
| proxy_remove_host_upstreamA | Remove a per-host upstream proxy override. |
| proxy_add_ruleB | Add an interception rule with a matcher and handler. Rules are evaluated by priority (ascending), first match wins. |
| proxy_update_ruleC | Modify an existing interception rule. |
| proxy_remove_ruleC | Delete an interception rule. |
| proxy_list_rulesA | List all interception rules sorted by priority. |
| proxy_test_rule_matchA | Test which interception rules would match a request, with detailed per-field pass/fail diagnostics and effective winner by priority. |
| proxy_enable_ruleA | Enable a disabled interception rule. |
| proxy_disable_ruleA | Disable an interception rule without removing it. |
| proxy_list_trafficB | List captured HTTP exchanges with optional filters. Returns paginated results. |
| proxy_get_exchangeB | Get full details of a captured HTTP exchange including headers and body previews. |
| proxy_search_trafficA | Full-text search across URLs, headers, and body previews of captured traffic. |
| proxy_clear_trafficA | Clear all captured traffic from the buffer. |
| proxy_inject_headersA | Add or overwrite headers on matching traffic. Creates a passthrough rule with header transforms. |
| proxy_rewrite_urlB | Rewrite request URLs matching a pattern. Creates a passthrough rule with body match-replace on the URL. |
| proxy_mock_responseC | Return a mock response for matched requests. Creates a mock rule. |
| proxy_get_tls_fingerprintsA | Get JA3/JA4 client fingerprints and JA3S server fingerprint for a specific captured exchange. |
| proxy_list_tls_fingerprintsB | List unique client JA3/JA4 fingerprints across captured traffic with occurrence counts. |
| proxy_set_ja3_spoofA | Legacy: enable fingerprint spoofing (deprecated, use proxy_set_fingerprint_spoof with a preset). The ja3 parameter is accepted but ignored — the default Chrome preset is used. |
| proxy_set_fingerprint_spoofA | Enable outgoing TLS + HTTP/2 fingerprint spoofing via impit (native TLS impersonation, no Docker required). Supports browser presets that select an impit target (rustls, matching real Chrome/Firefox). |
| proxy_list_fingerprint_presetsA | List available browser fingerprint presets for use with proxy_set_fingerprint_spoof. |
| proxy_check_fingerprint_runtimeA | Check fingerprint spoofing backend readiness without sending traffic. |
| proxy_clear_ja3_spoofB | Disable fingerprint spoofing. |
| proxy_get_tls_configA | Get current TLS capture and spoofing configuration. |
| proxy_enable_server_tls_captureA | Toggle server-side JA3S capture. When enabled, outgoing TLS connections are intercepted to extract the server's negotiated TLS parameters. |
| interceptor_listA | List all interceptors with their availability and active targets. Shows the Browser, Terminal and Docker interceptors. |
| interceptor_statusB | Get detailed status of a specific interceptor, including all active targets and their details. |
| interceptor_deactivate_allA | Kill ALL active interceptors across all types. Emergency cleanup — stops all browser instances, kills spawned processes, cleans Docker. |
| interceptor_browser_launchA | Launch cloakbrowser (stealth Chromium) with proxy flags and SPKI certificate trust. Built-in source-level fingerprint patches + humanize mode. Driven via Playwright — locator-based tools replace CDP. |
| interceptor_browser_navigateB | Navigate the browser target's page via Playwright and optionally wait for matching host traffic to be captured by the proxy. |
| interceptor_browser_closeA | Close a browser instance launched by interceptor_browser_launch. |
| interceptor_spawnA | Spawn a command with proxy env vars pre-configured (HTTP_PROXY, HTTPS_PROXY, SSL_CERT_FILE, NODE_EXTRA_CA_CERTS, CURL_CA_BUNDLE, and 15+ more). Traffic automatically routes through the MITM proxy. |
| interceptor_killA | Kill a spawned process by target ID. Also retrieves final stdout/stderr output. |
| interceptor_docker_attachA | Inject proxy env vars and CA certificate into a Docker container. Two modes: 'exec' (inject into running container) or 'restart' (stop + restart with proxy config). |
| interceptor_docker_detachA | Remove proxy configuration from a Docker container and clean up injected files. |
| interceptor_browser_snapshotA | Take an ARIA accessibility snapshot of the bound page (YAML-formatted role tree). Great for LLM-driven page understanding without parsing HTML. |
| interceptor_browser_screenshotA | Take a screenshot of the bound page. Saves to file_path if provided; otherwise reports byte count without embedding the image. |
| interceptor_browser_list_consoleB | List console messages buffered since the browser was launched. Types: log, info, warning, error, debug, etc. |
| interceptor_browser_list_cookiesB | List cookies from the browser context with pagination and truncated value previews. |
| interceptor_browser_get_cookieA | Get one cookie by cookie_id with full value (subject to a hard cap to keep output bounded). |
| interceptor_browser_list_storage_keysA | List localStorage/sessionStorage keys for the current origin with pagination and truncated value previews. |
| interceptor_browser_get_storage_valueB | Get one localStorage/sessionStorage value by item_id. |
| interceptor_browser_list_network_fieldsA | List request/response header fields from proxy-captured traffic since the browser was launched, with pagination and truncation. |
| interceptor_browser_get_network_fieldB | Get one full header field value from proxy-captured traffic by field_id. |
| interceptor_browser_evaluateA | Execute a JS file in the page and return its result. Source is loaded from |
| interceptor_browser_inject_init_scriptA | Inject a JS file as an init script (Playwright |
| interceptor_browser_add_script_tagA | Append a element to the current page (Playwright |
| proxy_session_startB | Start persistent on-disk capture for the current proxy run. |
| proxy_session_stopA | Stop persistent on-disk capture and finalize the active session. |
| proxy_session_statusA | Get current persistent capture runtime status. |
| proxy_list_sessionsA | List recorded sessions in storage. |
| proxy_get_sessionB | Get manifest/details for a specific recorded session. |
| proxy_import_harA | Import a HAR file from disk into a new persisted session for querying, findings, and replay. |
| proxy_query_sessionA | Query indexed session exchanges by metadata (URL, hostname, method, status) with filters and pagination. Does NOT search body content — use proxy_search_session_bodies for that. |
| proxy_search_session_bodiesA | Search inside HTTP request/response bodies stored in a persistent session. Decompresses and searches actual body content — useful for finding specific text, prices, API responses, error messages, etc. in recorded traffic. Returns context snippets around each match (like grep -C). |
| proxy_get_session_handshakesC | Summarize TLS handshake/fingerprint availability (JA3/JA4/JA3S) for session exchanges. |
| proxy_get_session_exchangeB | Get one exchange from a recorded session by seq or exchange ID. |
| proxy_replay_sessionB | Replay selected requests from a recorded/imported session. Default mode is dry_run for safety. |
| proxy_export_harC | Export a recorded session (or filtered subset) to HAR format. |
| proxy_delete_sessionA | Delete a recorded session from disk. |
| proxy_session_recoverA | Rebuild session indexes from records after crash/corruption. |
| humanizer_moveB | Move mouse to target coordinates via the backend Playwright page. |
| humanizer_clickA | Click an element. Pass one of: selector (CSS/XPath), role + optional name, text, label, or raw x+y coords as fallback. Locator-based calls auto-wait for visible. |
| humanizer_typeB | Type text into the focused element via page.keyboard.type. |
| humanizer_scrollA | Dispatch a wheel event. Raw page.mouse.wheel — single event, not multi-step. |
| humanizer_idleA | Simulate idle behavior with mouse micro-jitter and occasional micro-scrolls. Keeps the page 'alive' to avoid idle detection by bot-detection scripts. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| proxy_status | |
| proxy_ca_cert | |
| proxy_traffic_summary | |
| proxy_interceptors | |
| proxy_sessions | |
| proxy_browser_primary | |
| proxy_browser_targets |
TDQS
Scored across 72 tools
Tools are mostly grouped by clear domains (proxy, session, interceptor, humanizer, fingerprinting), and descriptions clarify near-neighbor cases like traffic search vs session body search. However, some pairs could still be confused, such as proxy_get_exchange vs proxy_get_session_exchange vs interceptor_browser_get_network_field, and the convenience rule creators overlap conceptually with proxy_add_rule.
The naming follows a strong snake_case verb_noun pattern with consistent prefixes like proxy_, interceptor_browser_, and humanizer_. Minor inconsistencies exist: clear vs remove for upstreams, the deprecated proxy_set_ja3_spoof alongside proxy_set_fingerprint_spoof, and proxy_enable_server_tls_capture described as a toggle despite its name.
72 tools is a very large surface for an MCP server, even for a broad proxy/interception platform. Many tools are highly specialized and could be consolidated, such as convenience rule wrappers, session query variants, and the deprecated JA3 tool.
The toolset covers the full proxy lifecycle: start/stop/status, CA management, upstream configuration, rules, traffic capture and search, sessions, HAR import/export, TLS fingerprinting, browser automation, humanization, and process/Docker interception. There are no major workflow dead ends; list-style tools fill gaps where dedicated getters are absent.