nodriver-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@nodriver-mcpUse my browser session to scrape product listings from example.com and save results as an artifact."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
nodriver-mcp
A local Codex MCP server for authenticated browser research with nodriver. It keeps a dedicated Chromium/Helium profile between runs and hot-reloads task-specific Python scrapers.
Setup
Requires Python 3.11+, uv, and a Chromium-based browser.
uv sync --lockedAdd this to ~/.codex/config.toml, replacing every placeholder with an absolute path:
[mcp_servers.nodriver]
command = "uv"
args = ["--directory", "<path-to-nodriver-mcp>", "run", "--frozen", "nodriver-mcp"]
startup_timeout_sec = 30
tool_timeout_sec = 600
[mcp_servers.nodriver.env]
NODRIVER_MCP_BROWSER_EXECUTABLE = "<path-to-helium-or-chromium>"
NODRIVER_MCP_USER_DATA_DIR = "<path-to-a-dedicated-browser-profile>"
NODRIVER_MCP_SCRIPTS_DIR = "<path-to-nodriver-mcp>/scrapers"
NODRIVER_MCP_ARTIFACTS_DIR = "<path-to-nodriver-mcp>/artifacts"Restart Codex after changing MCP configuration. The browser starts lazily. It is visible by
default so you can sign in to the dedicated profile once; its cookies persist. Codex passes
headless=true when a prompt explicitly requests headless browsing and selects visible mode
otherwise. Switching modes restarts the managed browser while preserving the profile.
Related MCP server: scout-mcp-server
Use
Ask Codex, for example:
Use my browser session to find matching items on example.com. Inspect the page, create a reusable scraper, run it, and save large results as an artifact. Run headless.
Codex can inspect a page with the browser tools, then save and run a scraper. Each
scraper_run reads the file again, so edits apply without restarting the MCP server:
async def scrape(ctx, params):
if url := params.get("url"):
await ctx.goto(url)
items = await ctx.evaluate_json("""
Array.from(document.querySelectorAll('article')).map(item => ({
title: (item.querySelector('h2')?.innerText || '').trim(),
href: item.querySelector('a')?.href || null
}))
""")
return {"items": items}The entry point must be async def scrape(ctx, params) and return JSON-compatible data. Prefer
one bulk ctx.evaluate_json(...) call. Use ctx.write_artifact(...) for large results. Scrapers
must use async operations and finish all tasks before returning.
Test
uv run --frozen ruff check src tests
uv run --frozen pytestSecurity
Run this server locally over STDIO only. Scrapers are unsandboxed Python with the MCP process's OS access and control of an authenticated browser. Never expose cookies, tokens, passwords, or a DevTools endpoint; treat page content as untrusted; use only data you are authorized to access; and respect site terms and rate limits. Browser profiles, generated scrapers, and artifacts may contain private data and should not be committed.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceMCP server that exposes the Pinchtab browser API for token-efficient web scraping, change detection, and automated testing workflows.15
- AlicenseAqualityBmaintenanceMCP server for browser automation with anti-detection. Scout pages, find elements, interact with websites, and monitor network traffic from any AI client that supports the Model Context Protocol.211MIT
- AlicenseNot gradedqualityAmaintenanceRemote MCP server for web scraping with anti-bot evasion. Provides stealth HTTP fetching, headless browser with Cloudflare bypass, CSS selectors, YouTube transcripts, and Markdown conversion.MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for controlling a local camofox-browser instance, enabling LLM agents to perform web automation tasks such as navigation, interaction, snapshotting, and content extraction.53MIT
Related MCP Connectors
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
An MCP server for deep research or task groups
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/namecallfilter/nodriver-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server