CDP vs MCP:AI 浏览器控制该用哪个——Clawbrowser 文章封面插图

CDP vs MCP:AI 浏览器控制该用哪个

Clawbrowser TeamAI-agentcdpmcp指南

AI 浏览器控制领域有两个主要 protocol:CDP(Chrome DevTools Protocol)和 MCP(Model Context Protocol)。它们在不同层解决不同问题,但构建 browser agent 的开发者经常把两者混淆,或者选错了。本指南解析每个 protocol 的作用、各自的适用场景,以及它们在生产 agent 技术栈中如何配合使用。

结论先行: CDP 通过 WebSocket 连接对 browser 进行直接的底层控制。MCP 通过标准化的 tool-use 接口为 LLM 提供高层 browser tools。CDP 是引擎,MCP 是方向盘。大多数生产环境的 AI agent 两者都需要:MCP 让 LLM 决定 action,CDP 在底层让 browser 真正运转。Clawbrowser 原生支持两者。

说明: 本文中的 "CDP" 指 Chrome DevTools Protocol(浏览器控制标准)。


CDP 和 MCP 到底是什么

CDP:Chrome DevTools Protocol

CDP 是基于 WebSocket 的 protocol,用于以编程方式控制 Chromium browser。Google 最初为 Chrome DevTools(按 F12 打开的 inspector)开发了它,但它已成为 browser 自动化的标准。Playwright、Puppeteer 以及所有主流自动化库都在内部使用 CDP。

在 Playwright 中调用 page.goto() 时,它通过 WebSocket 向 browser 发送 CDP 命令。CDP 提供精细控制:页面导航、JavaScript 执行、network request 拦截、cookie 操作和截图。

# CDP: your code controls the browser directly
from playwright.async_api import async_playwright

async with async_playwright() as p:
    browser = await p.chromium.connect_over_cdp("http://127.0.0.1:9222")

CDP 深入解读见 AI Agents 开发者指南的 CDP 浏览器。

MCP:Model Context Protocol

MCP 是一个标准化 LLM 与外部工具连接方式的 protocol。无需为每个工具编写自定义 function-call 定义,LLM 通过 MCP 服务器发现可用工具并以标准接口调用。

对于 browser 控制,MCP 服务器将 navigate、click、type、screenshot、extract 等 action 公开为 LLM 可调用的工具。LLM 根据任务决定调用哪个工具。不需要 Playwright 代码、CSS 选择器或 agent 中的自定义工具定义。

{
  "mcpServers": {
    "clawbrowser": {
      "command": "clawctl",
      "args": ["mcp", "serve"]

把这段配置加到 Claude Code、Cursor、Gemini CLI 或任何 MCP 兼容 agent 中,LLM 就能立即使用 browser tools。

为什么容易混淆

两个 protocol 都把 AI agent 连接到 browser。都包含 "protocol" 这个词。都出现在关于 AI agent 基础设施的讨论中。但它们工作在不同层:

  • CDP 是 browser 级 protocol,与 Chromium 通信。
  • MCP 是应用级 protocol,与 LLM 通信。

MCP browser 服务器在内部使用 CDP 来控制 browser。它们不是替代关系,而是同一技术栈中的不同层。


并排对比

CDP (Chrome DevTools Protocol) MCP (Model Context Protocol)
开发方 Google(Chrome 团队) Anthropic
Protocol 类型 浏览器控制(WebSocket) 工具调用(stdio/SSE)
调用方 代码(Playwright、Puppeteer、raw WebSocket) LLM(Claude、GPT、Gemini)
控制层级 底层:DOM、network、JavaScript 执行、cookies 高层:navigate、click、type、screenshot、extract
配置方式 连接 browser 的 debugging port 在 agent 中配置 MCP 服务器
灵活性 完全:browser 能做的一切 受限于服务器公开的工具
单次 action 速度 毫秒级(无 inference) 0.5~3 秒(LLM 每步判断)
错误处理 代码处理错误 LLM 推理错误
Anti-detection 不内置(取决于 browser) 不内置(取决于 browser)
最佳用途 脚本自动化、细粒度控制、framework 开发 LLM 驱动浏览、开放式任务、快速原型

两个 protocol 都不处理 anti-detection。这是 browser 层面的问题,不是 protocol 的问题。一个普通 Chrome instance 不论通过 CDP 还是 MCP 服务器连接,都会暴露相同的自动化信号。anti-detection 需要 Clawbrowser 这样的 engine 级解决方案:覆盖 20 多个 surface 的 managed fingerprints、内置 proxy routing、Chromium 源码级的 CDP signal 压制。


何时用 CDP

当你需要对 browser 进行精确的编程控制,而且事先知道确切步骤时,用 CDP。

CDP 占优的场景:

  • 结构化抓取。 你知道要定位哪些选择器、提取什么数据、如何处理分页。代码每次执行相同步骤。
  • Network 拦截。 需要屏蔽资源、修改 request 头、捕获 API response,或在页面加载前注入 JavaScript。
  • 复杂等待条件。 需要等待特定 DOM 元素、network idle 状态或 JavaScript 变量变化后再操作。
  • 性能敏感的自动化。 CDP 命令毫秒级执行,没有 LLM inference 延迟。通过 CDP 几秒钟完成的 50 步抓取任务,经 LLM 逐步推理要花几分钟。
  • Framework 开发。 你在构建 agent framework、测试工具或别人要用的自动化库。
# CDP: full control, full responsibility
await page.wait_for_selector("#login-form")
await page.fill("#email", "[email protected]")
await page.fill("#password", credentials)
await page.click("#submit")

代价: 你要自己编写和维护全部 browser 胶水代码。每个选择器、每个等待条件、每个错误处理。目标页面结构一变,代码就会出错。


何时用 MCP

当 LLM 应该根据页面内容决定下一步做什么时,用 MCP。

MCP 占优的场景:

  • 开放式浏览。 "找到价格页面并提取套餐详情。" agent 自行导航、阅读页面、在没有硬编码选择器的情况下决定点什么。
  • 需要判断的多步骤工作流。 "登录,检查是否有新账单,如果金额超过 500 美元就下载。" LLM 在每一步读取页面内容并处理条件逻辑。
  • 快速原型。 不写 Playwright 代码,五分钟内启动一个 browser agent。添加 MCP 配置,描述任务即可。
  • 非开发者用户。 agent 操作者用自然语言描述任务,不需要写代码。
  • Agent 原生环境。 Claude Code、Cursor 和 Gemini CLI 已原生支持 MCP,添加 browser 只需一个配置块。
# MCP: the LLM decides what to do
User prompt: "Go to example.com and tell me the page title"

LLM calls: navigate(url="https://example.com")
LLM calls: screenshot()

代价: 精度降低。LLM 可能点错元素、多走步骤或误读页面内容。每个 action 都有 LLM inference 延迟。标准 MCP browser tools 无法拦截 network request 或注入 JavaScript。


何时两者一起用

这是大多数生产环境 AI agent 最终采用的方式。MCP 负责 LLM-to-agent 接口,CDP 负责 agent-to-browser 接口。MCP 服务器居中,将高层 tool calls 转换为底层 browser 命令。

LLM  ←  MCP  →  MCP Server  ←  CDP  →  Browser
                 (clawctl)               (Clawbrowser)

LLM 发送 MCP tool calls("导航到这个 URL"、"点击登录按钮")。MCP 服务器将其转换为 CDP 命令并发送给 browser。结果沿链路返回。

为什么 browser 层很重要

大多数 MCP browser 服务器通过 CDP 连接普通 Chrome instance。该 browser 没有 fingerprint 管理、没有 proxy routing、没有 anti-detection。agent 在演示站能跑,到了 Cloudflare、DataDome 或 Akamai 保护的生产网站就被拦截。

Clawbrowser 的内置 MCP 服务器连接自有 Chromium engine。当 LLM 调用 navigate 时,MCP 服务器向一个已具备 managed fingerprints、geo-aligned proxy routing 和 engine 级 CDP signal 压制的 browser 发送 CDP 命令。不需要 stealth 插件、proxy 中间件或 fingerprint 轮换代码。

MCP 路径(LLM 驱动,零胶水代码):

{
  "mcpServers": {
    "clawbrowser": {
      "command": "clawctl",
      "args": ["mcp", "serve"]

CDP 路径(脚本,完全控制):

browser = await playwright.chromium.connect_over_cdp(
    "http://127.0.0.1:9222"
)

两条路径都连接同一个 Clawbrowser instance,使用相同的 fingerprints、proxy routing 和 anti-detection。根据你的用例选择接口。如果同一项目中不同部分需要不同层级的控制,两者可以同时使用。

用两个 protocol 构建 agent 的分步教程见 如何构建能浏览网页的 AI Agent。


决策框架

问题 CDP MCP
你事先知道确切步骤吗? 是 用 CDP
LLM 应该决定点什么吗? 用 MCP 是
需要 network 拦截吗? 是 不可用
需要亚秒级 action 速度吗? 是 否(LLM 延迟)
面向非开发者吗? 否 是
在用 Claude Code 或 Cursor 吗? 可用 原生集成
想要零 browser 代码吗? 否 是

如果两边都有"是",就两个都用:LLM 驱动的部分用 MCP,精确控制的部分用 CDP。Clawbrowser 为两种 protocol 提供 browser 层。


FAQ

不换 browser 能在 CDP 和 MCP 之间切换吗?

可以,前提是你的 browser 同时支持两者。Clawbrowser 为每个 profile 公开 CDP endpoint 并内置 MCP 服务器。脚本自动化用 Playwright 连接 CDP endpoint,LLM 驱动浏览用 MCP 服务器,两者共享相同的 browser profile、fingerprints 和 sessions。两种连接方式的操作指引见 如何用 CDP 把 Cursor 连接到真实浏览器。

哪个 protocol 更快?

CDP。因为不涉及 LLM inference,命令在毫秒内执行。MCP 每个 action 需要 0.5~3 秒,因为 LLM 要决定调哪个工具并解读结果。50 步抓取任务,CDP 几秒完成,MCP 要几分钟。步骤已知的大批量自动化用 CDP,需要逐步判断的任务用 MCP。

WebDriver BiDi 呢?

WebDriver BiDi 是 W3C 标准,旨在用 browser 无关的 protocol 取代 WebDriver(Selenium 所用)和部分 CDP。目前仍在成熟中。Playwright 和 Puppeteer 内部仍然使用 CDP。WebDriver BiDi 完全普及后,会在 browser 控制层与 CDP 竞争,但不会与 tool-use 层的 MCP 竞争。本文的 CDP vs MCP 决策框架不受底层 browser protocol 影响。

用哪个 protocol 都需要 anti-detect browser 吗?

是的,如果 agent 自动化的目标站有 anti-bot 保护。CDP 和 MCP 都不含 anti-detection,它们只是向 browser 发送命令的 protocol。如果 browser 泄漏自动化信号(navigator.webdriver、headless User-Agent、通用 canvas hash),不管用哪个 protocol 都会被封。完整检测模型见 浏览器自动化不被封的方法。


开始构建

从 clawbrowser.ai 把安装 prompt 粘贴到你的 AI agent 中即可安装 Clawbrowser。

MCP 路径(LLM 驱动):把 Clawbrowser MCP 服务器配置加到 agent,用自然语言开始浏览。

CDP 路径(脚本):用 Playwright 或 Puppeteer 连接 CDP endpoint,编写自动化代码。

两者兼用:LLM 推理要做什么的部分用 MCP,需要精确、快速、确定性控制的部分用 CDP。同一 browser、同一 fingerprints、同一 sessions。

CDP 详细解读见 AI Agents 开发者指南的 CDP 浏览器。完整构建教程见 如何构建能浏览网页的 AI Agent。

Continue exploring

Ask AI how Clawbrowser helps

继续阅读

查看全部 →