Leapfrog MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LEAP_HUD | No | Click ripple, zoom-to-target, scroll-to-target on agent actions | false |
| LEAP_TILE | No | Tile sessions in a grid (`true` | `master` | `false`) | false |
| LEAP_SOUND | No | Marimba chime on intervention detection (macOS) | false |
| LEAP_TRACE | No | Per-session Playwright tracing (screenshots + DOM snapshots) | false |
| LEAP_NOTIFY | No | macOS notification center alerts on intervention detection | false |
| LEAP_RECORD | No | Session recording (action history export) | false |
| LEAP_CHANNEL | No | Set `chrome` to use your installed Chrome | |
| LEAP_STEALTH | No | Stealth mode (anti-bot evasion) — 19 patches | true |
| LEAP_ALLOW_JS | No | Allow JS evaluation in `extract` and `wait_for` | true |
| LEAP_HEADLESS | No | Set `false` to watch the browser | true |
| LEAP_HUMANIZE | No | Experimental. Human-like mouse movement, typing cadence, and scroll behavior. | false |
| LEAP_LOG_LEVEL | No | `debug` / `info` / `warn` / `error` | info |
| LEAP_CDP_STEALTH | No | CDP detection evasion (`Runtime.enable` filtering) | true |
| LEAP_AUTO_CONSENT | No | Auto-dismiss cookie consent banners (10 frameworks + fallback) | true |
| LEAP_IDLE_TIMEOUT | No | Session idle timeout in ms (30 min). Set `0` to disable. | 1800000 |
| LEAP_MAX_SESSIONS | No | Max concurrent sessions | 15 |
| LEAP_PROFILES_DIR | No | Directory for persistent browser profiles | ~/.leapfrog/chrome-profiles |
| LEAP_SIDECAR_PORT | No | Sidecar HTTP server port (used with tiling) | 9222 |
| LEAP_TILE_PADDING | No | Padding between tiled windows (px) | 8 |
| LEAP_ALLOW_EXECUTE | No | Allow the `execute` tool (sandboxed Playwright scripts) | true |
| LEAP_BLOCK_LOCALHOST | No | Block localhost/127.x.x.x (allowed by default for local dev) | false |
| LEAP_CAPTCHA_API_KEY | No | API key for the configured CAPTCHA provider | |
| LEAP_CAPTCHA_PROVIDER | No | External CAPTCHA solver: `capsolver` | `2captcha` | `nopecha` | |
| LEAP_MAX_SESSIONS_PER_CLIENT | No | Per-client session pool limit |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| session_createA | Create a new isolated browser session with its own cookies and state. Returns a short session ID (e.g. s_k3m7x1) to pass to all other tools. Each session is a separate BrowserContext — no cookie leakage between sessions. Pool limit: 15 concurrent sessions. Sessions auto-expire after 30 minutes of inactivity. Use keep-alive pattern (periodic navigate or snapshot) for long-running sessions. |
| session_list | List all active browser sessions with their URLs and idle times. |
| session_destroy | Close and clean up a browser session. Frees a pool slot. |
| session_save_profile | Save a session's cookies and auth state to disk. Use this after logging in to a site so future sessions can restore that login. Pass the returned profile path to session_create's profilePath to reuse it. |
| session_list_profilesB | List all saved authentication profiles. |
| navigateA | Navigate to a URL and return a compact accessibility snapshot with @eN refs. Refs like @e1, @e2 can be passed directly to the 'act' tool — no CSS selectors needed. Snapshots are ~200-500 tokens (vs 15,000 with Playwright MCP). |
| snapshotA | Re-snapshot the current page for fresh @eN refs. Use after 'act' when you need to re-orient, or scope to a region with 'selector'. Use 'selector' to dramatically reduce tokens (e.g. 'form', '#results'). |
| diffA | Compare the current page state against the last snapshot for this session. Returns only what changed (additions, removals, changes) — massive token savings vs a full re-snapshot. Use after 'act' instead of 'snapshot' when you just need to see what changed. On first call (no previous snapshot), returns the full snapshot with a note. Use 'selector' to scope the diff to a page region. |
| actA | Perform a browser interaction: click, fill, type, check, select, press key, scroll, hover, mousemove, drag, upload, resize, back, forward. Use @eN refs from navigate/snapshot as the target (e.g. '@e2'). CSS selectors also work. drag: requires target (source) and target2 (destination). upload: requires target (file input) and filePaths. resize: requires width and height (no target needed). holdDuration: for click, holds mouse down for N ms (long-press). Returns a fresh snapshot if the page navigated, or just the action result if it didn't. |
| screenshotB | Capture a screenshot of the current page. Returns the image inline as base64. Optionally save to disk with savePath. |
| extractA | Extract data from the page without a full snapshot. Types: text (visible text), html (markup), title, url, js (evaluate JavaScript). Use target with @eN or CSS selector for element-specific extraction. |
| pool_statusA | Show pool stats, resource usage (memory, uptime), and all active session summaries. Shows per-session idle time. Sessions approaching 30-minute idle timeout should be refreshed or saved. |
| network_logA | View captured HTTP requests/responses for a session. Shows method, status, URL, size, and timing. Filter by URL pattern, method, status range, or content-type. Network capture starts automatically when a session is created. |
| console_logA | View captured browser console messages (log, warn, error, info, debug). Console capture starts automatically when a session is created. Use level filter to focus on errors or warnings. |
| network_interceptA | Add or remove network intercept rules. Block requests (ads, trackers), mock API responses, or log specific traffic. Use action='remove' with ruleId to remove an existing rule. |
| wait_forA | Wait for a condition before proceeding. Supports: element visible, text appears, network idle, URL navigation, JS expression truthy. Returns a fresh snapshot after the wait completes. |
| tabs_listA | List all open tabs in a session. Shows index, URL, title, and which tab is active. New tabs (popups, OAuth windows) are automatically tracked. |
| tab_switchA | Switch to a different tab by index. Use -1 to switch to the most recently opened tab (useful for popups). Returns a snapshot of the newly active tab. |
| tab_closeA | Close a tab by index. Defaults to the active tab. Cannot close the last remaining tab. Returns a snapshot of the new active tab. |
| session_healthA | Check if a session is healthy (browser connected, page responsive). Omit sessionId to check all sessions. Quick diagnostic for debugging. |
| add_init_scriptA | Inject JavaScript that runs before every page load in a session. Persists across navigations (Playwright built-in behavior). Use for fingerprint overrides, custom stealth patches, or page instrumentation. |
| batch_actionsA | Execute multiple browser actions sequentially in a single MCP call. Eliminates round-trip overhead for humanization sequences (e.g. Bezier mouse paths, typed text with delays). Each action can have an optional delayAfter (ms) to pause between steps. Returns a single result with the outcome of each action. |
| executeA | Run a Playwright script with access to { page, context }. One tool call replaces 5-20 sequential MCP round trips. Use for complex flows with conditional logic, loops, error handling. NOTE: Scripts run in the Node.js process — equivalent to arbitrary code execution. Disable with LEAP_ALLOW_EXECUTE=false. |
| api_discoverA | List JSON APIs the page has called. Captured automatically from XHR/fetch traffic. Classifies into: data, tracking, auth, cdn, ads. |
| api_exportA | Generate an OpenAPI v3 spec from observed API traffic. Navigate pages first to capture traffic, then export. |
| session_memoryA | Recall what actions were performed in this session. Useful after context window compression to recover lost context. |
| profile_listA | List saved persistent browser profiles with their auth status. |
| profile_deleteA | Delete a saved persistent browser profile and all its data. |
| paginateA | Extract data across multiple pages in a single call. Handles click-next, infinite scroll, and URL-pattern pagination. Auto-detects 'next' buttons when nextSelector='auto'. Returns extracted content from each page plus metadata. Replaces 3-4 tool calls per page with one invocation. Cap: 50 pages, 100K total chars. |
| session_exportA | Export session action history as a replayable recording. Creates a JSON script from all mutating actions with @eN refs resolved to stable selectors. Use format='playwright' to get a Playwright JS script compatible with the execute tool. |
| session_replayA | Replay a recording in the current session. Executes each step directly against the browser. Override {{placeholder}} params with the params object. Set onError='skip' to continue past failures. |
| wait_for_humanA | Pause and request human intervention. Shows the @..@ overlay with your reason. Use when you encounter a CAPTCHA, login wall, or any situation requiring human action. The tool blocks until the user clicks 'Done' on the overlay. Returns success when resolved. |
| profile_warmA | Warm up a browser profile by browsing trusted sites (Google, Wikipedia, YouTube). Fresh profiles with zero history score near 0 on reCAPTCHA v3. A 60-90 second warm-up dramatically improves trust scores. Stores warm-up state in domain knowledge so it doesn't repeat. Must pass a sessionId of an existing session with a profile. |
| profile_import_from_chromeA | Connect to your real Chrome browser via CDP, capture its auth cookies, and save them as a Leapfrog profile. This gives you real Google auth, reCAPTCHA trust, and all your logged-in sessions — but in an isolated Leapfrog session, not your real browser. Start Chrome with: chrome --remote-debugging-port=9222 |
| domain_knowledgeA | Inspect what Leapfrog has learned about a website from previous visits. Shows stealth tier, wait strategy, block history, consent selector, API endpoints, and visit count. Pass no domain to list all known domains. |
| session_export_traceA | Export a Playwright trace file for a session. Requires LEAP_TRACE=true. The trace can be viewed at trace.playwright.dev for detailed action timeline. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/anthonybono21-cloud/leapfrog'
If you have feedback or need assistance with the MCP directory API, please join our Discord server