Skip to main content
Glama
HyperClockUp

DrissionPageMCPServer_Modified

by HyperClockUp
README.md
<div align="center">

<img src="./docs/site_config/public/images/logo.png" alt="DrissionPageMCPServer_Modified Logo" width="200">

# DrissionPageMCPServer_Modified

基于 [DrissionPage-MCP-Server](https://github.com/persist-1/DrissionPage-MCP-Server) 二次开发的 MCP 服务,为 AI 助手提供强大的浏览器自动化能力。

</div>

> 🔗 **原项目**: [https://github.com/persist-1/DrissionPage-MCP-Server](https://github.com/persist-1/DrissionPage-MCP-Server)

## ✨ 核心特性

🌐 **浏览器自动化** - 页面导航、元素操作、截图等完整功能  
🔧 **MCP协议支持** - 与AI助手无缝集成的标准化接口  
📸 **截图与DOM** - 页面分析、元素定位、结构获取  
🚀 **异步高性能** - 基于FastMCP框架的高效服务  
🛠️ **17工具集** - 涵盖浏览器管理到文件处理的全方位功能

## 🚀 快速开始

### 安装
```bash
# 克隆项目
git clone https://github.com/YourUsername/DrissionPageMCPServer_Modified.git
cd DrissionPageMCPServer_Modified/

# 使用 uv 同步环境
uv sync
```

### 启动服务
```bash
# 启动MCP服务(STDIO模式)
drissionpage-mcp
```

### 在AI助手中配置
在 Trae AI IDE 中添加 MCP 服务配置:
```json
{
   "mcpServers": {
      "drissionpage-mcp": {
         "command": "<YOUR_PATH>\\DrissionPageMCPServer_Modified\\.venv\\Scripts\\python.exe",
         "args": ["-m", "drissionpage_mcp.main"],
         "env": {
            "PYTHONPATH": "<YOUR_PATH>\\DrissionPageMCPServer_Modified\\src"
         }
      }
   }
}
```
![MCP配置效果](docs/site_config/public/images/mcp配置效果(Trae%20ide).png)

## 📱 使用案例

### 网页自动化操作
<div align="center">
  <img src="docs/site_config/public/images/用例测试1.png" alt="用例测试1" width="45%">
  <img src="docs/site_config/public/images/用例测试2.png" alt="用例测试2" width="45%">
</div>

### 复杂页面交互
<div align="center">
  <img src="docs/site_config/public/images/用例测试3_1.png" alt="用例测试3_1" width="30%">
  <img src="docs/site_config/public/images/用例测试3_2.png" alt="用例测试3_2" width="30%">
  <img src="docs/site_config/public/images/用例测试3_3.png" alt="用例测试3_3" width="30%">
</div>

### 基本使用示例
```python
# 连接浏览器
result = await connect_browser(port=9222, headless=False)

# 导航并截图
result = await navigate("https://example.com")
result = await take_screenshot("page.png")

# 元素操作
result = await click_element("#submit-button")
result = await input_text("#username", "your_username")
```

## 🛠️ MCP 工具列表

| 分类 | 工具 | 功能描述 |
|------|------|----------|
| 🌐 **浏览器管理** | 1.`connect_browser` | 连接/启动浏览器 |
| | 2.`new_tab` | 创建新标签页 |
| | 3.`navigate` | 页面导航 |
| 🎯 **元素操作** | 4.`click_element` | 点击元素 |
| | 5.`input_text` | 输入文本 |
| | 6.`get_element_text` | 获取元素文本内容 |
| | 7.`get_page_text` | 获取页面完整文本内容 |
| 📸 **截图功能** | 8.`take_screenshot` | 页面/元素截图 |
| | 9.`get_screenshot_data` | 获取截图数据 |
| 🌳 **DOM操作** | 10.`get_dom_tree` | 获取DOM树结构 |
| | 11.`find_elements` | 查找页面元素 |
| 🔍 **网络监控** | 12.`enable_network_monitoring` | 启用网络监控 |
| | 13.`get_network_logs` | 获取网络日志 |
| 📁 **文件操作** | 14.`save_page_source` | 保存页面源码 |
| | 15.`get_cookies` | 获取Cookies |
| ⚡ **高级功能** | 16.`execute_javascript` | 执行JavaScript |
| | 17.`run_cdp_command` | 执行CDP命令 |

## 🌐 浏览器支持

支持所有 Chromium 内核浏览器:
- **Chrome**(推荐)- 自动检测系统安装
- **Edge** - 作为备选自动检测
- **其他 Chromium 浏览器** - 通过环境变量指定路径

项目会自动检测并使用系统中的 Chrome,如果未安装则使用 Edge。

## ⚙️ 环境配置

```bash
# 基本配置
export DRISSIONPAGE_MCP_LOG_LEVEL=INFO
export DRISSIONPAGE_MCP_HEADLESS=false
export DRISSIONPAGE_MCP_TIMEOUT=30

# 指定浏览器路径(可选,支持Chrome/Edge/其他Chromium浏览器)
export DRISSIONPAGE_MCP_BROWSER_PATH=/path/to/chrome

# 其他路径配置(可选)
export DRISSIONPAGE_MCP_DOWNLOAD_PATH=/path/to/downloads
export DRISSIONPAGE_MCP_SCREENSHOT_PATH=/path/to/screenshots
```

## 🏗️ 项目架构

```
DrissionPageMCPServer_Modified/
├── .github/                    # GitHub 配置
├── docs/                       # VitePress 文档站点
├── src/drissionpage_mcp/       # 源代码
│   ├── config/                 # 配置模块
│   ├── core/                   # 核心功能(浏览器、元素、网络)
│   ├── services/               # 服务层(CDP、DOM、截图)
│   ├── utils/                  # 工具模块
│   └── main.py                 # MCP 服务入口
├── tests/                      # 测试
├── pyproject.toml              # 项目配置
├── requirements.txt            # 依赖
└── uv.lock                     # 依赖锁定
```

## 📚 文档

- 📖 **[原项目文档](https://persist-1.github.io/DrissionPage-MCP-Server/)** - 完整的项目文档

## 🔧 故障排除

| 问题 | 解决方案 |
|------|----------|
| 🌐 浏览器连接失败 | 确保Chrome已安装,检查调试端口配置 |
| 🎯 元素找不到 | 检查选择器,等待页面加载,使用更具体选择器 |
| 📸 截图失败 | 检查磁盘空间、文件权限、截图目录 |
| 🔍 网络监控无数据 | 确保已启用监控,检查过滤条件 |

```bash
# 启用调试日志
drissionpage-mcp --log-level DEBUG
```

## 🤝 贡献

欢迎提交 Issue 和 Pull Request!

1. Fork 项目 → 2. 创建分支 → 3. 提交更改 → 4. 推送分支 → 5. 创建 PR

## 📄 许可证

MIT License - 详见 [LICENSE](LICENSE) 文件

## 📖 参考项目

- [DrissionPage-MCP-Server](https://github.com/persist-1/DrissionPage-MCP-Server) - 原项目
- [DrissionPage](https://github.com/g1879/DrissionPage) - 底层浏览器自动化库

## 📧 联系方式

如有问题或建议,请联系:cfx_software@163.com

---

<div align="center">
  <strong>⭐ 如果这个项目对你有帮助,请给个 Star!</strong>
</div>

TDQS

B3.2/5.0

Scored across 17 tools

Disambiguation4/5

Most tools have distinct purposes with clear boundaries, such as take_screenshot for visual capture, get_dom_tree for structural analysis, and click_element for interaction. However, some overlap exists between find_elements and get_dom_tree, as both assist in element location, which could cause minor confusion in selection. The detailed descriptions help mitigate this overlap by clarifying their specific roles.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with clear verb_noun combinations, such as take_screenshot, get_dom_tree, and click_element. This uniformity makes the tool set predictable and easy to understand, with no deviations in naming style or convention throughout the list.

Tool Count4/5

With 17 tools, the count is slightly high but reasonable for a browser automation server, covering essential operations like navigation, interaction, and monitoring. Some tools, like get_screenshot_data and save_page_source, might be redundant or niche, but overall, the set is well-scoped for its domain without being overly bloated.

Completeness5/5

The tool set provides comprehensive coverage for browser automation, including navigation, element interaction, monitoring, and data extraction. It supports a full workflow from setup (connect_browser) to interaction (click_element, input_text) and analysis (get_dom_tree, get_network_logs), with no obvious gaps that would hinder agent operations in this domain.

Maintenance

ActivityInactive
ResponsivenessNo issues