pydoll-browser-mcp
An MCP server for browser automation built on pydoll (real Chrome/Edge over CDP) with:
- multi-context and multi-tab control,
- per-context proxies (isolated cookies/storage per identity),
- a large tool surface covering navigation, elements, network, storage, devtools,
stealth, HTTP-via-browser and a raw
cdp_sendescape hatch.
Note: the PyPI distribution is
pydoll-browser-mcp(the olderpydoll-mcpname belongs to an unrelated project). The Python import package ispydoll_mcp.
Install / run (no project files needed)
Once published, run it straight from PyPI with uv:
uvx pydoll-browser-mcp
or with pipx:
pipx run pydoll-browser-mcp
Both download the server + dependencies into an isolated environment and run it over stdio, so nothing is added to the user's project directory. To install it permanently:
uv tool install pydoll-browser-mcp # or: pipx install pydoll-browser-mcp
Development install (this repo)
python -m venv .venv
.venv\Scripts\python -m pip install -e .
.venv\Scripts\python -m pydoll_mcp.server
opencode config
Published (isolated, no project files):
{
"mcp": {
"pydoll": {
"type": "local",
"command": ["uvx", "pydoll-browser-mcp"],
"enabled": true
}
}
}
Local checkout / venv:
{
"mcp": {
"pydoll": {
"type": "local",
"command": ["C:\\path\\to\\pydoll-mcp\\.venv\\Scripts\\python.exe", "-m", "pydoll_mcp.server"],
"environment": { "PYDOLL_MCP_PROFILE": "full", "PYDOLL_MCP_HEADLESS": "true" },
"enabled": true
}
}
}
Profiles
PYDOLL_MCP_PROFILE selects the default tool set: core, balanced (default) or full.
balanced = core + network + storage + meta. full also enables input, stealth, devtools, http.
Configuration (environment)
| Variable | Default | Purpose |
|---|---|---|
PYDOLL_MCP_BROWSER |
chrome |
chrome or edge |
PYDOLL_MCP_HEADLESS |
true |
headless new mode |
PYDOLL_MCP_PROFILE |
balanced |
tool profile |
PYDOLL_MCP_EXECUTABLE_PATH |
explicit browser binary | |
PYDOLL_MCP_USER_DATA_DIR |
persistent profile dir | |
PYDOLL_MCP_OUTPUT_DIR |
~/.pydoll-mcp/output |
screenshots/PDFs/downloads |
PYDOLL_MCP_ALLOW_JS |
true |
enable tab_execute_script |
PYDOLL_MCP_ALLOW_CDP |
true |
enable cdp_send |
PYDOLL_MCP_ALLOW_FILE_ACCESS |
true |
allow file inputs/PDF output |
PYDOLL_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS |
false |
disable the file jail |
PYDOLL_MCP_FILE_ROOTS |
output dir + cwd | comma-separated allowed roots |
Proxies
context_create(proxy_server="host:port:user:password") gives that context its own egress IP.
context_create(proxy_server="http://user:pass@host:port") and socks5://host:port also work.
Use proxy_test(proxy_server=...) to verify the egress IP before a run. Note: Chrome does not
support authenticated SOCKS5; use an unauthenticated local forwarder for that case.
Session persistence
Use context_storage_state_export / context_storage_state_import to move cookies + localStorage
between runs or machines. (Chrome profile-dir persistence is unreliable because pydoll force-stops
the process after Browser.close.)
Development
python -m venv .venv
.venv\Scripts\python -m pip install -e ".[dev]"
Test harnesses (require Chrome; some hit the network / use proxies):
.venv\Scripts\python tests\live_check.py # every tool category, local fixture
.venv\Scripts\python tests\deep_check.py # 155 checks, asserts 100% tool coverage
.venv\Scripts\python tests\ultra_check.py # multi-browser, isolated contexts, persistence, stress
.venv\Scripts\python tests\stdio_check.py # real MCP stdio handshake
.venv\Scripts\python tests\proxy_check.py # per-context proxy egress
Publishing
python -m pip install build twine
python -m build
twine check dist/*
twine upload dist/* # prompts for a PyPI API token (username: __token__)
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 pydoll_browser_mcp-0.1.0.tar.gz.
File metadata
- Download URL: pydoll_browser_mcp-0.1.0.tar.gz
- Upload date:
- Size: 30.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2985243bf8d2aabfb532b3751abd9c87727f99c70247918d64776627b97efc5e
|
|
| MD5 |
f038cf96a9f724463b587641ed57ebb0
|
|
| BLAKE2b-256 |
f95f168f8644e45d4baef24e83d9648683453372e60ec85805bfe5d9f55fd299
|
File details
Details for the file pydoll_browser_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pydoll_browser_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 38.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7b6d40afdda6822f58f027399b3ce01ca0d95680ecbccebd7b33d3823a3e5e7
|
|
| MD5 |
f80a5639964868f7edcd03f9cb8dee5a
|
|
| BLAKE2b-256 |
93e4b5e42cd1aaffae00b3ef0624beac34bba019f0dc9851be1441fe32b9d291
|