ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

Cdpilot

โดย mehmetnadirรุ่น 0.9.4i★ –iรันบนเครื่อง
ชื่อใน registryio.github.mehmetnadir/cdpilot

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

Zero-dependency browser automation over raw CDP — no Puppeteer, Playwright, or Selenium.

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): stdio
  • หมวด: เว็บและเบราว์เซอร์

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ก่อนติดตั้ง

ต้องเตรียมก่อน

  • npmติดตั้ง Node.js (มีคำสั่ง npx) ในเครื่อง

คุณใช้แอปไหน

เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”

เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json

{
  "mcpServers": {
    "cdpilot": {
      "command": "npx",
      "args": [
        "-y",
        "cdpilot",
        "mcp"
      ]
    }
  }
}

พิมพ์คำสั่งนี้ใน Terminal

claude mcp add cdpilot -- npx -y cdpilot mcp

เปิดใน Cursor

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json

{
  "mcpServers": {
    "cdpilot": {
      "command": "npx",
      "args": [
        "-y",
        "cdpilot",
        "mcp"
      ]
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เปิดใน VS Code

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .vscode/mcp.json ของโปรเจกต์

{
  "servers": {
    "cdpilot": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "cdpilot",
        "mcp"
      ]
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ทำอะไรได้บ้าง

รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub mehmetnadir ซึ่งเป็นเจ้าของ repo

  • … ยังไม่ตรวจ

    ยังมีคนดูแล

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • – ไม่เกี่ยว

    endpoint ตอบ

    ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต

เทียบกับตัวอื่นในหมวด เว็บและเบราว์เซอร์i

  • ดาวมากกว่า 0% ของอีก 880 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 50% ของอีก 880 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 880 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

Cdpilot ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.9.4) เข้า registry 39 วันที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี Browser Use, Chrome DevTools MCP, MCP Server Browser

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

Browser Use

โดย browser-use

ให้ AI ทำงานบนเว็บแทนคุณ เช่น กรอกฟอร์ม ค้นหา และดึงข้อมูล ใช้เบราว์เซอร์บนคลาวด์ของผู้ทำหรือรันในเครื่องก็ได้

บนเครื่องหรือคลาวด์★ 120,087MITอัปเดต 17 วันที่ผ่านมา
ติดตั้ง

Chrome DevTools MCP

โดย ChromeDevTools

ให้ AI ใช้เครื่องมือนักพัฒนาของ Chrome ตรวจหน้าเว็บ ดูว่าโหลดช้าตรงไหน และหาข้อผิดพลาด ทำโดยทีม Chrome DevTools

รันบนเครื่อง★ 54,821Apache-2.0อัปเดต 15 วันที่ผ่านมา
ติดตั้ง

MCP Server Browser

โดย bytedance

MCP server for browser use access

รันบนเครื่อง★ 39,550Apache-2.0อัปเดต 14 เดือนที่ผ่านมา
ติดตั้ง

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

cdpilot

Zero-dependency browser automation from your terminal. One command, full control.

Quick Start

npx cdpilot launch    # Start browser with CDP

npx cdpilot go https://example.com npx cdpilot shot # Take screenshot

No config files. No boilerplate. Just npx and go.

Why cdpilot?

AI agents and developers need browser control that just works:

  • Zero config — npx cdpilot launch starts an isolated browser session
  • Zero dependency — No Puppeteer, no Playwright, no Selenium. Pure CDP over HTTP
  • 70+ commands — Navigate, click, type, screenshot, network, console, accessibility, video understanding, progressive anti-bot resilience, and more
  • AI-agent friendly — Designed for Claude, GPT, Gemini, and any LLM tool-use workflow
  • Isolated sessions — Your personal browser stays untouched. cdpilot runs in its own profile
  • Visual feedback — Green glow overlay, cursor visualization, click ripples, and keystroke display keep you informed during automation
  • Multi-project isolation — Each project gets its own browser instance and port automatically, no conflicts
  • AI control warning — Red toast notification appears when you hover during active automation
  • Privacy-first — Everything runs locally. No data leaves your machine
Browser Selection (Workload-Aware Auto-Pick)

cdpilot picks the right browser for what you're doing. auto (default) is a two-axis policy — extension workload × platform stability:

Your workloadAuto-pick order
Has extensions registered (ext-install)vivaldi → brave → edge → chromium → chrome (→ Chrome for Testing, if installed)
No extensions (pure automation)chrome → vivaldi → edge → chromium → brave

Override anytime:

cdpilot browser            # show current pick + reason

cdpilot browser vivaldi # pin to Vivaldi cdpilot browser chrome-for-testing # pin to Chrome for Testing (after installing it, below) cdpilot browser auto # restore smart default

Why the split?

  • Chrome 137+ silently drops `--load-extension` for unpacked extensions (no error, no warning) — Google removed it from branded Chrome builds (PSA). Verified — chrome://extensions shows 0 items.
  • Vivaldi, Brave, Edge, Chromium and Chrome for Testing honor --load-extension (tested).
  • On macOS 26 (Tahoe) Brave 1.89 crashes deterministically at ~7min uptime (SIGTRAP in ThreadPoolForegroundWorker). cdpilot detects the OS and demotes Brave automatically until a fixed Brave release ships.

Each browser gets its own isolated profile (~/.cdpilot/.../profile-vivaldi etc.) so switching never causes prefs corruption.

Extension development: Chrome for Testing

If you develop an extension against Chrome itself, install Chrome for Testing (CfT) — the Chrome team's versioned, non-auto-updating Chrome build for automation, which still loads unpacked extensions:

cdpilot browser install chrome-for-testing                    # latest Stable

cdpilot browser install chrome-for-testing --channel beta # stable | beta | dev | canary cdpilot browser install chrome-for-testing --version 154 # a milestone, or a full version (154.0.8037.57) cdpilot ext-install ./my-extension/ # register your unpacked extension cdpilot browser status # shows the CfT version and path

  • Download only on that command. It is a one-time ~150-190 MB zip (mac-arm64 at 154.0.8037.57: 191,429,663 bytes); cdpilot never fetches it by itself. The build comes from the official CfT JSON endpoints (last-known-good-versions-with-downloads.json, per-version and per-milestone files). Those list URLs only, no hash, so the download is checked against the server's Content-Length and its x-goog-hash md5; the zip's SHA-256 is recorded.
  • It is extracted to $CDPILOT_HOME/browsers/chrome-for-testing/ / (on macOS the quarantine attribute is cleared on that directory only) and recorded in installed.json.
  • Used automatically for extension work: while dev extensions are registered, a branded Chrome pick (cdpilot browser chrome, or auto with Chrome the only extension-capable choice) becomes Chrome for Testing, with one stderr line saying so. Without CfT installed, ext-install on Chrome prints the install command and keeps Vivaldi/Brave as the alternative. cdpilot browser chrome-for-testing selects it always. An explicit CHROME_BIN is never replaced.
  • It runs with cdpilot's usual per-project isolated profile (profile-cft).
  • It is for extension development and testing — not a stealth browser. cdpilot makes no anti-bot claims for it; use your regular browser setup for that.
  • Linux (Ubuntu 23.10+): AppArmor blocks unprivileged user namespaces, and CfT (unlike the distro's Chrome package) has no profile allowing them, so it exits at start. cdpilot prints this hint; allow them with sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0.

Installation

# Use directly (no install needed)

npx cdpilot

Or install globally

npm i -g cdpilot

Requirements: Node.js 18+, Python 3.10+, and one of: Brave Browser, Google Chrome, or Chromium. (The Python websockets module is auto-installed by the pre-flight wizard on first launch.)

First-time setup
npx cdpilot setup     # Auto-detect browser, create isolated profile

npx cdpilot launch # Start browser with CDP enabled npx cdpilot status # Check connection

Claude Code plugin marketplace

Install cdpilot's MCP server and its skill straight into Claude Code, no .mcp.json editing required:

/plugin marketplace add mehmetnadir/cdpilot

/plugin install cdpilot@cdpilot

This registers the cdpilot MCP server (npx cdpilot mcp) and a short skill that teaches Claude Code when and how to reach for cdpilot's commands. See .claude-plugin/marketplace.json and plugins/cdpilot/.

MCP Bundle (.mcpb)

For MCP clients that support one-click local server installation (Claude Desktop and others), download the .mcpb file attached to the latest release and open it, or build it yourself:

npm run build:mcpb   # writes cdpilot.mcpb at the repo root

The bundle still needs the same runtime on the machine that runs it: Node.js 18+, Python 3.10+, and Brave/Chrome/Chromium installed. See manifest.json for the bundle's MCP Bundle manifest (spec).

Upgrading from 0.4.x → 0.5.0 — read this first

One breaking change, the rest is additive.

Breaking — Visual feedback default flipped to OFF. The green glow border, animated fake cursor, click ripples, and keystroke display made cdpilot feel like an amateur typing on every page. They are now opt-in:

cdpilot show on     # restore the old visual feedback layer

cdpilot show off # default since 0.5.0

The MCP server's persistent-glow flow (CDPILOT_MCP_SESSION=1) is unchanged — AI agents that rely on visible feedback during a session still see it automatically. Only direct-CLI users see the difference.

New in 0.5.0 (no migration needed):

  • cdpilot dismiss — heuristic auto-click for "Stay signed out / No thanks" buttons on LLM chat sign-up walls.
  • cdpilot adaptive on — auto-escalate to stealth on CAPTCHA-protected hosts, with persistent per-host memory.
  • cdpilot cookies save/load — export/import cookies as JSON to replay CF/DataDome clearance across runs.
  • cdpilot context create/list/close + CDPILOT_TARGET — isolated browser contexts for true parallel automation inside a single browser.
  • cdpilot fast / cdpilot show — bundled timing + visual toggles.
  • Pure performance: post-load sleep 1500ms → 300ms, scrollIntoView instant, WebSocket connection pool, /json TTL cache.

See CHANGELOG.md for the full list with rationale.

Commands

Navigation & Content
cdpilot go <url>              # Navigate to URL (alias: open <url>)

cdpilot content # Get page text content cdpilot html # Get page HTML cdpilot shot [file] # Take screenshot (PNG) cdpilot pdf [file] # Save page as PDF

Interaction
cdpilot click <selector>      # Click element

cdpilot type # Type into input cdpilot fill # Set input value (React-compatible) cdpilot submit # Submit form cdpilot hover # Hover element cdpilot keys # Keyboard shortcut (ctrl+a, enter, etc.) cdpilot scroll-to # Scroll element into view cdpilot drag # Drag and drop

A real mouse click (inside a frame, or --entropy=on) whose target moves or gets covered while the button is held is not clicked again by script: click prints Pressed (released elsewhere, not clicked): … and ends with exit 3 (pressed, release missed the target, not clicked; 1 stays "error"). A target the page replaced or navigated away from on mousedown prints Pressed (the page replaced or left it, not clicked): … and exits 0. MCP (browser_click, browser_smart_click) returns isError: false with a first line {"clicked": false, "reason": "moved"|"gone"|"unknown"}. batch and run finish every step, then exit 1 if a step failed, else 3 if a click was not clicked, else 0.

Element targeting inside iframes

Card forms (Stripe/iyzico-style), embedded login widgets and the reCAPTCHA checkbox live inside s. Name the frame chain before the element selector with >>>, or pass --frame:

# Payment-style page: the card fields are inside <iframe id="card" title="Secure card payment">

cdpilot fill "iframe#card >>> input[name=cardnumber]" "4242424242424242" cdpilot type --frame "#card" "input[name=cvc]" "123" cdpilot click "iframe[title='Secure card payment'] >>> button#pay-btn"

Nested frames: outermost first

cdpilot click "iframe.checkout >>> iframe.card >>> button"

--frame , nestable with >>>

cdpilot click --frame 0 "button.submit" # first iframe (same order as frame list) cdpilot fill --frame "url=js.stripe.com" "input[name=cardnumber]" "4242424242424242" cdpilot frame list --frame "#card" # iframes inside that frame cdpilot frame eval --frame "#card" "document.title" # runs in the frame's own page context

  • Works for click, fill, type, submit, hover, dblclick, rightclick, smart-click, smart-fill, smart-select and frame list|eval|shadow.
  • A frame hop is a CSS selector, a 0-based index, a name/id, or url= . --frame also takes a bare src substring. >>> inside quotes or [...] is literal. A selector that matches an element *wrapping* an iframe (Stripe's #card-element) enters the iframe

ตัดมาแค่ช่วงต้น อ่านต่อใน repo

ถาม PopNx