基于 undetected-chromedriver 构建的 MCP 服务,提供全面的接口以自动化控制 Chrome 浏览器,同时绕过反机器人检测。
通过 Smithery 自动安装 MCP-Undetected-Chromedriver 到 Claude Desktop:
npx -y @smithery/cli install @dragons96/mcp-undetected-chromedriver --client claude
这是在 Claude Desktop 中配置使用 Undetected-chromedriver 服务的方法:
{
"mcpServers": {
"mcp-undetected-chromedriver": {
"command": "npx",
"args": [
"-y",
"@smithery/cli@latest",
"run",
"@dragons96/mcp-undetected-chromedriver",
"--config",
"{}"
]
}
}
}
# 创建虚拟环境
uv venv
# 激活虚拟环境
# Windows
.venv\Scripts\activate
# Linux/MacOS
source .venv/bin/activate
# 安装依赖
uv pip install -e .
MCP-Undetected-Chromedriver 是一个 MCP(多通道协议)服务,它将 undetected-chromedriver 库的功能封装成一系列易于使用的 API。此项目特别适用于需要绕过现代网站反机器人检测机制的自动化测试、数据抓取或网页自动化脚本场景。
mcp-server-undetected-chromedriver
该服务提供了以下主要 API 接口:
browser_navigate: 导航到指定的 URLbrowser_screenshot: 对当前页面进行截图browser_click: 点击页面元素browser_iframe_click: 在 iframe 内点击元素browser_fill: 在输入字段中填充内容browser_select: 在下拉选择框中选择选项browser_hover: 将鼠标悬停在元素上browser_evalute: 执行 JavaScript 代码browser_close: 关闭浏览器browser_get_visible_text: 获取页面上的可见文本browser_get_visible_html: 获取页面上的可见 HTMLbrowser_go_back: 在浏览器历史中向后导航browser_go_forward: 在浏览器历史中向前导航browser_drag: 拖动元素browser_press_key: 模拟按键按下browser_save_as_pdf: 将页面保存为 PDFfrom mcp.client import Client
# 创建 MCP 客户端
client = Client()
client.start("undetected-chromedriver-mcp-server")
# 导航到网站
response = client.call("browser_navigate", {"url": "https://example.com"})
print(response)
# 截图
response = client.call("browser_screenshot", {"name": "example"})
print(response)
# 获取页面文本
response = client.call("browser_get_visible_text")
print(response.content[0].text)
# 关闭浏览器
client.call("browser_close")
此服务使用 undetected-chromedriver 库创建一个专门的 Chrome 浏览器实例,有效地避开常见的反机器人检测机制。服务通过 MCP 协议封装这些功能,提供一个易于使用的 API 接口,使自动化测试和网页抓取更加方便。
该项目采用 MIT 许可证 - 详情见 LICENSE 文件。
欢迎在 GitHub Issues 页面提交 bug 报告和功能请求。如果您想贡献代码,请先创建一个问题来讨论您的想法。
Q: 为什么选择 undetected-chromedriver 而不是标准的 Selenium WebDriver?
A: undetected-chromedriver 特别设计用于绕过现代网站如 Cloudflare 和 Distil Networks 的反机器人检测机制,使其在数据抓取和自动化测试场景中更为可靠。
Q: 服务如何处理浏览器实例?
A: 服务维护一个全局浏览器实例,当首次调用需要浏览器的 API 时会自动创建。可以使用 browser_close API 显式关闭浏览器。
Q: 如何处理 iframe 内的元素?
A: browser_iframe_click API 可以直接操作 iframe 内的元素,无需手动切换帧上下文。