CloakBrowser MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CloakBrowser MCP Servercan you navigate to example.com and take a screenshot?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CloakBrowser MCP Server
Stealth browser automation via Model Context Protocol, powered by CloakBrowser.
A drop-in MCP server that wraps CloakBrowser's stealth Chromium with 57 source-level C++ fingerprint patches — not JS injection. Passes all 30/30 bot detection tests (reCAPTCHA v3 score: 0.9, Cloudflare Turnstile: PASS, FingerprintJS: PASS).
All tools use the cloak_ prefix to avoid conflicts with Hermes Agent's built-in browser_* tools.
Features
22 cloak tools — navigate, click, type, screenshot, console, evaluate JS, form filling, drag & drop, and more
Stealth by default —
navigator.webdriver = false, real Chrome TLS fingerprint, no CDP detectionHuman-like behavior —
humanize=Trueenables Bézier mouse curves, per-character keyboard timingProxy support — HTTP & SOCKS5 with GeoIP auto-detection
Session persistence — save/load cookies and localStorage
Compatible with any MCP client — Hermes Agent, Claude Desktop, Cursor, etc.
No naming conflicts —
cloak_*prefix won't collide with Hermes built-inbrowser_*tools
Related MCP server: Chrome MCP Stealth
Quick Start
Install
pip install mcp-cloakbrowserRun
# As a stdio MCP server
mcp-cloakbrowser
# Or directly
python -m cloakbrowser_mcp.serverUse with Hermes Agent
Add to ~/.hermes/config.yaml:
mcp_servers:
cloakbrowser:
command: "python"
args: ["-m", "cloakbrowser_mcp.server"]
timeout: 120Restart Hermes Agent. Tools will be registered as mcp_cloakbrowser_cloak_*.
Use with Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"cloakbrowser": {
"command": "mcp-cloakbrowser"
}
}
}Available Tools
All tools use the cloak_ prefix (registered as mcp_cloakbrowser_cloak_* in Hermes):
Tool | Description |
| Launch a stealth CloakBrowser instance |
| Close the browser and clean up |
| Navigate to a URL, return compact snapshot |
| Get accessibility tree with ref IDs |
| Click element by ref (e.g. |
| Type text into input field by ref |
| Press keyboard key (Enter, Tab, Escape...) |
| Scroll page up/down |
| Navigate back in history |
| Navigate forward in history |
| Get console logs or evaluate JS |
| List all images with URLs and alt text |
| Take PNG screenshot |
| Wait for element or text to appear |
| Evaluate JavaScript expression |
| Get text/HTML of page or element |
| Extract all links as JSON |
| Fill multiple form fields at once |
| Hover over element by ref |
| Select options in |
| Drag element to another element |
| Save cookies/localStorage to file |
| Load cookies/localStorage from file |
| Get current page URL, title, viewport |
Tool Usage Examples
Navigate and Interact
# Launch browser
await call_tool("cloak_launch", {"headless": True, "humanize": True})
# Navigate to a page
await call_tool("cloak_navigate", {"url": "https://example.com"})
# Get snapshot to see interactive elements
snapshot = await call_tool("cloak_snapshot", {})
# Shows: [@e1] <a>Link text, [@e2] <input>[type: text]...
# Click a link
await call_tool("cloak_click", {"ref": "@e1"})
# Type into search box
await call_tool("cloak_type", {"ref": "@e2", "text": "hello world", "submit": True})
# Take screenshot
await call_tool("cloak_screenshot", {})Fill a Login Form
await call_tool("cloak_fill_form", {
"fields": [
{"ref": "@e1", "value": "username"},
{"ref": "@e2", "value": "password123"},
],
"submit_ref": "@e3",
})Advanced: Custom Fingerprint & Proxy
await call_tool("cloak_launch", {
"headless": True,
"humanize": True,
"proxy": "socks5://user:pass@proxy:1080",
"fingerprint_seed": "my-unique-seed-123",
"geoip": True,
"locale": "zh-CN",
})Save/Restore Session
# Save session after login
await call_tool("cloak_save_storage_state", {"path": "session.json"})
# Later: restore session
await call_tool("cloak_load_storage_state", {"path": "session.json"})Why cloak_* Prefix?
Hermes Agent has built-in browser_* tools (browser_navigate, browser_click, etc.) that use its own Playwright instance. Using the same names would cause conflicts. The cloak_ prefix makes it clear these tools use CloakBrowser's stealth Chromium, and allows you to use both in the same session:
browser_navigate→ Hermes built-in Playwright (fast, no stealth)cloak_navigate→ CloakBrowser stealth Chromium (passes bot detection)
Architecture
MCP Client (Hermes/Claude/etc.)
│ stdio (JSON-RPC)
▼
mcp-cloakbrowser server
│
▼
CloakBrowser (Playwright-compatible API)
│
▼
Stealth Chromium (57 C++ patches)The server maintains a single browser instance (singleton pattern). All tools operate on the current page. The browser is auto-launched on first tool call if not explicitly launched.
Development
git clone https://github.com/MiwooMiwoo/cloakbrowser-mcp.git
cd cloakbrowser-mcp
pip install -e ".[dev]"License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MiwooMiwoo/cloakbrowser-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server