MCP server for browser automation via ZenLink - gives Claude Desktop and other MCP clients native browser control.
Project description
ZenLink-MCP
MCP server that gives Claude Desktop (and any MCP client) native browser control through ZenLink.
Instead of shell commands and HTTP calls, every ZenLink action becomes a native tool - faster, cleaner, no overhead.
Prerequisites
- ZenLink installed and bridge running (
python native/bridge.py) - Zen Browser or Firefox with the ZenLink extension loaded
- Python 3.10+
Install
pip install zenlink-mcp
Setup for Claude Desktop
Add to your config file:
Windows: %APPDATA%\Claude\claude_desktop_config.json
Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"zenlink": {
"command": "zenlink-mcp"
}
}
}
Restart Claude Desktop. ZenLink tools will appear in the tools menu.
Alternative (run from source)
{
"mcpServers": {
"zenlink": {
"command": "python",
"args": ["/path/to/ZenLink-MCP/src/zenlink_mcp/server.py"]
}
}
}
How It Works
Claude Desktop / Any MCP Client
-
- MCP (stdio) - native tool calls
?
ZenLink-MCP (this server)
-
- HTTP to localhost:8765
?
ZenLink Bridge ? Browser Extension ? Web Page
No shell spawning. No curl. Just direct tool calls returning clean JSON.
Available Tools (22)
Reading
| Tool | Description |
|---|---|
zen_status |
Check bridge + extension connection |
zen_tabs |
List all open tabs with IDs |
zen_page_info |
URL, title, dimensions, scroll position |
zen_page_text |
Extract readable text from page |
zen_forms |
All form fields with labels and values |
zen_dom |
Accessibility tree |
zen_screenshot |
Capture viewport as PNG |
Navigation
| Tool | Description |
|---|---|
zen_navigate(url) |
Load URL in active tab |
zen_new_tab(url) |
Open new tab |
zen_close_tab(tab_id) |
Close tab by ID |
zen_switch_tab(tab_id) |
Focus a tab |
Interaction
| Tool | Description |
|---|---|
zen_click(selector, x, y) |
Click by selector or coordinates |
zen_type(selector, text, clear) |
Type into input |
zen_fill(selector, value) |
Set form field value |
zen_scroll(direction, amount) |
Scroll page |
zen_hover(selector) |
Hover over element |
Smart Queries
| Tool | Description |
|---|---|
zen_find(query) |
Find elements by natural language |
zen_js(code) |
Execute JavaScript in page context |
zen_highlight(selector) |
Visual overlay on element |
zen_batch(commands) |
Multiple commands in one call |
Example
You: "Open Wikipedia and search for ducks"
Claude calls:
zen_navigate("https://en.wikipedia.org")zen_fill("#searchInput", "Duck")zen_click("#searchButton")zen_page_text()? reads the article
No shell commands. Just native tool calls.
Why separate from ZenLink?
ZenLink is the universal HTTP bridge - works with any language, any tool, any AI.
ZenLink-MCP is the MCP wrapper. Keeping them separate means:
- ZenLink stays clean and universal
- MCP users get a focused, easy setup
- Updates to either don't break the other
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zenlink_mcp-1.0.0.tar.gz.
File metadata
- Download URL: zenlink_mcp-1.0.0.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9aee60f3d300f302e20ad185a4b9867c6bd9f9c7718cc549833adffb71785b07
|
|
| MD5 |
d80fd3d0b8b0b94499bd5e82630aa107
|
|
| BLAKE2b-256 |
cd5b413d8e0acd9ceef7d74015cedd8e68678346cd27a1af9efca79d16986a8b
|
File details
Details for the file zenlink_mcp-1.0.0-py3-none-any.whl.
File metadata
- Download URL: zenlink_mcp-1.0.0-py3-none-any.whl
- Upload date:
- Size: 6.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
725b355fb2bac361c94a6d99376638e88940f662e7e46030091e706fcf910907
|
|
| MD5 |
13c71dcccfcaf1033956430fec5d7aad
|
|
| BLAKE2b-256 |
e40cdbbc9c5ad451b7945d08d372474109b9eeb647e0a9fbfb2983d9f4513854
|