# ZenLink MCP

> Browser automation for MCP clients via Zen Browser or Firefox.

- **Type:** MCP server
- **Install:** `agentstack add mcp-jayquan-mccleary-zenlink-mcp`
- **Verified:** Pending review
- **Seller:** [JayQuan-McCleary](https://agentstack.voostack.com/s/jayquan-mccleary)
- **Installs:** 0
- **Latest version:** 1.0.3
- **License:** MIT
- **Upstream author:** [JayQuan-McCleary](https://github.com/JayQuan-McCleary)
- **Source:** https://github.com/JayQuan-McCleary/ZenLink-MCP

## Install

```sh
agentstack add mcp-jayquan-mccleary-zenlink-mcp
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# ZenLink MCP

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](CHANGELOG.md) for the full list.

## Installation

```bash
pip install zenlink-mcp
```

## Requirements

- [ZenLink browser extension](https://github.com/JayQuan-McCleary/ZenLink) **v2.0.0+** installed in Zen Browser
- ZenLink bridge running (`python native/bridge.py`)

## Tool surface (75+ tools)

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.

### Core
`zen_status`, `zen_health`, `zen_tabs`, `zen_new_tab`, `zen_close_tab`, `zen_switch_tab`, `zen_navigate`, `zen_screenshot`

### Content extraction (read once, work cheaply)
`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`

### Interaction
`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`

### Visual
`zen_screenshot`, `zen_element_screenshot`, `zen_full_page_screenshot`

### Tab and window management
`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`

### Network, cookies, state
`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`

### Sessions (auth-once-use-many)
`zen_save_session`, `zen_load_session`, `zen_list_sessions`, `zen_delete_session`

### Orchestration (parallel multi-tab)
`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`

### Batch / scripting
`zen_batch` (with `parallel`, `if`, `while`, `try`, `sequence`, `retry`, `${$N.field}` variable substitution)

### Observability / policy
`zen_logs`, `zen_audit`, `zen_set_policy`, `zen_get_policy`, `zen_retry`, `zen_reload_extension`

### Wait primitives
`zen_wait_for_element`, `zen_wait_for_result`, `zen_wait_for_url`, `zen_wait_for_title`, `zen_wait_for_network_idle`

### Workflow
`zen_workflows`, `zen_workflow`, `zen_cache`, `zen_wp_html`

### `zen_wait_for_element`

Waits 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.

```json
{"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_batch`

Run multiple commands in one request. Supports all actions including `waitForElement`, `trustedClick`, and `sleep`:

```json
[
  {"action": "navigate", "url": "https://example.com"},
  {"action": "waitForElement", "selector": ".results", "timeout": 8000},
  {"action": "pageText"}
]
```

## Claude Desktop Setup

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "zenlink": {
      "command": "zenlink-mcp"
    }
  }
}
```

## Changelog

See [CHANGELOG.md](CHANGELOG.md) for the full history. Highlights of v2.0.0:

- ~50 new MCP tools across content extraction, interaction, network, sessions, orchestration
- Real parallel multi-tab work via `zen_parallel` + `zen_keep_alive`
- Session save/restore for auth-once-use-many flows
- `zen_intercept` to block analytics/ads (3–10× page speedup in agent runs)
- `zen_readability` + `zen_markdown` for token-efficient page extraction
- Hot reload via `zen_reload_extension`

## Links

- [ZenLink Bridge & Extension](https://github.com/JayQuan-McCleary/ZenLink)
- [MCP Registry](https://registry.modelcontextprotocol.io)

mcp-name: io.github.JayQuan-McCleary/zenlink-mcp

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [JayQuan-McCleary](https://github.com/JayQuan-McCleary)
- **Source:** [JayQuan-McCleary/ZenLink-MCP](https://github.com/JayQuan-McCleary/ZenLink-MCP)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Versions

- **1.0.3** — security scan: pending review — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-jayquan-mccleary-zenlink-mcp
- Seller: https://agentstack.voostack.com/s/jayquan-mccleary
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
