# @devinwangd/cloak-browser-mcp

Model Context Protocol (MCP) server backed by CloakBrowser stealth Chromium. Drop-in replacement for @playwright/mcp with source-level fingerprint patches, humanized inputs, and persistent profiles. 86 tools across navigation, interaction, page state, net

- **Type:** MCP server
- **Trust:** 65/100 (B), scored on the package rubric
- **Verification:** verified (build provenance)
- **Version:** 0.2.0
- **Author:** Devin Wang
- **License:** MIT
- **npm:** @devinwangd/cloak-browser-mcp
- **Source:** https://github.com/devinwang/cloak-browser-mcp
- **Compatible clients:** claude-code, cursor, copilot, gemini (basis: transport)

## Trust

65/100 (B), scored on the package rubric
- Publisher verified: no
- Build provenance: verified attestation
- npm trusted publishing (OIDC): yes
- Install scripts: suspicious script found
- Prompt-injection scan: not run
- Obfuscation scan: not run
- Evidence age: 0 days

## Security scan

- **Status:** warnings
- **Scanned:** 2026-10-23T07:25:14.855Z
- **Version scanned:** 0.2.0
- **CVEs:** none found by OSV at scan time
**Findings**
- injection-shaped content (warning) in the `browser_press_key` tool: Exfiltration-shaped instruction

## Tools

40 declared. Statically extracted from the shipped source — a floor on the surface, not a census.
- `cloak_binary_info` — Report installed CloakBrowser binary version, tier (free or pro), platform, and cache path.
- `cloak_binary_update` — Force CloakBrowser to check for and download the latest Chromium build. May take several minutes (~200MB).
- `cloak_detection_test` — Load a well-known bot-detection probe page and dump its key result fields.
- `cloak_stealth_audit` — Programmatic stealth audit. Reports navigator.webdriver, plugin count, WebGL vendor/renderer, languages, user agent, hardwareConcurrency, deviceMemory, permissi
- `cloak_request_signal_inspect` — Open the target URL in an ephemeral background tab and capture per-request connection signals: response status, security details (TLS protocol/issuer), response
- `cloak_humanize_set` — Toggle humanized mouse/keyboard inputs and tune behavior. Takes effect on subsequent click/type calls when --caps humanize is on.
- `cloak_persistent_profile_create` — Create a fresh persistent profile directory under ~/.cloak-browser-mcp/profiles/<name>. Use as --profile-dir on next launch.
- `cloak_persistent_profile_list` — List all profile directories under ~/.cloak-browser-mcp/profiles/.
- `cloak_persistent_profile_delete` — Delete a profile directory. Requires confirm=true. The active session is unaffected.
- `cloak_set_fingerprint` — Apply a fingerprint profile to the active context. Some fields (seed, GPU, screen) require recreating the context — current pages will be reopened on the same U
- `cloak_set_timezone` — Live-override the timezone for the active context via CDP (no relaunch).
- `cloak_set_locale` — Override navigator.language and Accept-Language for the active context.
- `cloak_set_geolocation` — Set the geolocation reported by navigator.geolocation. Pass fromProxyIp=true to auto-resolve from proxy exit IP.
- `cloak_set_proxy` — Replace the current proxy. This recreates the BrowserContext (state is preserved if --profile-dir was used; otherwise cookies are lost).
- `browser_get_config` — Print resolved server config (capabilities, profile, proxy, fingerprint, allow/block lists).
- `browser_close` — Close the browser and discard all in-memory state. The next tool call will lazy-relaunch.
- `browser_run_code_unsafe` — Execute arbitrary JS in the server process. Only available when started with BOTH --caps config AND --enable-unsafe-eval.
- `browser_highlight` — Persistently outline an element so a human reviewer can see what the agent picked.
- `browser_hide_highlight` — Remove highlight from a previously highlighted element, or all of them.
- `browser_start_tracing` — Begin a Playwright trace recording. Stop with browser_stop_tracing to write the .zip.
- `browser_stop_tracing` — Stop tracing and write the .zip trace to the path passed in browser_start_tracing.
- `browser_start_video` — Begin a video recording. Stop with browser_stop_video. Note: video must be configured at context creation; for ephemeral sessions, the next launched tab is reco
- `browser_stop_video` — Stop the video recording flag.
- `browser_video_chapter` — Insert a chapter marker into the video buffer (no-op when video is off).
- `browser_video_show_actions` — Annotate subsequent actions performed on the page with a callout that names the action and, when styled, marks the action point and highlights the target elemen
- `browser_video_hide_actions` — Stop annotating actions performed on the page.
- `browser_start_recording` — Start recording actions that the user performs in the browser as Playwright code. Use it when the user wants to demonstrate a flow manually. Call browser_stop_r
- `browser_stop_recording` — Stop the recording started with browser_start_recording and return the recorded actions as Playwright code.
- `browser_resume` — Resume page execution if paused via debugger; statement or DevTools breakpoint.
- `browser_click` — Click an element by ref or selector.
- `browser_type` — Type text into an editable field. Use --humanize for natural per-character timing.
- `browser_hover` — Hover over an element.
- `browser_drag` — Drag from one element to another.
- `browser_drop` — Drop files or data onto an element.
- `browser_select_option` — Select one or more options in a <select> dropdown.
- `browser_press_key` — Send a single key or key combination at page level.
- `browser_handle_dialog` — Respond to the next dialog (alert/confirm/prompt/beforeunload).
- `browser_file_upload` — Upload files to the active file chooser. Paths must be inside --upload-allow-dir if set.
- `browser_fill_form` — Populate multiple form fields in one call.
- `browser_scroll` — Scroll the page or an element by a pixel amount.

## Install

**Verdict: do-not-install** — Do not install: 1 injection-shaped pattern found in this entry's own text — it may try to steer the model that loads it.
**Blocking**
- 1 injection-shaped pattern found in this entry's own text — it may try to steer the model that loads it. — tool:browser_press_key: Exfiltration-shaped instruction
**Client configuration withheld.** Client configs are withheld because this entry has a blocking finding. Show the warnings below to the person installing it.
If they have seen the findings and still want to proceed, request the plan again with acknowledge_warnings=true.

## Blast radius

Extensive blast radius — deletes data; holds an api key.
- Floor 54, ceiling 54 (tier: extensive)
- This is impact, not likelihood. A high radius is not a defect: a filesystem server is supposed to write files. It is never part of the trust score.

## Machine-readable views of this entry

- Signed JSON: https://forgeregistry.com/api/v1/packages/%40devinwangd%2Fcloak-browser-mcp
- Install plan: https://forgeregistry.com/api/v1/packages/%40devinwangd%2Fcloak-browser-mcp/install-plan
- Alternatives: https://forgeregistry.com/api/v1/alternatives/%40devinwangd%2Fcloak-browser-mcp
- HTML page: https://forgeregistry.com/registry/%40devinwangd%2Fcloak-browser-mcp
- MCP: POST https://forgeregistry.com/api/mcp → `forge_get_package` / `forge_install_plan`

## About this document

Generated by Forge (https://forgeregistry.com) — a compact rendering of the same record served, signed, at the JSON URL above. Trust and scan facts are the registry's own measurements; anything Forge did not measure is named as unmeasured rather than omitted.
