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

nodriver — Chrome browser automation

제작자: andresolbach버전 2.6.1i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.andresolbach/nodriver-mcp-server

설치

개요

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

Chrome automation via nodriver: 70 tools, isolated browsers, profiles and configurable startup.

PopNx MCP의 세 기둥

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

할 수 있는 일

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

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

설치

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

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 직접 입력할 값: NODRIVER_HEADLESS, NODRIVER_USER_DATA_DIR, NODRIVER_BROWSER_PATH, NODRIVER_PROXY

필요한 것

  • PyPIPython의 uv 설치(uvx 명령어용)

어떤 앱을 쓰세요?

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

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

{
  "mcpServers": {
    "nodriver": {
      "command": "uvx",
      "args": [
        "nodriver-mcp"
      ],
      "env": {
        "NODRIVER_HEADLESS": "your-value",
        "NODRIVER_USER_DATA_DIR": "your-value",
        "NODRIVER_BROWSER_PATH": "your-value",
        "NODRIVER_PROXY": "your-value"
      }
    }
  }
}

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

claude mcp add nodriver --env NODRIVER_HEADLESS=your-value --env NODRIVER_USER_DATA_DIR=your-value --env NODRIVER_BROWSER_PATH=your-value --env NODRIVER_PROXY=your-value -- uvx nodriver-mcp

실행하기 전에 빈 값을 채워 주세요.

Cursor에서 열기

또는 설정을 직접 복사하기

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

{
  "mcpServers": {
    "nodriver": {
      "command": "uvx",
      "args": [
        "nodriver-mcp"
      ],
      "env": {
        "NODRIVER_HEADLESS": "your-value",
        "NODRIVER_USER_DATA_DIR": "your-value",
        "NODRIVER_BROWSER_PATH": "your-value",
        "NODRIVER_PROXY": "your-value"
      }
    }
  }
}

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

VS Code에서 열기

또는 설정을 직접 복사하기

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

{
  "servers": {
    "nodriver": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "nodriver-mcp"
      ],
      "env": {
        "NODRIVER_HEADLESS": "your-value",
        "NODRIVER_USER_DATA_DIR": "your-value",
        "NODRIVER_BROWSER_PATH": "your-value",
        "NODRIVER_PROXY": "your-value"
      }
    }
  }
}

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

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

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

직접 입력할 값

  • NODRIVER_HEADLESS env
    Run Chrome headless (true/false). Default false.
  • NODRIVER_USER_DATA_DIR env
    Explicit persistent Chrome profile directory. Default: an ephemeral temp profile, auto-deleted per session.
  • NODRIVER_BROWSER_PATH env
    Path to the Chrome/Chromium executable. Auto-detected when unset.
  • NODRIVER_PROXY env
    Proxy server address passed to Chrome as --proxy-server.

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

할 수 있는 일

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

기본 점검i

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

  • ✓ 통과

    제작자와 저장소 일치

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

  • … 아직 점검 안 함

    계속 관리되고 있음

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

  • … 아직 점검 안 함

    라이선스 있음

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

  • – 해당 없음

    엔드포인트 응답

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

  • – 해당 없음

    OAuth로 로그인

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

  • … 아직 점검 안 함

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

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

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

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

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

자주 묻는 질문

nodriver — Chrome browser automation, 안전한가요?

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

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

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

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

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

아직 관리되고 있나요?

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

어떤 앱에서 쓸 수 있나요?

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

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

같은 카테고리에는: 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, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

nodriver-mcp-server

Give your AI agent a full Chrome workspace. Browse, fill forms, extract data and inspect the requests behind a page with 70 MCP tools, powered by nodriver. Keep your logins, run isolated browsers side by side, and pick up where you left off with automatic tab restoration. One-command setup for Claude, Claude Code, Cursor, Windsurf, Codex and other Model Context Protocol clients.

Keywords: MCP server · browser automation · undetected chromedriver · anti-bot · Cloudflare bypass · web scraping · Claude · Cursor · nodriver · chrome-devtools-mcp alternative · Playwright/Puppeteer alternative · AI agent tools.

More browsing, less setup

  • Log in once, come back ready. Persistent profiles keep cookies and logins between sessions.
  • Start your way. Open a fresh tab, a set of favorite URLs, or the tabs you left open — configurable through MCP, per profile.
  • Give each task its own browser. Run up to 12 isolated browser sessions without sharing tabs, cookies or the selected page.
  • Get the data behind the page. Read accessibility snapshots, inspect API traffic and save response bodies for later search.
  • Automate real Chrome directly. nodriver, the successor of undetected-chromedriver, uses CDP without Selenium or a ChromeDriver binary and is designed to reduce common automation signals.

Explore the 70-tool reference, or get started with uvx nodriver-mcp.

Does it actually pass? Here is the evidence

Claiming "undetected" is easy, so here is what the standard fingerprint suite reports when this server drives the page itself. Reproduce it in one line: point your agent at https://bot.sannysoft.com and take a snapshot.

CheckResult
bot.sannysoft.com — Intoli + fingerprint suite58 checks, 0 failed
navigator.webdriverfalse — a boolean on Navigator.prototype, not an own property, exactly as in a normal browser
window.chromepresent
navigator.plugins5
navigator.languages4 entries
User agentno Headless token

Measured on Chrome 151 / Windows 11, headful, with the default profile. The current functional test suite uses Chrome 155 and nodriver 0.50.6. See Scope and limitations for how to interpret the fingerprint result.

Features

  • 🕵️ Direct CDP automation — nodriver avoids Selenium and a ChromeDriver binary and is designed to reduce common automation signals.
  • ☁️ Cloudflare checkbox helper (cf_verify, needs the [cf] extra); success depends on the challenge and browser configuration.
  • 🖼️ Frames are not a blind spot — list_frames plus a frame argument on the readers, and take_snapshot splices each iframe's tree in under the element hosting it, so a payment field or consent wall inside one gets a uid and can be clicked and filled like anything else.
  • 🔍 A network log that says what happened — status, response headers, a DevTools-style timing breakdown (DNS, connect, TLS, time to first byte, download), the script and line that started each request, transfer size, redirect hops and failures, plus WebSocket frames and server-sent events. A 500, a 404, a redirect and a DNS failure are different lines, not the same one.
  • 💾 Response capture to disk — capture_bodies captures matching responses from tabs, workers and service workers before later navigation or buffer eviction can discard them. A JSON index records URL, POST data, status and headers; search_bodies searches saved traffic. Capture status reports saved bodies, skips and errors.
  • 🛡️ Passive security review built in — audit_security checks security headers (with a real CSP analysis: nonces, strict-dynamic, multiple policies), CORS, TLS and certificates of every origin, cookie flags, responses a CDN could serve to the wrong user, every first and third party the page talks to, and lists what Chrome's own Issues panel reports: CSP violations, mixed content, rejected cookies. inspect_storage inventories localStorage, sessionStorage, IndexedDB, Cache Storage and service workers, and decodes tokens it finds there. export_har writes everything to a HAR file for Burp, ZAP or DevTools — with the wire headers, Cookie and Set-Cookie included.
  • 👥 Several isolated browsers at once — pass browser: "agent-a" to any tool and that name gets its own Chrome, in its own process, with its own cookies, tabs and uids. Parallel agents stop stealing each other's selected tab. Omit it and nothing changes: the default browser runs in the server process, exactly as before. How it works
  • 🧩 70 tools covering navigation, input, snapshots, screenshots, content/PDF export, network + console inspection, device emulation, cookies/storage, sessions, profiles, and performance tracing.
  • 🧠 Schemas written for the agent, not just the compiler — every parameter carries a description, fixed-value options are real enums, and each tool declares read-only/destructive hints. See why this matters.
  • 📄 Compact accessibility-tree snapshots (take_snapshot) — searchable page text with a uid per element. Measured on the Hacker News front page: 27 KB against 97 KB unfiltered, 72% smaller, with every link, URL and text preserved. Same-origin URLs are printed relative to the page, which is lossless because the root node keeps the absolute one. That saving lands on every single agent step.
  • 🔗 Attach to a browser you are already signed into (use_running_browser) — drive your real Chrome profile over its debugging port instead of rebuilding logins in a fresh one.
  • 📱 Device emulation (Pixel 7, iPad) with correct UA / client hints.
  • ✅ Actions that verify themselves — fill reads the value back, set_checked reads the checked state back, and click, press_key and type_text report when no input event reached the page. A tool that cannot confirm what it did says so instead of reporting success.
  • 💾 Session save/restore — persist logins across runs.
  • 🧬 Ephemeral by default, persistent when needed — each session gets its own temporary Chrome profile. Named persistent profiles retain logins and offer configurable startup: a new tab (default), specified URLs, or the previous tabs without a restore-button click.
  • ⚡ One-command setup for 15+ MCP clients.

Installation

# Recommended: isolated install, won't touch your global Python environment

uv tool install nodriver-mcp

or with pip

pip install nodriver-mcp

or run it without installing anything

uvx nodriver-mcp

Requires uv for the first and third form. To track the development branch instead of a release:

uv tool install "nodriver-mcp @ git+https://github.com/andresolbach/nodriver-mcp-server.git@main"

Also listed in the official MCP Registry as io.github.andresolbach/nodriver-mcp-server, so clients and marketplaces that read the registry can find and install it directly.

Uses upstream nodriver >=0.50.6, tested against Chrome 155. uv tool install keeps dependencies isolated from your global Python environment.

You'll also need a local installation of Google Chrome (auto-detected).

Upgrade
uv tool upgrade nodriver-mcp

Requirements & tested versions

The automated suite runs schema, documentation and behavior checks plus real-browser integration tests. The current Windows browser test environment is Chrome 155 / nodriver 0.50.6 / Python 3.12.11. CI also runs the non-browser suite on macOS and Linux. Future Chrome or nodriver releases can require compatibility updates.

ComponentRequirementVerified version
Python3.12+3.12.11
Google Chromeany recent stable155.0.8059.79
Operating systemWindows / macOS / LinuxWindows 11
nodriver>= 0.50.60.50.6
mcp (MCP SDK)>= 1.26.0, < 21.26.0
pillow>= 12.1.112.1.1
tomli-w>= 1.0.01.2.0

Runtime dependency ranges and tested versions are listed in requirements.txt. uv tool install creates an isolated installation; contributors can use uv sync --locked --group dev in this repository to reproduce the committed dependency set.

One-command MCP client setup

# Interactive client selector (terminal TUI)

nodriver-mcp install

Install to specific clients

nodriver-mcp install claude,cursor,kiro

Uninstall

nodriver-mcp uninstall claude

List all supported clients

nodriver-mcp --list-clients

Print MCP config JSON (for manual setup)

nodriver-mcp --config

Project-level config (writes to .cursor/mcp.json, .mcp.json, etc.)

nodriver-mcp install --scope project

Supported clients: Claude Desktop, Claude Code, Cursor, Windsurf, Codex, Gemini CLI, Copilot CLI, Kiro, VS Code, Cline, Roo Code, Amazon Q, Warp, Opencode, Trae.

The Claude Code VS Code extension shares Claude Code's config (~/.claude.json), so installing to claude-code covers both the CLI and the extension.

Manual config

If you'd rather paste it yourself, this works in any MCP client (claude_desktop_config.json, ~/.claude.json, .cursor/mcp.json, .mcp.json, …):

{

"mcpServers": { "nodriver": { "command": "uvx", "args": ["nodriver-mcp"] } } }

Environment Variables

VariableDescriptionDefault
NODRIVER_HEADLESSHeadless mode (true/false)false
NODRIVER_USER_DATA_DIRExplicit persistent Chrome profile dir (overrides the default)Ephemeral temp profile, auto-deleted per session
NODRIVER_BROWSER_PATHChrome executable pathAuto-detected
NODRIVER_PROXYProxy server addressNone
NODRIVER_BROWSER_URLAttach to a Chrome already running at this address (e.g. http://127.0.0.1:9222) instead of launching oneLaunch our own
NODRIVER_ENABLE_TRANSLATESet true to re-enable Chrome's Google Translate popupDisabled
NODRIVER_ENABLE_EXTENSIONSSet true to allow externally-installed Chrome extensions (and their prompts)Disabled

By default the browser starts clean for automation: the Google Translate popup is suppressed and externally-installed Chrome extensions are blocked (so you don't get "an extension requires your attention" prompts). Re-enable either via the env vars above or at runtime with the `set_browser_flags` tool — whic

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

PopNx에게 묻기