Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PYTHONPATH | No | Path to the project's src directory, required for the Python environment to locate the drissionpage_mcp package. | |
| DRISSIONPAGE_MCP_TIMEOUT | No | Timeout setting for browser operations in seconds. | 30 |
| DRISSIONPAGE_MCP_HEADLESS | No | Whether to run the browser in headless mode. | false |
| DRISSIONPAGE_MCP_LOG_LEVEL | No | The logging level for the server (e.g., INFO, DEBUG). | INFO |
| DRISSIONPAGE_MCP_BROWSER_PATH | No | Optional specific path to the Chrome, Edge, or other Chromium-based browser executable. | |
| DRISSIONPAGE_MCP_DOWNLOAD_PATH | No | Optional directory path for file downloads. | |
| DRISSIONPAGE_MCP_SCREENSHOT_PATH | No | Optional directory path for saving screenshots. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| connect_browser | 连接到浏览器或启动新浏览器 Args:
port: 调试端口,默认9222
headless: 无头模式(不显示浏览器窗口)
incognito: 无痕/隐私模式
user_data_dir: 用户数据目录
带超时控制,默认20秒超时。
|
| new_tab | 创建新标签页 |
| navigate | 导航到指定URL |
| click_element | 点击页面元素(智能优化版) ⚠️ 重要提示:使用此工具前,请务必遵循标准化工作流程:
1. 📸 先使用 take_screenshot() 确认目标元素存在
2. 🔍 使用 get_dom_tree() 或 find_elements() 分析页面结构
3. 🎯 基于准确信息构建选择器,禁止猜测元素名称
🎯 选择器优先级(推荐顺序):
- ID选择器:#element-id (最优先)
- CSS类选择器:.class-name
- 属性选择器:[data-testid="value"]
- XPath选择器://div[@class="example"]
- 文本匹配:仅作为辅助手段
Args:
selector: 元素选择器(禁止猜测,必须基于实际DOM结构)
selector_type: 选择器类型 (css, xpath, text)
index: 元素索引(当有多个匹配时,从0开始)
smart_feedback: 是否启用智能反馈(推荐True)
Returns:
str: 操作结果和反馈信息
💡 最佳实践示例:
- 正确:先 find_elements("button") 确认按钮存在,再 click_element("#submit-btn")
- 错误:直接 click_element("#可能存在的按钮") 而不确认元素
|
| input_text | 在输入框中输入文本(智能优化版) ⚠️ 重要提示:使用此工具前,请务必遵循标准化工作流程:
1. 📸 先使用 take_screenshot() 确认输入框存在且可见
2. 🔍 使用 find_elements() 验证输入框的选择器
3. 🎯 基于准确的DOM信息构建选择器
🎯 输入框选择器优先级:
- ID选择器:#input-id (最优先)
- name属性:[name="username"]
- CSS类选择器:.form-input
- XPath选择器://input[@type="text"]
Args:
selector: 输入框选择器(必须基于实际DOM结构,禁止猜测)
text: 要输入的文本内容
clear_first: 是否先清空输入框(推荐True避免内容叠加)
Returns:
str: 输入操作结果和反馈信息
💡 最佳实践示例:
- 正确:先 find_elements("input[type='text']") 确认输入框,再输入文本
- 错误:直接对未确认的选择器输入文本
|
| get_element_text | 获取元素文本内容(精确定位版) ⚠️ 重要提示:这是预处理工具,用于获取精确的元素信息!
使用场景:
1. 🔍 在点击或输入操作前,验证目标元素的实际文本内容
2. 📋 获取页面动态内容,如表格数据、状态信息等
3. ✅ 确认元素存在性和可见性
🎯 选择器构建原则:
- 必须基于 get_dom_tree() 或 find_elements() 的结果
- 禁止猜测元素选择器
- 优先使用ID、class、属性选择器
Args:
selector: 元素选择器(必须基于实际DOM结构)
Returns:
str: 元素的文本内容,如果元素不存在则返回错误信息
💡 最佳实践示例:
- 正确:先 find_elements(".status") 确认元素,再 get_element_text(".status")
- 错误:直接 get_element_text("#可能的状态元素") 而不确认
|
| get_page_text | 获取页面完整文本内容(预处理必备工具) ⚠️ 核心预处理工具:这是标准化工作流程的第2步!
🔧 主要用途:
1. 🔍 在操作元素前,获取页面的完整文本信息
2. 📋 为非多模态LLM提供详细的页面内容描述
3. 🎯 帮助构建精确的元素选择器
4. ✅ 确认页面加载完成和内容可用性
💡 与其他工具的配合使用:
- 配合 take_screenshot():视觉+文本双重确认
- 配合 get_dom_tree():结构化分析页面布局
- 配合 find_elements():基于文本内容定位元素
Returns:
str: 页面的完整可见文本内容(去除HTML标签)
🚀 推荐工作流程:
1. take_screenshot() - 获取页面截图
2. get_page_text() - 获取页面文本(当前步骤)
3. get_dom_tree() - 分析页面结构
4. 基于以上信息执行具体操作
|
| take_screenshot | 截取页面截图(标准化工作流程第1步) ⚠️ 核心预处理工具:这是标准化工作流程的第1步!
🎯 主要用途:
1. 🔍 视觉确认:在任何元素操作前,先确认目标元素存在
2. 📋 为多模态LLM提供视觉上下文信息
3. 🐛 调试辅助:操作失败时用于问题诊断
4. 📝 文档记录:保存操作过程的视觉证据
💡 与其他工具的配合:
- 多模态LLM:截图 → 视觉分析 → 精确操作
- 非多模态LLM:截图 → get_page_text() → get_dom_tree() → 操作
Args:
filename: 截图文件名(可选,自动生成时间戳命名)
full_page: 是否截取完整页面(True)还是可视区域(False)
element_selector: 仅截取特定元素(可选)
Returns:
str: 截图保存路径和操作结果
🚀 推荐使用场景:
- 每次页面导航后立即截图确认加载状态
- 点击、输入等操作前截图确认目标元素
- 操作失败时截图辅助问题诊断
|
| get_screenshot_data | 获取截图二进制数据 带超时控制,默认30秒超时。
|
| get_dom_tree | 获取DOM树结构(结构化分析工具) ⚠️ 核心分析工具:这是标准化工作流程的第3步!
🎯 主要用途:
1. 📋 获取页面的层次化结构信息
2. 🔍 为元素定位提供精确的选择器路径
3. 🎯 分析页面布局,理解元素间的父子关系
4. 🛠️ 为非多模态LLM提供详细的结构化信息
💡 与其他工具的协作:
- 在 take_screenshot() 和 get_page_text() 之后使用
- 为 find_elements() 提供选择器构建依据
- 配合 get_element_text() 验证元素内容
Args:
selector: 起始选择器(默认"body"获取整个页面结构)
max_depth: 最大遍历深度(默认10层,避免过深嵌套)
Returns:
str: 结构化的DOM树信息,包含标签、属性、层级关系
🚀 使用建议:
- 首次分析页面:使用默认参数获取完整结构
- 聚焦特定区域:指定具体的selector缩小范围
- 复杂页面:适当减少max_depth避免信息过载
|
| find_elements | 查找页面元素(智能定位工具) ⚠️ 精确定位工具:基于DOM分析结果进行元素查找!
🎯 主要用途:
1. 🔍 基于get_dom_tree()结果,精确定位目标元素
2. 📋 验证元素存在性和可访问性
3. 🎯 获取元素的详细属性信息(id、class、text等)
4. 🛠️ 为后续操作提供准确的选择器
💡 选择器类型优先级:
1. CSS选择器:#id、.class、[attribute](推荐)
2. XPath://div[@class='example'](复杂定位)
3. 文本匹配:"按钮文字"(辅助手段)
Args:
selector: 元素选择器(必须基于实际DOM结构)
selector_type: 选择器类型(css/xpath/text)
limit: 返回元素数量限制(避免结果过多)
include_similar: 是否包含相似元素(智能匹配)
Returns:
str: 匹配元素的详细信息列表
🚀 最佳实践:
- 先用get_dom_tree()分析页面结构
- 基于结构信息构建精确选择器
- 验证找到的元素是否为目标元素
- 将结果用于click_element()或input_text()操作
Returns:
str: 查找结果
|
| enable_network_monitoring | 启用网络监控 Args:
filter_types: 需要监听的mimeType类型列表
Returns:
str: 启用结果
|
| get_network_logs | 获取网络请求日志 Args:
limit: 返回日志的最大数量
Returns:
str: 网络日志数据
|
| save_page_source | 保存页面源码到文件 |
| get_cookies | 获取当前页面的Cookies |
| execute_javascript | 执行JavaScript代码 |
| run_cdp_command | 执行CDP命令 |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| global_automation_hints | 永远附加的全局自动化测试操作提示 |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| get_default_config | 获取默认配置 |
| get_all_instructions | 获取所有工具指令 |
| get_browser_status | 获取浏览器状态 |