Skip to main content

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_send escape hatch.

Note: the PyPI distribution is pydoll-browser-mcp (the older pydoll-mcp name belongs to an unrelated project). The Python import package is pydoll_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

pydoll_browser_mcp-0.1.0.tar.gz (30.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydoll_browser_mcp-0.1.0-py3-none-any.whl (38.0 kB view details)

Uploaded Python 3

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

Hashes for pydoll_browser_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2985243bf8d2aabfb532b3751abd9c87727f99c70247918d64776627b97efc5e
MD5 f038cf96a9f724463b587641ed57ebb0
BLAKE2b-256 f95f168f8644e45d4baef24e83d9648683453372e60ec85805bfe5d9f55fd299

See more details on using hashes here.

File details

Details for the file pydoll_browser_mcp-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pydoll_browser_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a7b6d40afdda6822f58f027399b3ce01ca0d95680ecbccebd7b33d3823a3e5e7
MD5 f80a5639964868f7edcd03f9cb8dee5a
BLAKE2b-256 93e4b5e42cd1aaffae00b3ef0624beac34bba019f0dc9851be1441fe32b9d291

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.0

2 files

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page