← 返回目录
D

DrissionPage MCP Server

社区
基于 DrissionPage 的本地浏览器自动化 MCP 服务器
分类
浏览器自动化 第 5 / 32
Stars
★ 484 非常热门
传输方式
stdio(本地进程)
运行环境
Python 3.10+ · 预编译二进制
凭据
无需凭据
许可证
其他 / 未声明
最近提交
工具数
69
64FMRS · C

这是一款社区维护的本地浏览器自动化 MCP 服务器,由 DrissionPage 驱动,通过 stdio 提供 69 个带类型的原子工具,覆盖导航、标签页、元素交互、截图、帧与 Shadow DOM、Cookie 与存储、网络观测、等待与控制台日志等能力。它强调结构化优先、视觉为辅,提供 direct 与确定性 natural 两种指针轨迹,并默认对 URL、凭据、请求头、Cookie、网络正文等做脱敏。工具均为默认加载,没有提示词,只有一个静态的可选 Skills 目录资源。项目处于 beta 阶段,许可证为 Apache 2.0,非上游官方项目;真实行为依赖本地 Chrome/Chromium 与目标站点,使用前建议用独立浏览器配置并自行验证结果。

最强项 · 文档质量 15/20 最弱项 · 可靠性 11/20

可靠性
11/20
安全与权限
12/20
维护活跃度
12/20
文档质量
15/20
安装易用性
14/20
查看各项评分依据
可靠性 11/20
证据显示:README 声明 69 个类型化工具、0 prompts、1 个可选 Skills 资源,并描述了 doctor 诊断、结构化 error.details.hints、DIALOG_PENDING/DIALOG_NOT_FOUND 恢复、网络监听器 token/游标/超时/取消恢复、标签页级清理、类型化输出契约与 Pydantic 校验。仓库结构(server.py/context.py/runtime.py/tools/)与 CI/覆盖率徽章表明存在单元、协议、schema 快照、响应契约、浏览器集成测试,并声称 95% 覆盖率。这些是静态声明而非可验证的执行证据:本次审阅无法运行任何测试,也未提供实际 CI 日志或测试文件内容,因此可靠性不能超过静态上限 12。扣分点:无实机握手证据、工具实现细节与 69 个工具的真实行为无法核对、依赖 Chrome/Chromium 与目标站点的运行时不确定性由 README 自认(beta 状态),且 0.8.8 的日期为 2026-09-08(未来时间,需谨慎对待)。
安全与权限 12/20
证据显示若干正向设计:凭据类返回值默认脱敏(cookies/headers/network 体/存储值默认不返回,需 include_values=true)、HTTP 认证在一次性 Chromium 上下文内完成且不回传凭据、keyboard 输入不回显、无保留的操作历史或绝对截图路径、可选本地导航/截图安全策略、文件上传与下载限定在 DP_MCP_UPLOAD_ROOT/DP_MCP_DOWNLOAD_ROOT/DP_MCP_SCREENSHOT_ROOT 等根目录、Chrome 沙箱默认开启(DP_NO_SANDBOX=1 仅限受限环境)、网络监听与阻塞 URL 显式化。README 也明确披露该服务器在本地运行、可访问已认证会话/Cookie/下载和页面内容、可访问本机可达的任意站点,且不要求确认危险操作(点击、上传、下载、脚本求值 page_evaluate 均无强制确认)。扣分点:无 MCP 客户端侧的内容信任提示词、对任意页面执行受限 JS、对网络请求/用户代理/权限的修改缺少显式确认流程、任务级越权面较大。未发现恶意、凭据窃取、隐蔽外传或默认不可逆删除/部署等红线,故不触发 0-4 区间。
维护活跃度 12/20
证据显示:版本号在 manifest、README 与徽章中一致为 0.8.8,有 CHANGELOG、CONTRIBUTING.md、SECURITY.md、codecov.yml、GitHub Actions CI、PyPI 发布与官方 MCP Registry 元数据及 tag 门控发布流程,仓库未归档、仅 5 个开放 issue、主题与描述完整,说明维护活跃且所有权清晰(署名 Wukunyun)。扣分点:LICENSE 字段为 NOASSERTION,GitHub 未能识别许可证,尽管 README 声明 Apache 2.0,存在许可证元数据不一致的治理风险;依赖更新策略、issue 响应时效、安全响应承诺均无静态证据;发布说明中的日期(2026-09-08)与当前常识不符,削弱版本证据可信度;因此不能给高分,低于满分较多。
文档质量 15/20
证据显示文档层次较完整:README 覆盖安装、各客户端配置(Codex TOML、Claude Code/Desktop、Cursor JSON)、绝对 Python 回退路径、环境变量、69 个工具的分类清单与参数要点(如 page_navigate(new_tab/background/new_window/new_context)、page_scroll(pixels/x/y)、page_dialog_respond(action)、frame_snapshot、browser_permission_set(setting))、Skills 目录与三个示例 Skill 的边界说明、测试与 playground 命令、troubleshooting、兼容性、工具契约、变更日志与路线图,并披露限制(beta、无法读取跨源 iframe 内部 DOM、指针定位范围更窄、缓存清理保留 Cookie/存储、浏览器依赖本地 Chrome/Chromium)。扣分点:无截图/示例输出可核对、成本与资源占用未量化、部分参数语义依赖文档外链接(docs/tool-contract.md 未提供内容)、无 API 参考级逐字段说明;因此未达满分。
安装易用性 14/20
证据显示安装路径相对清晰:pip install -U "drissionpage-mcp>=0.8.8"、drissionpage-mcp --version / doctor / doctor --launch-browser,Codex 可用 codex mcp add 自动写入,Claude Code、Cursor、Claude Desktop 均给出可直接复制的 JSON 片段,并针对 GUI 客户端 PATH/虚拟环境问题提供绝对 Python 命令与 args 回退,附需求(Python 3.10+、Chrome/Chromium、任意 MCP 客户端)与截图步骤。扣分点:仍需要用户自行安装 Chrome/Chromium 并确保客户端 PATH 正确,属于多步手动配置;无自动化配置脚本或 IDE 内一键安装;无可验证的实际连接成功证据,因此不得超过静态上限 15。

静态评测 · 未实际运行收录于 2026-09-18

查看 FMRS 评分方法 →

选型与风险

能访问什么访问网络控制浏览器

适合谁

  • 已经在使用 Codex CLI/IDE、Claude Code、Claude Desktop 或 Cursor 等 MCP 客户端并希望在本地驱动浏览器的开发者
  • 需要既可基于 DOM 选择器、又可在视觉界面用坐标操作的自动化场景
  • 希望使用 TypeScript/JSON 之外、基于 Python 3.10+ 与本地 Chrome/Chromium 的轻量浏览器自动化方案
  • 需要本地运行、无需外部 API 凭据的自动化与可访问性工作流

不适合谁

  • 期望服务器内置站点专属流程、组件库适配或验证码应对逻辑的用户(这些属于客户端或可选 Skills)
  • 无法安装 Chrome/Chromium 或不具备 Python 3.10+ 环境的场景
  • 需要云端托管浏览器或远程执行环境的用户
  • 需要官方厂商支持或 SLA 的生产关键场景

所需权限

  • 本地浏览器控制:打开标签页、导航到任意可达网址、执行受限 JavaScript
  • 读取与写入浏览器 Cookie、localStorage、sessionStorage
  • 读取与修改请求头、user agent、HTTP 缓存、浏览器权限
  • 文件上传与下载(受 DP_MCP_UPLOAD_ROOT、DP_MCP_DOWNLOAD_ROOT 约束),截图与 PDF/MHTML 产物写入(受 DP_MCP_SCREENSHOT_ROOT、DP_MCP_ARTIFACT_ROOT 约束)
  • 访问本地浏览器中已登录的会话与页面内容

风险与副作用

  • 使用的本地浏览器可能带有已登录会话、Cookie、下载内容与页面数据,误操作可能影响真实账号或生产系统
  • 可打开并交互本机可达的任意站点,存在越权或违反站点条款的风险
  • 坐标式交互依赖模型对截图坐标的判断,可能点错位置,务必先观察再验证结果
  • 下载、上传、导出产物会写入本地文件系统,需注意目录与内容边界
  • DP_NO_SANDBOX=1 会关闭 Chrome 沙箱,仅应保留给受限容器或 root 环境
  • 项目为 beta 状态,真实浏览器行为依赖本地 Chrome/Chromium 与目标站点

安装接入

准备工作

运行环境:Python 3.10+ · 预编译二进制

其他可选配置项(7 个)
CHROME_PATH 可选 可选,指定自定义 Chrome 可执行文件路径,默认使用系统 Chrome/Chromium。
DP_HEADLESS 可选 可选,设为 1 时以无头模式启动浏览器。
DP_NO_SANDBOX 可选 可选,仅限受限容器/root 环境使用,默认保持 Chrome 沙箱开启。
DP_MCP_DOWNLOAD_ROOT 可选 element_click_and_download 保存下载产物的根目录。
DP_MCP_UPLOAD_ROOT 可选 element_upload_file 允许读取的文件上传根目录。
DP_MCP_SCREENSHOT_ROOT 可选 page_screenshot_save 保存截图的根目录。
DP_MCP_ARTIFACT_ROOT 可选 page_export_artifact 保存 PDF/MHTML 产物的根目录。
  1. 安装或更新客户端(例如 macOS/Linux 上安装 Codex CLI:curl -fsSL https://chatgpt.com/codex/install.sh | sh)。
  2. 执行 python -m pip install -U "drissionpage-mcp>=0.8.8" 从 PyPI 安装。
  3. 运行 drissionpage-mcp --version 与 drissionpage-mcp doctor 验证包与环境,doctor 应报告 mcp_supported 和 mcp_server_wiring 均为 ok,需要时可加 --launch-browser 检查浏览器启动。
  4. 配置客户端:Codex 在 ~/.codex/config.toml(或项目内 .codex/config.toml)加入 [mcp_servers.drissionpage] command = "drissionpage-mcp"、startup_timeout_sec = 20、tool_timeout_sec = 60;JSON 客户端(Claude Code、Cursor、Claude Desktop)在对应配置文件中加入 {"mcpServers": {"drissionpage": {"command": "drissionpage-mcp"}}}。
  5. 重启客户端:Codex 中用 /mcp 或 codex mcp list 检查;GUI 启动的客户端若看不到 PATH 或虚拟环境,可将 command 改为绝对 Python 路径并加 args = ["-m", "drissionpage_mcp.cli"]。
claude_desktop_config.json
{
  "mcpServers": {
    "drissionpage": {
      "command": "drissionpage-mcp"
    }
  }
}

以 Claude Desktop 为例。其他客户端的配置文件位置或字段可能不同(如 VS Code 使用 servers 字段),可用下方配置生成器转换。

.vscode/mcp.json
{
  "servers": {
    "drissionpage": {
      "command": "drissionpage-mcp"
    }
  }
}

写入项目的 .vscode/mcp.json(VS Code 使用 servers 字段)。

Terminal
claude mcp add drissionpage -- drissionpage-mcp

在终端运行;先把 <…> 占位符换成你自己的值。

验证是否装好

运行 drissionpage-mcp --version 确认版本,然后运行 drissionpage-mcp doctor,确认 mcp_supported 和 mcp_server_wiring 均为 ok,重启客户端后在工具列表中应能看到 page_navigate、page_screenshot 等 69 个工具。

常见排障

  1. 工具未加载时先运行 drissionpage-mcp --version 确认版本输出,例如 drissionpage-mcp 0.8.8
  2. 运行 drissionpage-mcp doctor,确认 mcp_supported 与 mcp_server_wiring 均为 ok;仅版本输出不能证明客户端可初始化服务器
  3. 浏览器问题:在 Linux 用 which google-chrome、macOS 用 which chromium 检查安装;必要时用 CHROME_PATH 指定路径,DP_HEADLESS=1 以无头模式运行
  4. Codex 未找到服务器时运行 codex mcp list,或在 TUI 中执行 /mcp;JSON 客户端检查配置路径与 JSON 语法,并重启客户端
  5. GUI 启动的客户端看不到 shell PATH 或虚拟环境时,改用绝对 Python 可执行文件并传入 ["-m", "drissionpage_mcp.cli"]
  6. 需要调试日志时使用 drissionpage-mcp --log-level DEBUG,并参考 docs/troubleshooting.md
  7. 验证安装与场景可用性:python -m pytest tests/ 或 DP_HEADLESS=1 python playground/run_mcp_lab.py --all --json

试试这样问

连接成功后,可以直接对 AI 助手这样说:

  • 访问 https://example.com 并截个图
  • 去 Wikipedia 搜索 Python,然后取第一段内容
  • 填写 https://httpbin.org/forms/post 上的表单并提交
  • 获取 news.ycombinator.com 上的前 10 条新闻标题

工具能力 69

page_navigate 写入
导航到任意 URL,可指定已有 tab_id,或用 new_tab=true 配合 background、new_window、new_context;observe 返回变更摘要
page_navigate_with_http_auth 写入
在专用的一次性 Chromium 上下文中通过限定范围的 HTTP 认证挑战完成导航,不返回凭据
page_go_back 写入
在浏览器历史中后退
page_go_forward 写入
在浏览器历史中前进
page_refresh 写入
重新加载当前页面
tab_list 只读
列出已打开的浏览器标签页及稳定的 MCP tab ID
tab_switch 写入
切换到 tab_list 返回的标签页
tab_close 破坏性
先拒绝新任务、排空进行中的操作,再关闭单个标签页而不关闭整个浏览器
展开其余 61 个工具
element_find 只读
用 CSS 选择器或 XPath 查找单个元素;h1 这类裸选择器按 CSS 处理
element_find_all 只读
提取有数量上限的重复元素,含文本、属性和推荐选择器
element_click 写入
点击任意元素,支持左/右/中键与单击/双击语义
element_click_and_download 写入
把一次选择器、坐标或键盘触发与 DP_MCP_DOWNLOAD_ROOT 下一个完整性校验过的产物关联起来
element_type 写入
向元素输入文本
element_upload_file 写入
用 element_upload_file(paths=[...]) 从 DP_MCP_UPLOAD_ROOT 上传文件到 input[type=file]
element_click_and_upload 写入
预备 Chromium 文件选择器、点击触发元素、注入已批准文件并清理拦截,不弹出操作系统选择框
element_scroll_into_view 写入
操作前将元素滚动到视口内
element_hover 写入
悬停元素以触发菜单或提示状态
element_select 写入
按值、文本或索引选择选项
element_check 写入
勾选或取消勾选复选框/单选按钮
element_get_text 只读
获取元素或页面文本
element_get_attribute 只读
获取 HTML 属性
element_get_property 只读
获取实时 DOM 属性,例如输入框的值
element_get_html 只读
获取元素或页面的 HTML
element_state_get 只读
读取单个元素的实时 DrissionPage 状态标志以及文档/视口几何信息
page_screenshot 只读
截取内联的整页或视口截图
page_screenshot_save 写入
在 DP_MCP_SCREENSHOT_ROOT 下保存截图
page_export_artifact 写入
在 DP_MCP_ARTIFACT_ROOT 下生成受管理的 PDF 或 MHTML 产物,并附 SHA-256 与回执证据
page_snapshot 只读
返回有上限的页面大纲,包含标题、链接、按钮、输入、表单和选择器建议
page_accessibility_snapshot 只读
返回页面或指定元素的有限 Chromium 无障碍树,除非显式请求否则字段值会被脱敏
page_observe 只读
返回紧凑的页面指纹,含 URL、标题、计数、可见文本样本、活动元素和最近控制台摘要
page_evaluate 写入
在当前页面执行受限 JavaScript 并返回 JSON 安全的结果
page_scroll 写入
用 page_scroll(pixels=...) 做相对滚动,或传 x/y 指定绝对位置
keyboard_press 写入
向活动元素或页面发送按键,结果中不回显输入内容
page_resize 写入
调整浏览器窗口
page_pointer_move 写入
以 direct 或确定性的 natural 轨迹移动到视口 CSS 精确坐标
page_pointer_drag 写入
按选定轨迹执行一次失败安全的坐标拖拽,可经过最多六个有序路径点
page_pointer_drag_element 写入
拖拽前即时解析源与目标几何;支持顶层文档或单个同源 iframe 中的 CSS/XPath,也可用 CSS 路径穿过嵌套的开放 Shadow DOM 宿主
page_click_xy 写入
以 direct 或 natural 轨迹移动,可选择等待显式延时,然后在精确目标处按下并释放
page_close 破坏性
关闭浏览器
page_get_url 只读
获取当前 URL
page_dialog_observe 只读
等待并查看待处理的原生 alert、confirm 或 prompt,但不处理它
page_dialog_respond 写入
用 page_dialog_respond(action="accept")(或 "dismiss")处理一个待处理的 alert、confirm 或 prompt
frame_list 只读
列出 iframe/frame 上下文,不改变全局 frame 状态
frame_snapshot 只读
用 frame_snapshot(frame_selector="...") 或 frame_index 以有限大纲数据检查单个 iframe
frame_find 只读
在选定的 iframe 内查找元素
shadow_find 只读
在当前支持的 DrissionPage 运行时暴露的 shadow root 内查找单个元素,包括已验证的闭合根
shadow_find_all 只读
从 DrissionPage 暴露的 shadow root 中提取重复元素
browser_headers_set 写入
替换额外请求头并返回脱敏后的名称;空对象表示清除
browser_user_agent_set 写入
覆盖 user agent 与可选平台,返回被接受和先前的 user agent
browser_cache_clear 破坏性
清理 HTTP 缓存,同时保留 Cookies、localStorage 与 sessionStorage
browser_permission_get 只读
查询当前文档来源的某项浏览器权限,且不弹出操作系统提示
browser_permission_set 写入
用 browser_permission_set(setting="granted")(或 "denied"/"prompt")为精确来源或当前 Chromium 上下文设置权限
browser_permissions_reset 写入
重置当前 Chromium 上下文的权限覆盖
browser_cookies_get 只读
读取规范化后的 Cookie,默认对值脱敏
browser_cookies_set 写入
一次最多设置 100 个 Cookie,返回被接受的元数据且值已脱敏
browser_cookies_delete 破坏性
按名称删除单个 Cookie,可附带 URL/域名/路径范围
browser_cookies_clear 破坏性
清除所有浏览器 Cookie
storage_get 只读
按键或按映射读取 localStorage/sessionStorage,除非 include_values=true 否则值被脱敏
storage_set 写入
设置一条 localStorage/sessionStorage 数据且不回显该值
storage_clear 破坏性
清除单个存储键或整个存储区域
page_console_logs 只读
读取有上限的浏览器控制台消息,支持级别过滤、游标分页和条数限制
wait_for_element 只读
等待元素出现(带超时)
wait_for_url 只读
用 wait_for_url(url_pattern="...") 等到当前 URL 包含指定文本
wait_until 只读
用 wait_until(condition="text_contains", value="...") 或其他文档化的条件/值组合等待
wait_time 只读
延迟执行
network_listen_start 写入
通过 DrissionPage 启动有上限的 HTTP/XHR/Fetch 观测
network_listen_wait 只读
等待有上限的数据包元数据,可选返回脱敏的请求头或正文片段
network_listen_stop 写入
停止观测,可选择清空已排队的数据包
network_blocked_urls_set 写入
用 network_blocked_urls_set(urls=[...]) 替换被拦截的 URL 模式;空列表表示清除

使用场景

自动化测试 Web 应用
抓取网站结构化数据
填写并提交表单
监控页面更新或变化
截图并验证页面状态
以编程方式分析网页内容
对画布、地图、图表等纯视觉界面进行坐标交互

支持客户端

Claude Desktop
Claude Code
Cursor
Codex CLI/IDE
VS Code部分支持

依据项目文档列出,未经本站实测。

详细介绍

DrissionPage MCP Server 是一个本地运行的 Model Context Protocol 服务器,将 DrissionPage 的浏览器自动化能力以 69 个带类型的原子工具形式暴露给 Codex CLI/IDE、Claude Code、Claude Desktop、Cursor 等 MCP 客户端。它通过 stdio 传输启动,基于 PyPI 包 drissionpage-mcp 安装,需要本机 Chrome 或 Chromium 与 Python 3.10+。设计上坚持「结构化优先、视觉为辅」:有可靠选择器时用 DOM 结构操作,只有画布、地图、图表等纯视觉界面才使用坐标配合 direct 或确定性的 natural 指针轨迹。服务器只负责精确执行被请求的浏览器操作,站点流程、组件库适配、挑战应对等业务策略由客户端或可选 Skills 承担;不含 MCP prompts,仅提供一个静态的可选 Skills 目录资源。项目处于 beta 阶段,许可证为 Apache 2.0,由社区作者维护,并非上游产品官方项目。

同类可选方案

源版本 140756ac4e70 数据同步于 2026-11-02 查看 FMRS 评分方法