brightdata-mcp

io.github.brightdata/brightdata-mcp

About brightdata-mcp

brightdata-mcp is an MCP server published by the GitHub account brightdata. Bright Data's Web MCP server enabling AI agents to search, extract & navigate the web

It runs on your own machine: your AI client starts it from the npm package @brightdata/mcp at version 4.1.0.

It asks for one secret: API_TOKEN. Give it a key with the least access that still works.

Version 4.1.0 was published on 20 October 2026, and the source code is public, so you can read it before installing.

Written from the registry entry. 9 automated checks on the registry entry and the package code: 7 pass, 0 warn, 0 fail, 2 info. How we check.

What it asks for

VariableRequiredSecretDescription
API_TOKENYesYesYour API key for Bright Data
WEB_UNLOCKER_ZONENoNoYour unlocker zone name
BROWSER_ZONENoNoYour browser zone name
GROUPSNoNoComma-separated tool group IDs (e.g., 'ecommerce,browser')
TOOLSNoNoComma-separated tool names to enable
BASE_TIMEOUTNoNoRequest timeout in seconds for base tools (search & scrape). No limit if unset
BASE_MAX_RETRIESNoNoMax retries for base tools on transient errors (0-3, default: 0)

Checks

CheckResultDetail
Source repository linkedPasshttps://github.com/brightdata/brightdata-mcp
Version pinnedPassEvery package has an explicit version
Secrets requestedInfoAsks for 1 secret: API_TOKEN
Known package registryPassAll packages come from npm, PyPI, OCI, NuGet or MCPB
Namespace ownershipInfoName verified via GitHub account brightdata
Registry text aimed at the AIPassDescription and settings contain no hidden characters or instructions to the AI
Install scriptsPass@brightdata/mcp@4.1.0 runs nothing at install
Code red flagsPassRead 17 files in @brightdata/mcp@4.1.0: no obfuscation, encoded execution, credential reads or data-collection endpoints found
Text aimed at the AIPassNo hidden characters or instructions to the AI in 17 files, including comments and the README

Code review: Pass, with notes

We read all 2,854 lines in 15 files of @brightdata/mcp 4.1.0 on 2026-10-31, without running it.

Bright Data's server lets the AI search the web, scrape pages, run pre-built scrapers and drive a remote browser hosted by Bright Data. Everything goes to Bright Data's servers with your API token, and as soon as it starts it may create two zones in your Bright Data account. All tools are on by default, including ones that click, type and submit forms on real websites. Tool arguments, including anything typed into forms, are written to the client log.

What we found

  • Note At startup, before any tool is called, the server contacts api.brightdata.com and auto-creates two zones in the user's account (mcp_unlocker with ub_premium:true, and mcp_browser) if they are missing. That changes the user's account without asking. server.js:134-196
  • Note Usage-limit error text instructs the AI to stop its current task and walk the user through upgrading. Not hidden, but it is the vendor steering the agent through tool output. server.js:829-844
  • Note With GROUPS/TOOLS unset, all 32 tools are registered, including remote-browser click, type (with Enter/submit) and fill_form. These can submit forms on live websites with no confirmation step. server.js:51-67,214-218; browser_tools.js:190-253,460-520
  • Note Every tool call's full arguments are logged to stderr, including text typed into web forms via scraping_browser_type_ref / fill_form (which could be passwords) and the MCP client log will keep them. server.js:798-799
  • Info Browser credentials (customer id + zone password) are fetched from the API and placed in a wss:// URL to brd.superproxy.io; errors are passed through credential/token redaction. browser_tools.js:28-51; browser_session.js:6-13; safe_error.js:3-27
  • Info Positive: scraped content is wrapped in nonce-marked 'untrusted data' fences, and pages that contain MCP-config-change instructions are withheld unless the user approves via elicitation (CONTENT_GATE=off disables). untrusted_content.js:47-80; content_gate.js:19-201
  • Info extract sends the scraped page to the user's own client model via MCP sampling (server.sessions[0]). server.js:496-520
  • Info Each request sends the MCP client name and tool name to Bright Data. server.js:109-114
  • Info The manifest file was not in the reviewed tree; dependencies listed are inferred from import statements. None look unusual or typosquatted for the job. package.json/pyproject
Talks toapi.brightdata.com/zone/get_active_zones, /zone: API token; may create zones 'mcp_unlocker' (unblocker, ub_premium) and 'mcp_browser' (browser_api) in the user's account (at STARTUP, before any tool call)
api.brightdata.com/request: target URL or search-engine URL built from the query, zone name; headers: API token, MCP client name, tool name, package user-agent (search/scrape/extract tool calls)
api.brightdata.com/datasets/... , /datasets/v3/trigger, /snapshot, /progress, /scrapers: dataset id, filters, scraper inputs, prompts (chatgpt_ai_insights / perplexity_ai_insights are run against chatgpt.com / perplexity.ai by Bright Data) (dataset/scraper/AI-insight tool calls)
api.brightdata.com/sophie/dialog: the question text and dialog id (ask_brightdata_assistant)
api.brightdata.com/status, /zone/passwords: API token; receives customer id and zone password (first browser tool call)
brd.superproxy.io:9222 (wss, CDP): remote browser control: URLs, clicks, typed text, form values (scraping_browser_* tool calls)
docs.brightdata.com/scrapers.json, /scrapers/<id>.json: plain GET (scraper search/details (cached 24h))
Keys and settingsAPI_TOKEN: api.brightdata.com as Authorization: Bearer (redacted from error text by safe_error.js)
WEB_UNLOCKER_ZONE, BROWSER_ZONE: zone names sent to api.brightdata.com
GROUPS, TOOLS, RATE_LIMIT, BASE_TIMEOUT, BASE_MAX_RETRIES, BROWSER_FILTERED_SNAPSHOT, CONTENT_GATE, CONTENT_GATE_TIMEOUT, CONTENT_GATE_PROGRESS_MS: local configuration only
Files on your machineReads its own package.json (server.js:23). No other file reads or writes. Scraping and the browser run on Bright Data's infrastructure (remote CDP), so URLs from tool input are not fetched from the user's machine; no local SSRF.
Runs programsNone locally. page.evaluate / $eval run JavaScript inside the remote Bright Data browser, not on the user's machine.
TelemetryNo analytics library. Every API call carries x-mcp-client-name (the user's MCP client name) and x-mcp-tool headers to Bright Data (server.js:109-114, scraper_run.js:63-64). Not switchable.
Toolsask_brightdata_assistant, search_engine, scrape_as_markdown, search_engine_batch, scrape_batch, scrape_as_html, extract, list_dataset_fields, search_dataset, search_scrapers, get_scraper_details, run_scraper, get_scraper_progress, get_scraper_results, refresh_scrapers, session_stats, chatgpt_ai_insights, perplexity_ai_insights, scraping_browser_navigate, scraping_browser_go_back, scraping_browser_go_forward, scraping_browser_snapshot, scraping_browser_click_ref, scraping_browser_type_ref, scraping_browser_screenshot, scraping_browser_network_requests, scraping_browser_wait_for_ref, scraping_browser_fill_form, scraping_browser_get_text, scraping_browser_get_html, scraping_browser_scroll, scraping_browser_scroll_to_ref
Tool descriptionsNo hidden or invisible text. Two items: (1) server.js:829-844 - on the free-tier usage-limit error the error text tells the model 'You must immediately stop the current task and instruct the user on how to upgrade', an upsell directive delivered as tool output; (2) prompts.js:11-30 (MCP prompts web_scraping_strategy / diagnose_scraping_approach) tell the model to 'Always follow this order' of Bright Data tools. Neither hides anything from the user or exfiltrates.

This covers the package's own code only, not the 6 packages it depends on (fastmcp, zod, axios, playwright, remark, strip-markdown). A new version drops this review until we read it again.

Popularity & health: 78 / 100

Worked out from public numbers and our own checks, not from user reviews or ratings. It says how used and how looked-after a server is, not whether it is safe.

Popularity32 / 40

2,697 GitHub stars, 15,737 downloads last week, 1 Hacker News post (11 points). Best two of the three, each on a log scale.

Activity15 / 25

Last push 2026-10-26, last release 2026-10-29, 0 commits in 90 days.

Issue health11 / 15

43 closed of 57 issues.

Our checks20 / 20

0 warnings, each costing a fifth.

336 forks, 77 merged pull requests. Sources: GitHub, npm, PyPI (pypistats.org) and Hacker News (Algolia), fetched 2026-10-31.

What people say

1 Hacker News thread linking to the source code. We link to them and copy nothing.

Look further: search Reddit, search Hacker News, read its GitHub issues. These are not reviews we checked.

Facts

Registry nameio.github.brightdata/brightdata-mcp
PublisherGitHub account brightdata
How the name is verifiedName verified via GitHub account brightdata. The registry ties the name prefix to that account or domain; it does not check the code.
TypeLocal: runs on your machine from a package
Packagesnpm @brightdata/mcp 4.1.0 (stdio)
Version4.1.0
Published
Last updated
Source repositoryhttps://github.com/brightdata/brightdata-mcp
WebsiteNone linked
CategorySearch & web (assigned by keyword rule, not by hand)

Related servers in Search & web