CDP vs MCP: когда использовать какой протокол для управления браузером через ИИ — иллюстрация к статье Clawbrowser

CDP vs MCP: когда использовать какой протокол для управления браузером через ИИ

Clawbrowser Teamai-agentycdpmcprukovodstvo

В управлении браузером через ИИ доминируют два протокола: CDP (Chrome DevTools Protocol) и MCP (Model Context Protocol). Они решают разные задачи на разных уровнях, но разработчики, создающие браузерных агентов, часто их путают или выбирают не тот для своего сценария. Это руководство объясняет, что делает каждый протокол, когда применять какой и как они работают вместе в production-стеке агента.

TL;DR: CDP дает агенту прямой, низкоуровневый контроль над браузером через WebSocket-соединение. MCP дает LLM высокоуровневые браузерные инструменты через стандартизированный интерфейс tool-use. CDP — это двигатель; MCP — это руль. Большинству production-агентов ИИ нужны оба: MCP, чтобы LLM принимал решения о действиях, и CDP снизу, чтобы браузер реально работал. Clawbrowser поддерживает оба нативно.

Примечание: «CDP» в этой статье означает Chrome DevTools Protocol, стандарт управления браузером.


Что такое CDP и MCP на самом деле

CDP: Chrome DevTools Protocol

CDP — это протокол на основе WebSocket для программного управления браузерами Chromium. Google создал его для Chrome DevTools (инспектор, который открывается по F12), но он стал стандартом автоматизации браузеров. Playwright, Puppeteer и все крупные библиотеки автоматизации используют CDP внутри.

Когда вы вызываете page.goto() в Playwright, отправляется CDP-команда по WebSocket в браузер. CDP дает гранулярный контроль: навигация по страницам, выполнение JavaScript, перехват сетевых запросов, манипуляция cookies и создание скриншотов.

# 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 читайте в CDP Browser for AI Agents: A Developer Guide.

MCP: Model Context Protocol

MCP — это протокол, стандартизирующий подключение LLM к внешним инструментам. Вместо написания собственных определений function-call для каждого инструмента LLM обнаруживает доступные инструменты через MCP-сервер и вызывает их через стандартный интерфейс.

Для управления браузером MCP-сервер предоставляет действия вроде навигации, клика, ввода текста, скриншота и извлечения данных как инструменты, которые LLM может вызывать. LLM решает, какой инструмент вызвать, исходя из задачи. Без кода Playwright, без CSS-селекторов, без собственных определений инструментов в агенте.

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

Добавьте эту конфигурацию в Claude Code, Cursor, Gemini CLI или любой MCP-совместимый агент. LLM сразу получает браузерные инструменты.

Почему их путают

Оба протокола соединяют ИИ-агента с браузером. Оба используют слово «protocol». Оба появляются в одних и тех же разговорах об инфраструктуре ИИ-агентов. Но работают на разных уровнях:

  • CDP — протокол уровня браузера. Он общается с Chromium.
  • MCP — протокол уровня приложения. Он общается с LLM.

MCP-сервер для работы с браузером использует CDP внутри для управления им. Это не альтернативы. Это слои одного стека.


Сравнение бок о бок

CDP (Chrome DevTools Protocol) MCP (Model Context Protocol)
Создан Google (команда Chrome) Anthropic
Тип протокола Управление браузером (WebSocket) Использование инструментов (stdio/SSE)
Кто вызывает Ваш код (Playwright, Puppeteer, сырой WebSocket) LLM (Claude, GPT, Gemini)
Уровень контроля Низкий: DOM, сеть, выполнение JavaScript, cookies Высокий: навигация, клик, ввод текста, скриншот, извлечение
Настройка Подключение к debugging-порту браузера Конфигурация MCP-сервера в агенте
Гибкость Полная: всё, что умеет браузер Ограничена инструментами, которые предоставляет сервер
Скорость на действие Миллисекунды (без инференса) 0,5-3 секунды (LLM решает на каждом шаге)
Обработка ошибок Ваш код обрабатывает ошибки LLM рассуждает об ошибках
Anti-detection Не встроен (зависит от браузера) Не встроен (зависит от браузера)
Лучше всего для Скриптовая автоматизация, точный контроль, разработка фреймворков Навигация под управлением LLM, открытые задачи, быстрое прототипирование

Ни один из протоколов не занимается anti-detection. Это задача уровня браузера, а не протокола. Обычный экземпляр Chrome, подключенный через CDP или через MCP-сервер, оставляет одни и те же сигналы автоматизации. Anti-detection требует решения на уровне engine, такого как Clawbrowser: управляемые fingerprints по 20+ поверхностям, встроенный proxy routing и подавление CDP-сигналов на уровне исходного кода Chromium.


Когда использовать CDP

Используйте CDP, когда вам нужен точный программный контроль над браузером и вы заранее знаете конкретные шаги.

Сценарии, где CDP выигрывает:

  • Структурированный скрапинг. Вы знаете, какие селекторы таргетировать, какие данные извлекать и как обрабатывать пагинацию. Ваш код выполняет одни и те же шаги каждый раз.
  • Перехват сети. Вам нужно блокировать ресурсы, модифицировать заголовки запросов, перехватывать ответы API или внедрять JavaScript до загрузки страницы.
  • Сложные условия ожидания. Вам нужно ждать конкретных DOM-элементов, состояния idle сети или изменений JavaScript-переменных перед выполнением действия.
  • Автоматизация с критичной производительностью. CDP-команды выполняются за миллисекунды. Без задержки инференса LLM на каждое действие. 50-шаговая задача скрапинга, которая через CDP занимает секунды, через LLM-рассуждения на каждом шаге заняла бы минуты.
  • Разработка фреймворков. Вы строите агентный фреймворк, тестовый harness или библиотеку автоматизации для других разработчиков.
# 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")

Компромисс: вы пишете и поддерживаете весь связующий код с браузером. Каждый селектор, каждое условие ожидания, каждый обработчик ошибок. Когда структура целевой страницы меняется, код ломается.


Когда использовать MCP

Используйте MCP, когда LLM должен решать, что делать дальше, на основе того, что видит на странице.

Сценарии, где MCP выигрывает:

  • Открытая навигация. «Найди страницу с ценами и извлеки детали тарифов». Агент переходит по страницам, читает контент и решает, куда кликнуть, без жестко заданных селекторов.
  • Многошаговые workflow с принятием решений. «Залогинься, проверь, есть ли новый счёт, скачай его, если сумма больше 500 $». LLM обрабатывает условную логику, читая содержимое страницы на каждом шаге.
  • Быстрое прототипирование. Вам нужен браузерный агент за пять минут без написания кода Playwright. Добавили конфигурацию MCP, описали задачу — готово.
  • Нетехнические пользователи. Оператор агента описывает задачи на естественном языке. Код не нужен.
  • Нативные среды для агентов. Claude Code, Cursor и Gemini CLI уже говорят на MCP. Добавить браузер — один блок конфигурации.
# 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 может кликнуть не тот элемент, выполнить лишние шаги или неверно прочитать содержимое страницы. Каждое действие несёт задержку инференса LLM. Через стандартные MCP-инструменты для браузера нельзя перехватывать сетевые запросы или внедрять JavaScript.


Когда использовать оба вместе

Именно здесь оказывается большинство production-агентов ИИ. MCP обслуживает интерфейс LLM-агент. CDP обслуживает интерфейс агент-браузер. MCP-сервер сидит между ними и переводит высокоуровневые вызовы инструментов в низкоуровневые команды браузера.

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

LLM отправляет вызовы MCP-инструментов («перейди на этот URL», «кликни кнопку входа»). MCP-сервер переводит их в CDP-команды и отправляет в браузер. Результаты возвращаются обратно по цепочке.

Почему слой браузера важен

Большинство MCP-серверов для браузеров подключаются к обычному Chrome через CDP. У такого браузера нет управления fingerprints, нет proxy routing, нет anti-detection. Ваш агент работает на демо-сайтах, но блокируется на production-сайтах за Cloudflare, DataDome или Akamai.

Встроенный MCP-сервер Clawbrowser подключается к собственному Chromium engine. Когда LLM вызывает navigate, MCP-сервер отправляет CDP-команду в браузер, у которого уже есть управляемые fingerprints, гео-привязанный proxy routing и подавление CDP-сигналов на уровне engine. Без stealth-плагинов, без proxy-middleware, без кода ротации fingerprints.

Путь MCP (управляется LLM, ноль связующего кода):

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

Путь CDP (скриптовый, полный контроль):

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

Оба пути подключаются к одному и тому же экземпляру Clawbrowser с теми же fingerprints, proxy routing и anti-detection. Выбирайте интерфейс, подходящий вашему сценарию. Используйте оба в одном проекте, когда разные части workflow требуют разных уровней контроля.

Пошаговый туториал по созданию агента с обоими протоколами читайте в How to Build an AI Agent That Browses the Web.


Фреймворк принятия решений

Вопрос CDP MCP
Вы знаете точные шаги заранее? Да Используйте CDP
LLM должен решать, куда кликнуть? Используйте MCP Да
Нужен перехват сети? Да Недоступно
Нужна скорость менее секунды на действие? Да Нет (задержка LLM)
Строите для нетехнических пользователей? Нет Да
Используете Claude Code или Cursor? Доступно Нативная интеграция
Хотите ноль кода для браузера? Нет Да

Если вы ответили «да» на вопросы по обеим сторонам, используйте оба: MCP для частей под управлением LLM, CDP для частей, требующих точности. Clawbrowser обслуживает браузерный слой для любого протокола.


FAQ

Можно переключаться между CDP и MCP без смены браузера?

Да, если ваш браузер поддерживает оба. Clawbrowser предоставляет CDP-endpoint на каждом профиле и имеет встроенный MCP-сервер. Подключайте Playwright к CDP-endpoint для скриптовой автоматизации и используйте MCP-сервер для навигации под управлением LLM — на тех же профилях браузера с теми же fingerprints и сессиями. Пошаговая инструкция по обоим методам подключения: How to Connect Cursor to a Real Browser via CDP.

Какой протокол быстрее?

CDP. Команды выполняются за миллисекунды, потому что инференс LLM не задействован. MCP добавляет 0,5-3 секунды на действие, потому что LLM должен решить, какой инструмент вызвать, и интерпретировать результат. 50-шаговая задача скрапинга через CDP завершается за секунды. Та же задача через MCP занимает минуты. Используйте CDP для массовой автоматизации, когда шаги известны. Используйте MCP для задач, требующих оценки на каждом шаге.

А что насчёт WebDriver BiDi?

WebDriver BiDi — это стандарт W3C, который должен заменить и WebDriver (используемый Selenium), и части CDP браузер-агностичным протоколом. Он всё ещё созревает. Playwright и Puppeteer по-прежнему используют CDP внутри. Когда WebDriver BiDi достигнет полного принятия, он будет конкурировать с CDP на уровне управления браузером, а не с MCP на уровне инструментов. Фреймворк принятия решений CDP-vs-MCP из этой статьи применим независимо от того, какой низкоуровневый браузерный протокол победит.

Нужен ли anti-detect браузер для какого-либо из протоколов?

Да, если агент автоматизирует сайты с anti-bot защитой. Ни CDP, ни MCP не включают anti-detection. Это протоколы для отправки команд браузеру. Если браузер выдаёт сигналы автоматизации (navigator.webdriver, headless User-Agent, generic canvas hash), сайт блокирует его вне зависимости от используемого протокола. Полную модель обнаружения смотрите в Browser Automation Without Getting Blocked.


Начните строить

Установите Clawbrowser с clawbrowser.ai, вставив промпт установки в вашего ИИ-агента.

Путь MCP (управляется LLM): добавьте конфигурацию MCP-сервера Clawbrowser в вашего агента и начинайте навигацию на естественном языке.

Путь CDP (скриптовый): подключите Playwright или Puppeteer к CDP-endpoint и напишите код автоматизации.

Оба: используйте MCP для частей, где LLM рассуждает о том, что делать. Используйте CDP для частей, где нужен точный, быстрый и детерминированный контроль. Тот же браузер, те же fingerprints, те же сессии.

Полный разбор CDP: CDP Browser for AI Agents: A Developer Guide. Полный туториал по сборке: How to Build an AI Agent That Browses the Web.

Continue exploring

Ask AI how Clawbrowser helps

Читайте дальше

Все статьи →