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
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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