Supersurf
Health Uyari
- License — License: NOASSERTION
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Basarisiz
- child_process — Shell command execution capability in daemon/dist/main.js
- process.env — Environment variable access in daemon/dist/main.js
- fs module — File system access in daemon/dist/main.js
- child_process — Shell command execution capability in daemon/dist/profiles/chrome.js
- fs module — File system access in daemon/dist/profiles/chrome.js
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
The web wrangler for agents. Give your AI a real browser and never touch the web yourself again.
SuperSurf
MCP-native browser automation. Any agent. Any model. Real Chrome, via extension — not CDP.
graph LR
A["AI Agent"] -->|stdio| B["MCP Server"]
B -->|Unix socket| E["Daemon"]
E -->|WebSocket| C["Chrome Extension"]
C -->|Content Scripts| D["Browser"]
style A fill:#8A2BE2,stroke:#6A1B9A,color:#fff
style B fill:#339933,stroke:#1B5E20,color:#fff
style E fill:#1B5E20,stroke:#0D3B14,color:#fff
style C fill:#4285F4,stroke:#1565C0,color:#fff
style D fill:#FF6F00,stroke:#E65100,color:#fff
SuperSurf is a free and open-source MCP server that gives any AI agent control of a real Chrome browser.
It works with any LLM that supports the Model Context Protocol — Claude, GPT, Gemini, open-source models, or your own.
Unlike tools that spin up headless browsers or inject CDP scripts, SuperSurf uses a Chrome extension to interact with pages through content scripts. Your agent operates in a real browser profile with your cookies, history, and localStorage intact — and page JavaScript can't detect it.
Every line of code — server and extension — is public. No obfuscated binaries, no telemetry, no data collection. Read it, audit it, fork it.
Teach Your AI Agent SuperSurf 🦀
Send this to your agent:
Read https://liquidbuiltit.github.io/Supersurf/skill.md and follow the instructions to automate your browser
- Send the prompt above to your AI agent
- Your agent reads the skill guide and learns SuperSurf's tools
- They connect and start automating your browser
Why SuperSurf?
vs. PuppeteerCDP over pipe — detectable via |
vs. SeleniumWebDriver protocol — |
SuperSurfContent scripts in an isolated world — invisible to page JS. Your real browser profile. Credentials resolved extension-side from env vars — agent never sees raw values. Built-in multi-agent multiplexing. |
Puppeteer and Selenium are great tools for scripted automation and testing. SuperSurf solves a different problem: giving an AI agent a browser that looks and behaves like a human's.
Why Extension-Based?
[!IMPORTANT]
CDP-injected scripts appear as VM instances in memory profiling. Content scripts run in an isolated world that page JavaScript cannot observe. SuperSurf never touches the page's JS context for DOM interaction.
Real browser profile. No synthetic launch flags, no blank profile. Your agent browses with the same cookies, history, and extensions as a human user.
Extension presence is a human signal. Anti-bot systems check for installed extensions as evidence of a real user. A browser with zero extensions is suspicious.
[!TIP]
SuperSurf is CI-compatible out of the box. Sideload without user interaction:chrome --load-extension=./extension --user-data-dir=/tmp/supersurf-profile
Quick Start
1. Install the Chrome extension from the Web Store
2. Register with your MCP client
claude mcp add supersurf -- npx supersurf-mcp@latest mcp # Claude Code
Claude Desktop config
{
"mcpServers": {
"supersurf": {
"command": "npx",
"args": ["supersurf-mcp@latest", "mcp"]
}
}
}
CLI flags can be appended to the args array:
{
"mcpServers": {
"supersurf": {
"command": "npx",
"args": ["supersurf-mcp@latest", "mcp", "--debug", "--port", "5555"]
}
}
}
From source (development)
npm run mcp
# or manually:
claude mcp add supersurf -- node server/dist/bin/supersurf.js mcp
Packages
SuperSurf ships as two npm packages:
supersurf-mcp— the MCP server. This is what you install and point your client at.supersurf-daemon— the coordinator daemon. It's a dependency ofsupersurf-mcp, spawned automatically; you never install or configure it directly.
Why two packages and not a single
supersurf? They were meant to merge into onesupersurfpackage in v3. That name is currently squatted on npm by a stale, abandoned0.0.1placeholder (dead site, untouched for ~10 months), so the merge is on hold pending an ownership dispute. Until that resolves, the two ship separately under the names we own.
Features
| Isolated-world DOM interaction | All page interaction runs through Chrome's content script context — an isolated world the page's own JavaScript can't read. No CDP fingerprints, no VM script artifacts. (Not tested against commercial anti-bot vendors.) |
| Real browser profile | Your agent browses with your actual cookies, history, localStorage, and extensions. No sterile headless environment. |
| Secure credential handling | secure_fill injects passwords from environment variables directly in the extension. The agent sends an env var name, never the value. |
| 28 browser tools | Full coverage: navigation, interaction, screenshots, network monitoring, console access, form filling, CSS inspection, PDF export, performance metrics, file downloads. |
| Session multiplexing | Multiple MCP clients share one browser through a daemon process with tab ownership tracking and round-robin scheduling. The daemon is automatically spawned by the MCP server — no setup required. |
| Framework detection | Content script identifies 40+ frontend frameworks and libraries on any page. |
| CI-ready | Sideload the extension with --load-extension and a throwaway profile. No manual setup needed. |
| Domain whitelist | Optional navigation restriction using the Tranco top 100K list. Fetched once, cached locally, refreshed daily. |
| Zero extension deps | The Chrome extension uses browser APIs only. No bundled libraries, no supply chain surface. |
[!NOTE]
Credentials never reach the agent.secure_fillresolves env var values extension-side and types characters with randomized delays (40-120ms) to mimic human input. Your agent sends"GITHUB_PASSWORD", not the password itself.
Tools
Session Management| Tool | Description |
|---|---|
connect |
Connect to the browser daemon. Pass profile for an isolated Chromium instance. |
disconnect |
Disconnect from the browser daemon |
status |
Show connection state |
profile_create |
Create an isolated Chromium profile |
profile_list |
List all managed profiles |
profile_delete |
Delete a managed profile |
| Tool | Description |
|---|---|
browser_tabs |
List, create, attach, or close tabs |
browser_navigate |
Go to URL, back, forward, reload |
browser_window |
Resize, close, minimize, maximize |
| Tool | Description |
|---|---|
browser_interact |
Click, type, press keys, hover, scroll, wait, select, upload files |
browser_fill_form |
Set values on multiple form fields at once |
browser_drag |
Drag one element to another |
browser_handle_dialog |
Accept or dismiss alerts/confirms/prompts |
secure_fill |
Fill a field with a credential from an env var (agent never sees the value) |
| Tool | Description |
|---|---|
browser_snapshot |
Get the page's accessibility tree as structured DOM |
browser_lookup |
Find elements by visible text, returns CSS selectors |
browser_extract_content |
Pull page content as clean markdown |
browser_get_element_styles |
Inspect computed CSS like DevTools Styles panel |
browser_evaluate |
Run JavaScript in page context |
browser_verify_text_visible |
Assert text is visible on page |
browser_verify_element_visible |
Assert element is visible on page |
| Tool | Description |
|---|---|
browser_take_screenshot |
Capture viewport, full page, element, or region |
browser_pdf_save |
Export page as PDF |
browser_console_messages |
Read console output, filter by level/text/URL |
browser_network_requests |
Monitor/inspect/replay network traffic |
browser_performance_metrics |
Collect Web Vitals (FCP, LCP, CLS, TTFB) |
browser_download |
Download a file via the browser |
| Tool | Description |
|---|---|
browser_list_extensions |
List installed Chrome extensions |
browser_storage |
Inspect/modify localStorage & sessionStorage (requires storage_inspection experiment) |
reload_mcp |
Hot-reload the MCP server (debug mode only) |
Experimental Features
Configure via ~/.supersurf/config.json (changes require a daemon restart) or the SUPERSURF_EXPERIMENTS environment variable:
SUPERSURF_EXPERIMENTS=page_diffing,smart_waiting,mouse_humanization
| Experiment | Description |
|---|---|
| page_diffing | After interactions, returns only DOM changes instead of a full re-read. Includes a confidence score. |
| smart_waiting | Replaces fixed delays with adaptive DOM stability + network idle detection. |
| storage_inspection | Inspect and modify browser storage (localStorage, sessionStorage). |
| mouse_humanization | Human-like Bezier trajectories, overshoot correction, and idle micro-movements. Hand-tuned from the Balabit Mouse Dynamics dataset. |
Server CLI Flags
| Flag | Description |
|---|---|
--debug |
Verbose logging + hot reload (payloads truncated by default) |
--debug=no_truncate |
Full-verbosity debug — no payload truncation |
--port <n> |
WebSocket port (default: 5555) |
--log-file <path> |
Custom server log file path |
--script-mode |
JSON-RPC over stdio without MCP framing |
--disable-secure-eval |
Disable the default-on secure_eval analysis (AST + Proxy membrane) for browser_evaluate |
Debug log locations[!NOTE]
secure_eval— two-layer code analysis forbrowser_evaluate(server-side AST parsing + extension-side Proxy membrane that blocks dangerous API access before execution) — is on by default. Disable it with the--disable-secure-evalflag orSUPERSURF_DISABLE_SECURE_EVAL=1.
- Server log:
~/.supersurf/logs/server.log - Session logs:
~/.supersurf/logs/sessions/supersurf-debug-{client_id}-{timestamp}.log
All WebSocket commands log params and responses. CDP passthrough unwraps to show inner methods. Base64 payloads (screenshots, PDFs) are auto-redacted in truncated mode.
Prerequisites
- Node.js >= 18
- Chrome or Chromium — on Ubuntu/Mint, must be a deb install, not a Snap. Snap Chromium's
homeinterface denies access to hidden directories, breaking managed profiles under~/.supersurf/. Fix on Mint:sudo snap remove chromium && sudo apt install chromium. Ubuntu has no first-party deb — usegoogle-chrome-stablefrom Google's signed apt repo instead. - An MCP client (Claude Code, Claude Desktop, etc.)
- macOS or Linux — Windows is not currently supported. Vote for Windows support if you'd like to see it.
100% Open Source — Apache-2.0 with Commons Clause. Free to use, modify, and redistribute, but not to sell.
Built by The Media Masons
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi