DrissionPage MCP: browser control
DrissionPage MCP Server
A Python MCP server for Codex, Claude Code and Cursor: 69 atomic tools for driving Chromium on top of DrissionPage, with page and network observation
- 484 ★ on the repository
- Last commit
Broad access
Why this level
- The agent drives a real browser: cookies, storage and file uploads are in reach and forms can be submitted from your session
- The package combines tools for request headers, user agent override and passing checks like Turnstile: use them only on your own or permitted sites
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add mcp/drissionpage-mcp-serverDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The agent drives a real browser: cookies, storage and file uploads are in reach and forms can be submitted from your session
- The package combines tools for request headers, user agent override and passing checks like Turnstile: use them only on your own or permitted sites
This is third-party code. Review the repository files before installing.
What it does
The server opens a Chromium browser through DrissionPage and gives an agent 69 typed tools. They fall into groups: navigation and tabs, element lookup and actions, page snapshots and the accessibility tree, frames and Shadow DOM, cookies and storage, waits, network observation, dialogs and permissions. The author's idea is that the model decides what to do and the server executes the operation exactly. When a page has reliable selectors, use them. For canvases, maps and charts the agent takes coordinates from a screenshot and calls page_click_xy. Pointer motion has two profiles: direct in one jump and natural along a deterministic 24-step curve. The core has no random jitter and no protection-evasion logic. Site-specific scenarios live outside the core in optional skills. The repository has three examples: diagnosing a cross-origin iframe, testing your own Cloudflare Turnstile integration and researching public Xiaohongshu notes. The server does not execute skills; they are Markdown instructions for the host.
Who it is for. For developers and testers who need to drive Chromium from Codex, Claude Code or Cursor, especially on pages with iframes, Shadow DOM and canvases.
Good fit when
- You want to test your own site: fill a form, inspect network requests and console output
- An element sits in a cross-origin frame or in Shadow DOM and general tools cannot see it
- The interface is drawn on a canvas or a map, so clicks have to be placed by coordinates
- You need to keep a downloaded file or a PDF with a SHA-256 checksum in a managed folder
- You are setting up a check of your own Cloudflare Turnstile integration with test keys
Not a fit when
- You need anti-bot evasion or a ready scenario for someone else's site: the core has neither
- Your browser is not Chromium: Chrome or Chromium is required
- Reading a page is enough: a service that returns Markdown text is faster
- The task is bulk collection from other people's sites without permission: the author aims the server at authorized testing, accessibility and technical research
Example request
Open my test site, fill in the login form with a test user and show which network requests went out on submitMCP
- Transport
- stdio
- Authentication
- not required
Environment variables
CHROME_PATH- Path to Chrome or Chromium when it is not found automatically
DP_HEADLESS- A value of 1 turns on windowless mode
DP_MCP_DOWNLOAD_ROOT- Directory for downloaded files
DP_MCP_UPLOAD_ROOT- Directory of files allowed to be uploaded to pages
DP_MCP_SCREENSHOT_ROOT- Directory for saved screenshots
DP_MCP_ARTIFACT_ROOT- Directory for PDF and MHTML artifacts with checksums
Limitations
- Python 3.10 or newer and an installed Chrome or Chromium are required. The doctor command runs diagnostics, and with --launch-browser it also checks that the browser starts.
- All 69 tools load at once, with no capability profiles or full mode.
- The content of a cross-origin iframe is not always readable: frame_list reports whether the document is accessible, otherwise geometry and coordinates remain.
- Downloads, uploads, screenshots and artifacts are confined to the directories named by DP_MCP_DOWNLOAD_ROOT, DP_MCP_UPLOAD_ROOT, DP_MCP_SCREENSHOT_ROOT and DP_MCP_ARTIFACT_ROOT.
- pyproject declares the Apache-2.0 license, while GitHub detects it as NOASSERTION.
How to disable. Remove the drissionpage block from the client configuration: the mcp_servers section in config.toml for Codex, the mcpServers block for others. The package is removed with pip uninstall drissionpage-mcp.
FAQ
How do I install DrissionPage MCP in Claude Code?
Run python -m pip install -U "drissionpage-mcp>=0.8.8", check drissionpage-mcp --version and drissionpage-mcp doctor, then add a server with the command drissionpage-mcp to the MCP configuration. If the command is not on PATH, give the full Python path with the arguments -m drissionpage_mcp.cli.
How do the two pointer motion profiles differ?
The direct profile makes one exact move. The natural profile builds a deterministic 24-step curve with 8-14 ms pauses and an exact landing on the target. There is no randomness: the same start, target and profile give the same path.
What are the optional skills in this repository?
They are instructions in skills/<name>/SKILL.md for scenarios built on the general tools: cross-origin-iframe-probe, turnstile-testing and xiaohongshu-content-research. The server does not run them. The catalog can be installed with install.py and --client codex or --client claude.
Which environment variables does the server read?
CHROME_PATH sets the browser and DP_HEADLESS turns on windowless mode. Directories for downloads, uploads, screenshots and artifacts are set by DP_MCP_DOWNLOAD_ROOT, DP_MCP_UPLOAD_ROOT, DP_MCP_SCREENSHOT_ROOT and DP_MCP_ARTIFACT_ROOT.
Does the server show cookie and storage values?
Not by default. The cookie and storage tools return values redacted and reveal them only on an explicit parameter, such as include_values=true for storage.
Discussion
No questions or reviews yet.
Related
MCP serversAn MCP server and Chrome extension that let the agent drive your already open browser with your logged-in sessions, all locally
A Chrome extension with an MCP server: the agent drives your everyday browser with its sessions, tabs, bookmarks and history
The Chrome DevTools team's official MCP server: the agent drives a live Chrome, reads network and console, and records performance traces
An MCP server that opens pages in headless Chromium through Playwright and hands the agent the main text as Markdown, even from JavaScript-heavy sites
An MCP server that drives your already open Chrome and stops to ask you about a 2FA code, a CAPTCHA, or a choice only you can make
A Python Chrome MCP: the agent connects to Chrome over the DevTools Protocol, reads network, console and cookies, runs JavaScript and takes page metrics
Comparison with similar tools
Entries that share the main search query, and how they differ.
| Entry | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| DrissionPage MCP: browser control (this entry) | no | not required | 484 | |
| Playwright MCP Server | no | not required | 5,671 | drives a browser through Playwright from ExecuteAutomation, without the DrissionPage engine |
| Chrome DevTools MCP | yes | not required | 54,001 | the official Chrome DevTools team server for debugging and profiling a live Chrome |
| Browser Use | no | 118,910 | a CLI, skill and Python library in which the agent drives the browser by itself |
README in short
The README opens with the principle: the model decides, the server executes, and component or site scenarios stay in the client or in skills. Then come installation from PyPI, the doctor check, setup for Codex in TOML and for other clients in JSON, the full tool list by group and a table of example skills with stop boundaries. Below are quality checks: browser-backed tests, code coverage of at least 95 percent and an interactive lab for viewing pointer motion.