Gives Claude native browser control through Zen Browser via the ZenLink extension and bridge. The real power is in parallel multi-tab orchestration: you can run operations across dozens of tabs simultaneously without focus-stealing, using primitives like zen_broadcast, zen_sync_barrier, and zen_parallel. Ships 75+ tools covering extraction (zen_readability, zen_markdown for token-efficient content), interaction (zen_trusted_click, zen_form_fill), network interception to block analytics, and session save/restore for auth-once-use-many workflows. Reach for this when you need actual concurrent browser automation, not sequential tab switching, or when you want to extract page content as clean markdown instead of burning tokens on raw HTML.
MCP server for browser automation via ZenLink — gives Claude Desktop and other MCP clients native browser control through Zen Browser (Firefox-based).
v2.0.0 ships ~50 new tools for parallel agentic work: real multi-tab parallelism, tab unloader defense, session save/restore, Readability + Markdown extraction, request interception, cookies/storage, and orchestration primitives (broadcast, sync barriers, tab pools, named tags). See CHANGELOG.md for the full list.
pip install zenlink-mcp
python native/bridge.py)Every tab-aware tool below accepts an optional tab_id parameter — pass it to drive a specific tab without stealing focus, the foundation for parallel multi-tab work.
zen_status, zen_health, zen_tabs, zen_new_tab, zen_close_tab, zen_switch_tab, zen_navigate, zen_screenshot
zen_page_text, zen_page_info, zen_readability, zen_markdown, zen_query, zen_html, zen_links, zen_images, zen_meta, zen_structured_data, zen_bounds, zen_computed_style, zen_dom, zen_forms, zen_iframes, zen_explain_selector, zen_full_page_metrics
zen_click, zen_trusted_click, zen_double_click, zen_type, zen_fill, zen_form_fill, zen_set_editable_content, zen_select_option, zen_check, zen_focus, zen_blur, zen_keypress, zen_submit_form, zen_drag, zen_hover, zen_scroll, zen_find, zen_highlight, zen_click_and_wait_navigation
zen_screenshot, zen_element_screenshot, zen_full_page_screenshot
zen_pin_tab, zen_mute_tab, zen_duplicate_tab, zen_reload_tab, zen_back, zen_forward, zen_get_zoom, zen_set_zoom, zen_windows, zen_create_window, zen_close_window, zen_focus_window, zen_move_tab, zen_detach_tab
zen_cookies, zen_storage (local/session), zen_clipboard, zen_downloads, zen_clear_browsing_data, zen_intercept, zen_capture_network, zen_wait_for_network_idle, zen_wait_for_url, zen_wait_for_title, zen_watch_console, zen_console_logs
zen_save_session, zen_load_session, zen_list_sessions, zen_delete_session
zen_keep_alive, zen_keep_alive_stop, zen_wake_tab, zen_broadcast, zen_sync_barrier, zen_tag_tab, zen_resolve_tag, zen_list_tags, zen_untag_tab, zen_tab_pool, zen_pool_acquire, zen_pool_release, zen_parallel
zen_batch (with parallel, if, while, try, sequence, retry, ${$N.field} variable substitution)
zen_logs, zen_audit, zen_set_policy, zen_get_policy, zen_retry, zen_reload_extension
zen_wait_for_element, zen_wait_for_result, zen_wait_for_url, zen_wait_for_title, zen_wait_for_network_idle
zen_workflows, zen_workflow, zen_cache, zen_wp_html
zen_wait_for_elementWaits for a CSS selector to appear and become visible on the page. Returns immediately when found rather than sleeping a fixed duration — use this instead of sleep when waiting for dynamic/JS-rendered content.
{"action": "waitForElement", "selector": ".tracking-events", "timeout": 10000}
| Parameter | Type | Default | Description |
|---|---|---|---|
selector | string | required | CSS selector to wait for |
timeout | int | 10000 | Max wait time in milliseconds |
poll_interval | int | 200 | How often to check in milliseconds |
Returns { ok: true, found: true, elapsed: 342, ref: "r12", tag: "div" } on success, or { ok: false, found: false, error: "Timed out after 10000ms" } on timeout.
zen_batchRun multiple commands in one request. Supports all actions including waitForElement, trustedClick, and sleep:
[
{"action": "navigate", "url": "https://example.com"},
{"action": "waitForElement", "selector": ".results", "timeout": 8000},
{"action": "pageText"}
]
Add to your claude_desktop_config.json:
{
"mcpServers": {
"zenlink": {
"command": "zenlink-mcp"
}
}
}
See CHANGELOG.md for the full history. Highlights of v2.0.0:
zen_parallel + zen_keep_alivezen_intercept to block analytics/ads (3–10× page speedup in agent runs)zen_readability + zen_markdown for token-efficient page extractionzen_reload_extensionmcp-name: io.github.JayQuan-McCleary/zenlink-mcp
therealtimex/browser-use
jae-jae/fetcher-mcp
merajmehrabi/puppeteer-mcp-server
com.thenextgennexus/playwright-mcp-server
saik0s/mcp-browser-use