nodriver — Chrome MCP server: install in Claude Code
This MCP server gives an AI agent 70 tools for driving Chrome, handling tabs, and collecting page data. Use it for browser automation and web scraping.
claude mcp add --env NODRIVER_HEADLESS=<NODRIVER_HEADLESS> --env NODRIVER_USER_DATA_DIR=<NODRIVER_USER_DATA_DIR> --env NODRIVER_BROWSER_PATH=<NODRIVER_BROWSER_PATH> --env NODRIVER_PROXY=<NODRIVER_PROXY> --transport stdio nodriver-chrome-browser-automation -- uvx nodriver-mcpWhat nodriver — Chrome browser automation does
nodriver connects an AI agent to Chrome through MCP and drives the browser over CDP. Its 70 tools cover navigation, form input, accessibility snapshots, screenshots, PDF output, cookies, storage, profiles, device emulation, and network inspection. Selenium and a separate ChromeDriver binary are not part of the setup.
Persistent profiles keep cookies and signed-in sessions between runs. Startup can open a blank tab, selected URLs, or previously open tabs for each profile. Separate browser processes can run side by side, with their own tabs, cookies, and element identifiers. The Cloudflare checkbox helper requires the [cf] extra, and its result depends on the challenge and browser configuration.
Start the server with uvx nodriver-mcp, then register it in Claude Code with claude mcp add. Environment variables named NODRIVER_HEADLESS, NODRIVER_USER_DATA_DIR, NODRIVER_BROWSER_PATH, and NODRIVER_PROXY control headless mode, profile storage, the browser path, and proxy settings.
What it helps with
- drive Chrome through an AI agent
- fill forms and read page content
- keep logins available across browser sessions
- run isolated browsers for separate tasks
- inspect requests and saved response data
Example prompts for the agent
- Open the site, fill in its registration form, and report the result.
- Take an accessibility snapshot of the page and extract its links and visible text.
- Use a separate browser for this task and inspect the network responses behind the page.
How to install nodriver — Chrome browser automation
Platform CLI
claude mcp add --env NODRIVER_HEADLESS=<NODRIVER_HEADLESS> --env NODRIVER_USER_DATA_DIR=<NODRIVER_USER_DATA_DIR> --env NODRIVER_BROWSER_PATH=<NODRIVER_BROWSER_PATH> --env NODRIVER_PROXY=<NODRIVER_PROXY> --transport stdio nodriver-chrome-browser-automation -- uvx nodriver-mcpReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from nodriver-mcp <command>
Platform CLI
codex mcp add nodriver-chrome-browser-automation --env NODRIVER_HEADLESS=<NODRIVER_HEADLESS> --env NODRIVER_USER_DATA_DIR=<NODRIVER_USER_DATA_DIR> --env NODRIVER_BROWSER_PATH=<NODRIVER_BROWSER_PATH> --env NODRIVER_PROXY=<NODRIVER_PROXY> -- uvx nodriver-mcpReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from nodriver-mcp <command>
Config file
{
"mcpServers": {
"nodriver-chrome-browser-automation": {
"command": "uvx",
"args": [
"nodriver-mcp"
],
"env": {
"NODRIVER_HEADLESS": "<NODRIVER_HEADLESS>",
"NODRIVER_USER_DATA_DIR": "<NODRIVER_USER_DATA_DIR>",
"NODRIVER_BROWSER_PATH": "<NODRIVER_BROWSER_PATH>",
"NODRIVER_PROXY": "<NODRIVER_PROXY>"
}
}
}
}Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from nodriver-mcp <command>
Config file
{
"servers": {
"nodriver-chrome-browser-automation": {
"type": "stdio",
"command": "uvx",
"args": [
"nodriver-mcp"
],
"env": {
"NODRIVER_HEADLESS": "<NODRIVER_HEADLESS>",
"NODRIVER_USER_DATA_DIR": "<NODRIVER_USER_DATA_DIR>",
"NODRIVER_BROWSER_PATH": "<NODRIVER_BROWSER_PATH>",
"NODRIVER_PROXY": "<NODRIVER_PROXY>"
}
}
}
}Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from nodriver-mcp <command>
Platform CLI
gemini mcp add -e NODRIVER_HEADLESS=<NODRIVER_HEADLESS> -e NODRIVER_USER_DATA_DIR=<NODRIVER_USER_DATA_DIR> -e NODRIVER_BROWSER_PATH=<NODRIVER_BROWSER_PATH> -e NODRIVER_PROXY=<NODRIVER_PROXY> nodriver-chrome-browser-automation uvx nodriver-mcpReplace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from nodriver-mcp <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about nodriver — Chrome browser automation
How do I install nodriver in Claude Code?
Run claude mcp add nodriver-mcp-server -- uvx nodriver-mcp. Claude Code will then have the MCP server available.
What does nodriver do?
It lets an AI agent operate Chrome through 70 MCP tools for navigation, page interaction, profiles, storage, screenshots, and network inspection.
What is required for the Cloudflare helper?
The cf_verify helper needs the [cf] extra. Whether it succeeds depends on the challenge and the browser configuration.