프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

Cdpilot

제작자: mehmetnadir버전 0.9.4i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.mehmetnadir/cdpilot

설치

개요

제작자가 쓴 설명(영어 원문)

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

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: stdio
  • 카테고리: 웹 및 브라우저

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 레지스트리에 입력해야 할 키가 나와 있지 않아요.

필요한 것

  • npmNode.js 설치(npx 명령어용)

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요

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

터미널에서 이 명령어를 실행하세요

claude mcp add cdpilot -- npx -y cdpilot mcp

Cursor에서 열기

또는 설정을 직접 복사하기

프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요

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

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

VS Code에서 열기

또는 설정을 직접 복사하기

프로젝트의 .vscode/mcp.json에 붙여 넣으세요

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

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 mehmetnadir 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

웹 및 브라우저 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 881개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 881개 중 50%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 881개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

Cdpilot, 안전한가요?

해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.9.4)은 39일 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: Browser Use, Chrome DevTools MCP, MCP Server Browser

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

Browser Use

제작자: browser-use

Browser agents and stealth cloud browsers for AI: run web tasks, fill forms, extract data.

컴퓨터 또는 클라우드★ 120,087MIT17일 전 업데이트
설치

Chrome DevTools MCP

제작자: ChromeDevTools

MCP server for Chrome DevTools

내 컴퓨터에서 실행★ 54,821Apache-2.016일 전 업데이트
설치

MCP Server Browser

제작자: bytedance

MCP server for browser use access

내 컴퓨터에서 실행★ 39,550Apache-2.014개월 전 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. 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

앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요

PopNx에게 묻기