Multi-session browser MCP server

Your agents share a browser.
Ours don't have to.

15 parallel sessions. Full isolation. One server.

terminal
$ npx leapfrog

  @..@    Leapfrog v0.6.1
 (----)   36 tools | 15 max sessions | self-improving
( >__< )  watching.
0
parallel sessions
0
tools
0
tests
0
x fewer tokens
0
cloud deps

What it is

A Model Context Protocol server that gives your AI agents real browsers — multiple of them, in parallel, with isolated cookies, fingerprints, and state.

The only MCP that lets you run 15 sessions side-by-side without them stepping on each other's auth or tabs. Open source, runs locally, no cloud account required.

What's in the box

36 tools. 9 capability groups. Zero filler.

Every tool that ships in v0.6.1, organized by what it actually does. The five at the top are the hero capabilities — the things nobody else can do.

THE MOAT

Sessions & Pool

15 isolated BrowserContexts. Separate cookies, fingerprint, viewport, locale, geo, proxy. They never leak state into each other.

  • session_createSpin up an isolated session with its own everything
  • session_listList all active sessions with URLs and idle time
  • session_destroyClose a session and free its pool slot
  • session_healthCheck if sessions are alive and responsive
  • pool_statusPool stats, memory, uptime, per-session idle countdown
REAL IDENTITY

Profiles & Auth

Bring your real Chrome cookies. Stay logged in. Skip captcha hell. Sites trust you because you actually are you.

  • profile_import_from_chromeConnect to your real Chrome via CDP and import its cookies
  • session_save_profileSnapshot a logged-in session's cookies + storage to disk
  • session_list_profilesList saved auth profiles
  • profile_listList persistent browser profiles with auth status
  • profile_warmBrowse Google/Wikipedia to build trust before reCAPTCHA hits
  • profile_deleteWipe a saved profile
CHEAP TO LOOK

Navigation & Perception

Accessibility tree snapshots, not raw DOM. Your agent sees @e3 button "Submit" — not 14,000 tokens of div soup. ~5x median token reduction.

  • navigateGo to URL, return a @e1/@e2 snapshot
  • snapshotRe-snapshot the current page or a region for fresh refs
  • diffReturns only what changed since the last snapshot
  • extractPull text, HTML, title, URL, or JS-evaluated value from any element
NOBODY ELSE HAS THIS

Network Intelligence

See every HTTP request. Block trackers, mock responses, log specific patterns. Reverse-engineer hidden APIs in minutes.

  • network_logView captured requests/responses with regex filtering
  • network_interceptBlock, log, or mock requests with URL globs — add/remove rules mid-session
  • console_logView captured browser console messages, filterable by level
  • api_discoverList JSON APIs the page called, classified as data/tracking/auth/cdn/ads
  • api_exportGenerate an OpenAPI v3 spec from observed API traffic
GETS SMARTER

Self-Improvement & Memory

Per-domain JSON files that learn selectors, wait strategies, stealth levels, and discovered APIs. Every visit teaches the next one.

  • domain_knowledgeInspect what Leapfrog has learned per site — visits, selectors, bandit weights
  • session_memoryRecall actions performed in this session (recovers context after compression)
  • add_init_scriptInject JS that runs before every page load

Interaction

Click, fill, type, scroll, drag, upload — one verb, every action. Plus power-user escape hatches.

  • actClick, fill, type, check, select, press, scroll, hover, drag, upload
  • batch_actionsRun up to 100 actions in one call with per-step humanization delays
  • executeRun a full Playwright script with {page, context}
  • wait_forWait for element / text / network idle / nav / JS expression

Multi-Tab

Popups, OAuth, redirects — tracked automatically. Switch by index, or -1 for the most recent.

  • tabs_listList all tabs in a session, including auto-tracked popups
  • tab_switchSwitch by index, or -1 for the most recent (popup/OAuth handler)
  • tab_closeClose a tab by index

Recording & Replay

Teach once. Replay forever. Parameterize anything. Export as Playwright code or JSON.

  • session_exportExport action history as a replayable JSON or Playwright script
  • session_replayReplay with {{placeholder}} overrides and skip-on-error
  • session_export_traceExport a Playwright trace.zip viewable at trace.playwright.dev

Capture · Pagination · Human Loop

The essentials. Screenshots, paginated walking, and a "tap me in" overlay for when the agent gets stuck.

  • screenshotCapture page or element as inline base64, optionally save to disk
  • paginateWalk click-next, infinite scroll, or URL-pattern pagination in one call
  • wait_for_humanPop the @..@ overlay, request human help, block until they click Done

The flywheel

Gets smarter every visit.

Stealth tightens when you get blocked. Snapshots shrink when nav stops changing. APIs replace pages once Leapfrog sees them in network traffic. The agent wrote none of it.

~/.leapfrog/domains/github.com.json
{
  "domain": "github.com",
  "visitCount": 47,
  "stealthLevel": 2,
  "waitStrategy": "domcontentloaded",
  "learnedSelectors": 12,
  "banditWeights": [0.31, 0.22, 0.41, 0.06],
  "suppressedRegions": ["nav", "footer"],
  "avgTokens": 487  // was 1550,
  "consentSelector": ".accept-all",
  "discoveredApis": 4
}

What it actually learns

Per-domain knowledge files

A JSON dossier per site at ~/.leapfrog/domains/. Visit count, working selectors, learned consent button, discovered APIs. Inspectable, deletable, portable.

EXP3 bandit (4 stealth strategies)

Stealth strategies compete on success rates. Got blocked at level 0? Next session for that domain starts pre-armed at the level that worked.

Heat-map element suppression

Tracks which @eN refs the agent actually clicks. After 10 visits, decorative footer links and unused regions get pruned from snapshots.

Cookie consent learning

Ships with 10 framework rules. Learns new dismissal patterns after 3 successful clicks on the same selector.

Captcha solver

Free tier handles visible reCAPTCHA v2 and Cloudflare checkbox. Hard captchas escalate to a paid provider you configure.

It's not a black box. Stored locally at ~/.leapfrog/domains/. Deletable per domain. Inspectable in your editor. No telemetry, no cloud sync, no account. cat it. rm it. It's just files.

How it stacks up

Multi-session by default. Open-source by license.

agent-browser wins on raw token count. browser-use has 81K stars. Stagehand has the best natural language DX. Leapfrog ships the combination nobody else does — and runs entirely on your laptop.

LeapfrogPlaywright MCPagent-browserStagehand
Parallel sessions15 (isolated)11Cloud (paid)
Session isolationFullNoNoCloud
Tokens / page~1,400~14,000~300~2,000+
Network interceptYesNoNoNo
Real browser profilesYesNoNoNo
Crash recoveryAutoNoNoCloud
Local-firstYesYesYesNo
PriceFree (MIT)FreeFreePaid tiers

Ready to jump in?

One install. No cloud. No API key. No account.

Works with Claude Code, Cursor, Windsurf — anything that speaks MCP.

// Add to your MCP config (~/.mcp.json)
{
  "leapfrog": {
    "command": "npx",
    "args": ["-y", "leapfrog"]
  }
}
$ npx leapfrog --doctor
Open Source MIT License Zero Cloud Zero API Keys

One agent was signing up for backlinks. Another was pulling competitor data.

Same browser. Same crash.

That's not a multi-agent workflow. That's a collision.

I needed browsers that couldn't interfere with each other. Not two. Fifteen. Each with its own cookies, its own storage, its own fingerprint. No shared state. No tug of war.

One server. Zero collisions. That's the product.

@..@