Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

DrissionPage MCP

PYPI · DRISSIONPAGE-MCP

Local browser automation for MCP clients powered by DrissionPage.

Available components

+1 this week 96 Trust /100

Last scanned (16 hours ago)

Scores higher than 99% of PyPI servers

Category Browser Automation

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs setuptools.build_meta at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 1 of 43 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to jumodada/Drissionpage-MCP-Server). View diagnostics → Pass
  • Clear OSI-approved license (Apache-2.0).Pass
  • Actively maintained (last published 36 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability89
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Tool/resource definitions use about 4571 tokens (~65/item across 70 items; 69 tools + 1 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management93
  • Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage91
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 69% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 70 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 15 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 13 Oct 26 +12
    • Known CVEs: unverified → pass ▲ security
    • Dependency health: unverified → 0.99 ▲ functional
  • 12 Oct 26 −12
    • Known CVEs: pass → unverified ▼ security
    • Dependency health: 0.99 → unverified ▼ functional
  • 6 Oct 26 −2
    • Stability: pass → 0.83 functional
  • 4 Oct 26 0
    • Stability: 0.97 → pass security
  • 3 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 29 Sept 26 +11
    • Provenance: unverified → pass ▲ security
    • The attested source repository moved: jumodada/Drissionpage-MCP-Server security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 16 Oct 2026 · Analysed pypi/drissionpage-mcp@0.8.5

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo jumodada/Drissionpage-MCP-Server
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/jumodada/Drissionpage-MCP-Server/.github/workflows/publish-mcp-registry.yml@refs/tags/v0.8.5
Rekor log index 2546208681
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:3468ff41b895b2dc66ef3b26d48f4d17dd9ca4b03a7416f7db8e5a2e381febc1

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted setuptools.build_meta

Background: Why install scripts are a supply-chain risk →

Dependencies 43 packages
Packages resolved 43
Stale 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 69 exposed · ~4,553 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
browser_cache_clear ~19

Clear HTTP cache without clearing cookies or Web Storage.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

browser_cookies_clear ~19

Clear all cookies from the active browser context.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

browser_cookies_delete ~44

Delete one named browser cookie with optional URL/domain/path scope.

NameTypeReqDescription
domain–––
namestringyes–
path–––
url–––

Structured output declared, but exposes no named fields.

No examples provided.

browser_cookies_get ~55

Read normalized cookies with values redacted by default.

NameTypeReqDescription
all_domainsboolean––
all_infoboolean––
include_valuesboolean–Return cookie values. Defaults to false to avoid leaking secrets.

Structured output declared, but exposes no named fields.

No examples provided.

browser_cookies_set ~39

Set a bounded batch of browser cookies. The successful result echoes cookie values by default for MCP callbacks and verification.

NameTypeReqDescription
cookiesarrayyes–

Structured output declared, but exposes no named fields.

No examples provided.

browser_headers_set ~52

Replace extra HTTP request headers for the current tab. Successful results echo header values for MCP callbacks; an empty object clears them.

NameTypeReqDescription
headersobjectyesExtra request headers. An empty object clears all configured values.

Structured output declared, but exposes no named fields.

No examples provided.

browser_permission_get ~33

Query one browser permission state for the current document origin without opening an operating-system prompt.

NameTypeReqDescription
permissionstringyes–

Structured output declared, but exposes no named fields.

No examples provided.

browser_permission_set ~60

Set one permission to granted, denied, or prompt for one bounded origin in the current Chromium context.

NameTypeReqDescription
origin––Exact HTTP(S) origin. Defaults to the current page origin.
permissionstringyes–
settingstringyes–

Structured output declared, but exposes no named fields.

No examples provided.

browser_permissions_reset ~20

Reset all Chromium permission overrides in the current browser context.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

browser_user_agent_set ~44

Override the current tab user agent and optional platform, returning the previous user agent so callers can restore it.

NameTypeReqDescription
platform–––
user_agentstringyes–

Structured output declared, but exposes no named fields.

No examples provided.

element_check ~60

Set a checkbox or radio element to checked/unchecked.

NameTypeReqDescription
by_jsboolean–Use JavaScript-backed checking.
checkedboolean–Desired checked state.
selector–yesString locator or structured checkbox target.
timeoutnumber––

Structured output declared, but exposes no named fields.

No examples provided.

element_click ~131

Click an element found by CSS selector or XPath. Bare selectors are treated as CSS; use text:... for text matching.

NameTypeReqDescription
buttonstring–Native pointer button to use.
click_countinteger–Native click count; 2 requests double-click semantics.
observeboolean–Return a compact before/after page change summary.
selector–yesCSS selector or XPath to find the element. Bare selectors are CSS; use text:... for text matching or explicit tag:/css:/xpath:/@attr locators.
timeoutnumber–Timeout in seconds to wait for element

Structured output declared, but exposes no named fields.

No examples provided.

element_click_and_download ~130

Perform one selector, coordinate, or keyboard trigger, await one completed download, and return an integrity-checked safe artifact receipt.

NameTypeReqDescription
expected_filename––Optional exact basename constraint for the downloaded artifact.
expected_mime_type––Optional MIME constraint inferred from the completed filename.
operation_key––Optional live-task key. Reusing the same key replays the frozen artifact result without clicking again.
selector–yesSelector/accessibility target, viewport coordinate click, or keyboard input that starts one download.
timeoutnumber–Shared maximum seconds for target resolution, click, and download completion.

Structured output declared, but exposes no named fields.

No examples provided.

element_click_and_upload ~64

Arm Chromium's file chooser, click one trigger, inject approved files, and always remove interception without opening a native operating-system picker.

NameTypeReqDescription
pathsarrayyes–
selector–yesSelector/accessibility target that opens a file chooser.
timeoutnumber––

Structured output declared, but exposes no named fields.

No examples provided.

element_find ~87

Find an element on the page using CSS selector or XPath. Bare selectors are treated as CSS; use text:... for text matching.

NameTypeReqDescription
selector–yesCSS selector or XPath to find the element. Bare selectors are CSS; use text:... for text matching or explicit tag:/css:/xpath:/@attr locators.
timeoutnumber–Timeout in seconds to wait for element

Structured output declared, but exposes no named fields.

No examples provided.

element_find_all ~86

Find multiple matching elements with bounded text/attribute summaries and recommended selectors for repeated lists, cards, and tables.

NameTypeReqDescription
include_htmlboolean–Include bounded outerHTML excerpts for each returned element
limitinteger–Maximum number of matched elements to return
selector–yesCSS selector, XPath, or explicit DrissionPage locator for repeated elements. Bare selectors are CSS.

Structured output declared, but exposes no named fields.

No examples provided.

element_get_attribute ~66

Get an attribute value from an element

NameTypeReqDescription
attributestringyesAttribute name to retrieve
selector–yesCSS selector or XPath to find the element. Bare selectors are CSS; use text:... for text matching or explicit tag:/css:/xpath:/@attr locators.

Structured output declared, but exposes no named fields.

No examples provided.

element_get_html ~46

Get HTML from an element or the whole page

NameTypeReqDescription
selector––CSS selector or XPath; empty means whole page. Bare selectors are CSS; use text:... for text matching.

Structured output declared, but exposes no named fields.

No examples provided.

element_get_property ~81

Get a live DOM property value from an element, such as an input's current value

NameTypeReqDescription
propertystringyesDOM property to retrieve, e.g. value
selector–yesCSS selector or XPath to find the element. Bare selectors are CSS; use text:... for text matching or explicit tag:/css:/xpath:/@attr locators.

Structured output declared, but exposes no named fields.

No examples provided.

element_get_text ~46

Get text from an element or the whole page

NameTypeReqDescription
selector––CSS selector or XPath; empty means whole page. Bare selectors are CSS; use text:... for text matching.

Structured output declared, but exposes no named fields.

No examples provided.

element_hover ~53

Move the mouse over an element.

NameTypeReqDescription
offset_x––Optional hover X offset.
offset_y––Optional hover Y offset.
selector–yesString locator or structured element target.
timeoutnumber––

Structured output declared, but exposes no named fields.

No examples provided.

element_scroll_into_view ~52

Scroll an element into the viewport before a later action.

NameTypeReqDescription
centerboolean–Center the element in the viewport.
selector–yesString locator or structured element target.
timeoutnumber––

Structured output declared, but exposes no named fields.

No examples provided.

element_select ~71

Select an option from a select element by value, text, or index.

NameTypeReqDescription
bystring–Select by value, text, or index.
selector–yesString locator or structured select target.
timeoutnumber––
valuestringyesOption value, text, or index string.

Structured output declared, but exposes no named fields.

No examples provided.

element_state_get ~52

Return DrissionPage element state and page/viewport geometry for a selector or accessibility target.

NameTypeReqDescription
selector–yesString locator or structured selector/accessibility target with frame and shadow scope.
timeoutnumber––

Structured output declared, but exposes no named fields.

No examples provided.

element_type ~110

Type text into an input element

NameTypeReqDescription
clearboolean–Clear existing input content before typing
observeboolean–Return a compact before/after page change summary.
selector–yesCSS selector or XPath to find the input element. Bare selectors are CSS; use text:... for text matching or explicit tag:/css:/xpath:/@attr locators.
textstringyesText to type into the element
timeoutnumber–Timeout in seconds to wait for element

Structured output declared, but exposes no named fields.

No examples provided.

element_upload_file ~100

Set files on an input[type=file]. Paths must exist under DP_MCP_UPLOAD_ROOT and response data only returns safe file names.

NameTypeReqDescription
pathsarrayyesOne or more local file paths under DP_MCP_UPLOAD_ROOT. Absolute paths are accepted but never echoed back in tool results.
selector–yesCSS/XPath/DrissionPage locator for an input[type=file].
timeoutnumber–Timeout in seconds to wait for the file input.

Structured output declared, but exposes no named fields.

No examples provided.

frame_find ~56

Find an element inside a selected iframe/frame without global frame state.

NameTypeReqDescription
frame_indexinteger––
frame_selectorstring––
selectorstringyesSelector inside the target frame.
timeoutnumber––

Structured output declared, but exposes no named fields.

No examples provided.

frame_list ~28

List iframe/frame contexts on the current page without changing global state.

NameTypeReqDescription
limitinteger––

Structured output declared, but exposes no named fields.

No examples provided.

frame_snapshot ~83

Return a bounded page outline from a selected iframe/frame.

NameTypeReqDescription
frame_indexinteger–Zero-based frame index.
frame_selectorstring–Optional iframe/frame selector. When empty, frame_index is used.
include_htmlboolean––
max_elementsinteger––
max_text_charsinteger––
timeoutnumber––

Structured output declared, but exposes no named fields.

No examples provided.

keyboard_press ~57

Send keyboard text/keys to the active page element without echoing the input in the result.

NameTypeReqDescription
intervalnumber–Optional interval between key events in seconds.
keysstringyesText or DrissionPage key string to send.

Structured output declared, but exposes no named fields.

No examples provided.

network_blocked_urls_set ~50

Replace URL patterns blocked for the current tab. Successful results echo patterns; an empty list clears them.

NameTypeReqDescription
urlsarrayyesURL patterns with optional wildcards. An empty list clears them.

Structured output declared, but exposes no named fields.

No examples provided.

network_listen_start ~124

Start beta HTTP/XHR/Fetch network observation for the active tab. This observes packets only; it does not intercept or modify requests.

NameTypeReqDescription
clearboolean–Clear any existing listener queue before starting.
is_regexboolean–Treat targets as regular expressions when targets are provided.
methodstring–Optional HTTP method filter such as GET or POST.
resource_typestring–Optional resource type filter such as Fetch, XHR, or Document.
targetsarray–Optional URL substrings or regex patterns passed to DrissionPage.

Structured output declared, but exposes no named fields.

No examples provided.

network_listen_stop ~36

Stop beta network observation for the active tab and optionally clear it.

NameTypeReqDescription
clearboolean–Clear the listener queue while stopping.

Structured output declared, but exposes no named fields.

No examples provided.

network_listen_wait ~114

Wait for observed HTTP/XHR/Fetch packets and return bounded metadata. Bodies and headers are opt-in and sensitive headers are redacted.

NameTypeReqDescription
include_bodyboolean–Include bounded request/response body excerpts.
include_headersboolean–Include request/response headers with sensitive names redacted.
limitinteger–Maximum packets to return.
max_body_charsinteger–Maximum characters for each body excerpt when include_body is true.
timeoutnumber–Maximum seconds to wait for packets.

Structured output declared, but exposes no named fields.

No examples provided.

page_accessibility_snapshot ~80

Return a bounded Chromium accessibility tree for the page or a scoped selector/frame/shadow target.

NameTypeReqDescription
include_ignoredboolean––
include_valuesboolean–Return accessibility field values. Defaults to false to avoid leaking secrets.
max_nodesinteger––
scope––Optional selector/accessibility element whose AX subtree is returned.

Structured output declared, but exposes no named fields.

No examples provided.

page_click_xy ~176

Move the viewport pointer to exact CSS pixel coordinates using a direct or bounded natural trajectory, optionally wait for an explicit delay, then press and release one mouse button.

NameTypeReqDescription
buttonstring–Mouse button to press and release
delay_before_press_msinteger–Optional delay after pointer arrival and before mousePressed. This is timing control, not target-stability detection; moving targets require a fresh screenshot or selector-first action.
elementstring–Human-readable element or interaction description
profilestring–Movement profile: direct emits one exact move; natural emits a deterministic 24-step eased cubic Bezier path with bounded 8-14ms intervals and an exact endpoint
xnumberyesViewport X coordinate in CSS pixels
ynumberyesViewport Y coordinate in CSS pixels

Structured output declared, but exposes no named fields.

No examples provided.

page_close ~14

Close the current page/browser

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

page_console_logs ~86

Read bounded browser console messages from the current tab. Supports level filtering, cursor pagination, and a maximum result limit.

NameTypeReqDescription
levelstring–Console level filter: all, error, warning, warn, info, or log.
limitinteger–Maximum number of console entries to return.
sinceinteger–Return only log entries with index greater than this cursor.

Structured output declared, but exposes no named fields.

No examples provided.

page_dialog_observe ~66

Observe a pending native alert, confirm, or prompt and return its bounded message without handling it.

NameTypeReqDescription
max_message_charsinteger–Maximum dialog message characters returned to the MCP client.
timeoutnumber–Seconds to wait for a pending alert, confirm, or prompt.

Structured output declared, but exposes no named fields.

No examples provided.

page_dialog_respond ~89

Accept or dismiss one pending alert, confirm, or prompt through a capability-probed native DrissionPage dialog path.

NameTypeReqDescription
actionstringyes–
prompt_text––Text for an accepted prompt. The value is never returned.
timeoutnumber–Maximum seconds to wait for a pending dialog. Zero checks immediately; an already-pending dialog still receives a bounded native response budget.

Structured output declared, but exposes no named fields.

No examples provided.

page_evaluate ~92

Run a bounded JavaScript function body in the current page and return a JSON-safe result. This can mutate the page.

NameTypeReqDescription
argsarray–JSON arguments passed to the JavaScript function body
max_charsinteger–Maximum serialized JSON characters returned in result
scriptstringyesJavaScript function body to run in the current page. Use return to provide a JSON-serializable result.

Structured output declared, but exposes no named fields.

No examples provided.

page_export_artifact ~142

Generate one PDF or MHTML file under DP_MCP_ARTIFACT_ROOT and return checksum, safe relative path, and exact-once receipt evidence.

NameTypeReqDescription
filename–––
formatstringyes–
landscapeboolean––
margin_bottomnumber––
margin_leftnumber––
margin_rightnumber––
margin_topnumber––
operation_key–––
page_rangesstring––
paper_height–––
paper_width–––
prefer_css_page_sizeboolean––
print_backgroundboolean––
scalenumber––

Structured output declared, but exposes no named fields.

No examples provided.

page_get_url ~17

Get the current URL of the page

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

page_go_back ~19

Go back to the previous page in browser history

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

page_go_forward ~19

Go forward to the next page in browser history

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

page_navigate ~67

Navigate to a specific URL in the browser

NameTypeReqDescription
new_tabboolean–Open the URL in a new browser tab instead of the current tab.
observeboolean–Return a compact before/after page change summary.
urlstringyesThe URL to navigate to

Structured output declared, but exposes no named fields.

No examples provided.

page_navigate_with_http_auth ~79

Open an isolated Chromium context, answer a bounded HTTP auth challenge, clean Fetch handlers, and retain the isolated authenticated tab until it is closed.

NameTypeReqDescription
passwordstringyes–
realm––Optional exact HTTP authentication realm constraint.
timeoutnumber––
urlstringyes–
usernamestringyes–

Structured output declared, but exposes no named fields.

No examples provided.

page_observe ~70

Return a compact current-page fingerprint with URL, title, ready state, element counts, visible text samples, active element, and recent console summary.

NameTypeReqDescription
max_text_charsinteger–Maximum characters per visible text sample
max_textsinteger–Maximum number of visible text samples to return

Structured output declared, but exposes no named fields.

No examples provided.

page_pointer_drag ~169

Perform one failure-safe viewport drag through optional ordered waypoints using direct or bounded natural movement while the button remains pressed. Always releases the button.

NameTypeReqDescription
buttonstring–Mouse button held during the drag
elementstring–Human-readable draggable element or interaction description
end_xnumberyesViewport drag end X in CSS pixels
end_ynumberyesViewport drag end Y in CSS pixels
profilestring–Movement profile for the approach and every held segment: direct or deterministic bounded natural motion
start_xnumberyesViewport drag start X in CSS pixels
start_ynumberyesViewport drag start Y in CSS pixels
waypointsarray–Optional ordered viewport points visited while the button remains pressed

Structured output declared, but exposes no named fields.

No examples provided.

page_pointer_drag_element ~87

Resolve a source element and element, offset, or track-ratio destination immediately before one failure-safe drag. Supports CSS/XPath in the top document or one same-origin iframe, plus CSS paths through nested open Shadow DOM hosts; use coordinate drag for visual-only targets.

NameTypeReqDescription
buttonstring––
destination–yes–
profilestring––
source–yes–

Structured output declared, but exposes no named fields.

No examples provided.

Install

How do I install the DrissionPage MCP server?

DrissionPage MCP runs locally as a PyPI package, launched with uvx drissionpage-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · drissionpage-mcp

# add to Claude Code
claude mcp add jumodada-drissionpage-mcp -- uvx drissionpage-mcp
Common questions

What is the DrissionPage MCP server?

DrissionPage MCP is listed in the public MCP registry as io.github.jumodada/drissionpage-mcp. Local browser automation for MCP clients powered by DrissionPage. This page covers its PyPI package (drissionpage-mcp).

Is the DrissionPage MCP server safe to use?

DrissionPage MCP scores 96 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 16 October 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the DrissionPage MCP server expose?

DrissionPage MCP exposes 69 tools: page_navigate, page_navigate_with_http_auth, page_go_back, page_go_forward, page_refresh, and 64 more. Their descriptions and schemas cost roughly 4,553 tokens of context every time the server is loaded.

Is the DrissionPage MCP server still maintained?

DrissionPage MCP is still listed as active in the MCP registry. We last reached this channel on 16 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the DrissionPage MCP server under?

DrissionPage MCP declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.