CDP vs MCP: kiedy stosować który protokół do sterowania przeglądarką przez AI — ilustrowana okładka artykułu Clawbrowser

CDP vs MCP: kiedy stosować który protokół do sterowania przeglądarką przez AI

Clawbrowser Teamagenci-aicdpmcpporadnik

Dwa protokoły dominują w sterowaniu przeglądarką przez AI: CDP (Chrome DevTools Protocol) i MCP (Model Context Protocol). Rozwiązują różne problemy na różnych warstwach, ale programiści budujący agentów przeglądarkowych często je mylą albo wybierają niewłaściwy dla swojego scenariusza. Ten poradnik wyjaśnia, co robi każdy protokół, kiedy stosować który i jak współpracują w produkcyjnym stosie agenta.

TL;DR: CDP daje agentowi bezpośrednią, niskopoziomową kontrolę nad przeglądarką przez połączenie WebSocket. MCP daje LLM-owi wysokopoziomowe narzędzia przeglądarkowe przez ustandaryzowany interfejs tool-use. CDP to silnik; MCP to kierownica. Większość produkcyjnych agentów AI potrzebuje obu: MCP, żeby LLM decydował o akcjach, a CDP pod spodem, żeby przeglądarka faktycznie działała. Clawbrowser wspiera oba natywnie.

Uwaga: "CDP" w tym artykule oznacza Chrome DevTools Protocol, standard sterowania przeglądarką.


Czym właściwie są CDP i MCP

CDP: Chrome DevTools Protocol

CDP to protokół oparty na WebSocket do programowego sterowania przeglądarkami Chromium. Google stworzył go dla Chrome DevTools (inspektora, który otwierasz przez F12), ale stał się standardem automatyzacji przeglądarek. Playwright, Puppeteer i każda ważna biblioteka automatyzacji korzystają z CDP wewnętrznie.

Kiedy wywołujesz page.goto() w Playwright, wysyłasz polecenie CDP przez WebSocket do przeglądarki. CDP daje granularną kontrolę: nawigacja po stronach, wykonywanie JavaScript, przechwytywanie żądań sieciowych, manipulacja cookies i robienie zrzutów ekranu.

# 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")

Pełne omówienie CDP znajdziesz w CDP Browser for AI Agents: A Developer Guide.

MCP: Model Context Protocol

MCP to protokół standaryzujący sposób, w jaki LLM-y łączą się z zewnętrznymi narzędziami. Zamiast pisać własne definicje function-call dla każdego narzędzia, LLM odkrywa dostępne narzędzia przez serwer MCP i wywołuje je za pomocą standardowego interfejsu.

W kontekście sterowania przeglądarką serwer MCP udostępnia akcje takie jak nawigacja, kliknięcie, wpisanie tekstu, zrzut ekranu i ekstrakcja jako narzędzia, które LLM może wywołać. LLM decyduje, które narzędzie wywołać na podstawie zadania. Bez kodu Playwright, bez selektorów CSS, bez własnych definicji narzędzi w agencie.

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

Dodaj tę konfigurację do Claude Code, Cursor, Gemini CLI albo dowolnego agenta kompatybilnego z MCP. LLM natychmiast dostaje narzędzia przeglądarkowe.

Dlaczego się mylą

Oba protokoły łączą agenta AI z przeglądarką. Oba używają słowa "protocol". Oba pojawiają się w tych samych rozmowach o infrastrukturze agentów AI. Ale działają na różnych warstwach:

  • CDP to protokół na poziomie przeglądarki. Rozmawia z Chromium.
  • MCP to protokół na poziomie aplikacji. Rozmawia z LLM-ami.

Serwer MCP do obsługi przeglądarki używa CDP wewnętrznie do sterowania nią. To nie są alternatywy. To warstwy tego samego stosu.


Porównanie obok siebie

CDP (Chrome DevTools Protocol) MCP (Model Context Protocol)
Stworzony przez Google (zespół Chrome) Anthropic
Typ protokołu Sterowanie przeglądarką (WebSocket) Użycie narzędzi (stdio/SSE)
Kto go wywołuje Twój kod (Playwright, Puppeteer, surowy WebSocket) LLM (Claude, GPT, Gemini)
Poziom kontroli Niskopoziomowy: DOM, sieć, wykonywanie JavaScript, cookies Wysokopoziomowy: nawigacja, kliknięcie, wpisanie tekstu, zrzut ekranu, ekstrakcja
Konfiguracja Połączenie z portem debugowania przeglądarki Konfiguracja serwera MCP w agencie
Elastyczność Pełna: wszystko, co przeglądarka umie Ograniczona do narzędzi udostępnianych przez serwer
Szybkość na akcję Milisekundy (bez inferencji) 0,5-3 sekundy (LLM decyduje przy każdym kroku)
Obsługa błędów Twój kod obsługuje błędy LLM wnioskuje o błędach
Anti-detection Nie wbudowany (zależy od przeglądarki) Nie wbudowany (zależy od przeglądarki)
Najlepszy do Skryptowa automatyzacja, precyzyjna kontrola, budowa frameworków Przeglądanie sterowane przez LLM, otwarte zadania, szybkie prototypowanie

Żaden protokół nie zajmuje się anti-detection. To problem na poziomie przeglądarki, nie protokołu. Zwykła instancja Chrome podłączona przez CDP lub przez serwer MCP pozostawia te same sygnały automatyzacji. Anti-detection wymaga rozwiązania na poziomie silnika, takiego jak Clawbrowser: zarządzane fingerprints na ponad 20 powierzchniach, wbudowany proxy routing i tłumienie sygnałów CDP na poziomie źródła Chromium.


Kiedy używać CDP

Używaj CDP, gdy potrzebujesz precyzyjnej, programowej kontroli nad przeglądarką i z góry znasz dokładne kroki.

Scenariusze, w których CDP wygrywa:

  • Strukturalny scraping. Wiesz, które selektory targetować, jakie dane wyciągnąć i jak obsłużyć paginację. Twój kod wykonuje te same kroki za każdym razem.
  • Przechwytywanie sieci. Musisz blokować zasoby, modyfikować nagłówki żądań, przechwytywać odpowiedzi API albo wstrzyknąć JavaScript przed załadowaniem strony.
  • Złożone warunki oczekiwania. Musisz czekać na konkretne elementy DOM, stan idle sieci albo zmiany zmiennych JavaScript przed wykonaniem akcji.
  • Automatyzacja krytyczna pod względem wydajności. Polecenia CDP wykonują się w milisekundach. Bez opóźnienia inferencji LLM na akcję. 50-krokowe zadanie scrapingu, które przez CDP trwa sekundy, zajęłoby minuty przy wnioskowaniu LLM na każdym kroku.
  • Budowa frameworków. Budujesz framework agentowy, harness testowy albo bibliotekę automatyzacji, z której będą korzystać inni.
# 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")

Kompromis: piszesz i utrzymujesz cały kod łączący z przeglądarką. Każdy selektor, każdy warunek oczekiwania, każdy handler błędów. Kiedy zmieni się struktura docelowej strony, kod przestaje działać.


Kiedy używać MCP

Używaj MCP, gdy LLM powinien decydować, co robić dalej na podstawie tego, co widzi na stronie.

Scenariusze, w których MCP wygrywa:

  • Otwarte przeglądanie. "Znajdź stronę z cenami i wyciągnij szczegóły planów." Agent nawiguje, czyta stronę i decyduje, co kliknąć bez zakodowanych na stałe selektorów.
  • Wieloetapowe workflow z oceną sytuacji. "Zaloguj się, sprawdź, czy jest nowa faktura, pobierz ją, jeśli kwota przekracza 500 $." LLM obsługuje logikę warunkową, czytając zawartość strony na każdym kroku.
  • Szybkie prototypowanie. Chcesz mieć agenta przeglądarkowego w pięć minut bez pisania kodu Playwright. Dodaj konfigurację MCP, opisz zadanie, gotowe.
  • Użytkownicy nietechniczni. Operator agenta opisuje zadania w języku naturalnym. Kod nie jest wymagany.
  • Środowiska natywne dla agentów. Claude Code, Cursor i Gemini CLI już mówią MCP. Dodanie przeglądarki to jeden blok konfiguracji.
# 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()

Kompromis: mniejsza precyzja. LLM może kliknąć nie ten element, wykonać dodatkowe kroki albo źle odczytać zawartość strony. Każda akcja niesie opóźnienie inferencji LLM. Przez standardowe narzędzia MCP nie da się przechwytywać żądań sieciowych ani wstrzykiwać JavaScript.


Kiedy używać obu naraz

Tak kończy większość produkcyjnych agentów AI. MCP obsługuje interfejs LLM-agent. CDP obsługuje interfejs agent-przeglądarka. Serwer MCP siedzi pomiędzy nimi i tłumaczy wysokopoziomowe wywołania narzędzi na niskopoziomowe komendy przeglądarki.

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

LLM wysyła wywołania narzędzi MCP ("nawiguj do tego URL-a", "kliknij przycisk logowania"). Serwer MCP tłumaczy je na komendy CDP i wysyła do przeglądarki. Wyniki wracają tą samą ścieżką.

Dlaczego warstwa przeglądarki ma znaczenie

Większość serwerów MCP do obsługi przeglądarek łączy się ze zwykłą instancją Chrome przez CDP. Taka przeglądarka nie ma zarządzania fingerprintami, proxy routingu ani anti-detection. Agent działa na stronach demo, ale jest blokowany na produkcyjnych witrynach za Cloudflare, DataDome czy Akamai.

Wbudowany serwer MCP Clawbrowser łączy się z własnym silnikiem Chromium. Kiedy LLM wywołuje navigate, serwer MCP wysyła komendę CDP do przeglądarki, która ma już zarządzane fingerprints, proxy routing dopasowany geograficznie i tłumienie sygnałów CDP na poziomie silnika. Bez wtyczek stealth, bez middleware proxy, bez kodu rotacji fingerprintów.

Ścieżka MCP (sterowana przez LLM, zero kodu łączącego):

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

Ścieżka CDP (skryptowa, pełna kontrola):

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

Obie ścieżki łączą się z tą samą instancją Clawbrowser z tymi samymi fingerprintami, proxy routingiem i anti-detection. Wybierz interfejs pasujący do Twojego scenariusza. Używaj obu w tym samym projekcie, gdy różne części workflow wymagają różnych poziomów kontroli.

Krok po kroku jak zbudować agenta z oboma protokołami znajdziesz w How to Build an AI Agent That Browses the Web.


Framework decyzyjny

Pytanie CDP MCP
Znasz dokładne kroki z góry? Tak Użyj CDP
LLM ma decydować, co kliknąć? Użyj MCP Tak
Potrzebujesz przechwytywania sieci? Tak Niedostępne
Potrzebujesz szybkości poniżej sekundy na akcję? Tak Nie (opóźnienie LLM)
Budujesz dla użytkowników nietechnicznych? Nie Tak
Używasz Claude Code albo Cursor? Dostępne Natywna integracja
Chcesz zero kodu przeglądarki? Nie Tak

Jeśli odpowiedziałeś "tak" na pytania po obu stronach, użyj obu: MCP do części sterowanych przez LLM, CDP do części wymagających precyzji. Clawbrowser obsługuje warstwę przeglądarki dla obu protokołów.


FAQ

Czy mogę przełączać się między CDP a MCP bez zmiany przeglądarki?

Tak, jeśli Twoja przeglądarka obsługuje oba. Clawbrowser udostępnia endpoint CDP na każdym profilu i ma wbudowany serwer MCP. Połącz Playwright z endpointem CDP do skryptowej automatyzacji i użyj serwera MCP do przeglądania sterowanego przez LLM, na tych samych profilach przeglądarki z tymi samymi fingerprintami i sesjami. Zobacz How to Connect Cursor to a Real Browser via CDP po instrukcję obu metod połączenia.

Który protokół jest szybszy?

CDP. Komendy wykonują się w milisekundach, bo nie ma inferencji LLM. MCP dodaje 0,5-3 sekundy na akcję, bo LLM musi zdecydować, które narzędzie wywołać, i zinterpretować wynik. Przy 50-krokowym zadaniu scrapingu CDP kończy w sekundach. To samo zadanie przez MCP trwa minuty. Używaj CDP do masowej automatyzacji, gdy znasz kroki. Używaj MCP do zadań wymagających oceny na każdym etapie.

A co z WebDriver BiDi?

WebDriver BiDi to standard W3C, który ma zastąpić zarówno WebDriver (używany przez Selenium), jak i części CDP protokołem niezależnym od przeglądarki. Wciąż dojrzewa. Playwright i Puppeteer nadal korzystają z CDP wewnętrznie. Gdy WebDriver BiDi osiągnie pełną adopcję, będzie konkurować z CDP na warstwie sterowania przeglądarką, nie z MCP na warstwie narzędzi. Framework decyzyjny CDP-vs-MCP z tego artykułu obowiązuje niezależnie od tego, który niskopoziomowy protokół przeglądarkowy wygra.

Czy do któregoś z protokołów potrzebuję przeglądarki anti-detect?

Tak, jeśli agent automatyzuje strony z ochroną anti-bot. Ani CDP, ani MCP nie mają wbudowanego anti-detection. To protokoły do wysyłania komend do przeglądarki. Jeśli przeglądarka ujawnia sygnały automatyzacji (navigator.webdriver, headless User-Agent, generyczny canvas hash), strona ją blokuje niezależnie od protokołu. Zobacz Browser Automation Without Getting Blocked po pełny model detekcji.


Zacznij budować

Zainstaluj Clawbrowser z clawbrowser.ai, wklejając prompt instalacyjny do swojego agenta AI.

Ścieżka MCP (sterowana przez LLM): dodaj konfigurację serwera MCP Clawbrowser do swojego agenta i zacznij przeglądać w języku naturalnym.

Ścieżka CDP (skryptowa): połącz Playwright lub Puppeteer z endpointem CDP i napisz kod automatyzacji.

Obie: używaj MCP do części, w których LLM wnioskuje o tym, co robić. Używaj CDP do części, w których potrzebujesz precyzyjnej, szybkiej i deterministycznej kontroli. Ta sama przeglądarka, te same fingerprints, te same sesje.

Pełne omówienie CDP znajdziesz w CDP Browser for AI Agents: A Developer Guide. Tutorial krok po kroku: How to Build an AI Agent That Browses the Web.

Continue exploring

Ask AI how Clawbrowser helps

Czytaj dalej

Zobacz wszystkie →