Bright Data MCP
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| API_TOKEN | Yes | Your Bright Data API token from the user settings page | |
| BROWSER_AUTH | No | Optional authentication string for enabling remote browser control tools, formatted like: brd-customer-[your-customer-ID]-zone-[your-zone-ID]:[your-password] | |
| WEB_UNLOCKER_ZONE | No | Optional override for the default mcp_unlocker zone name |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| logging | {} |
| prompts | {} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ask_brightdata_assistantA | Ask Bright Data's support assistant (Sophie) a question about Bright Data products, APIs, MCP usage, zones, scraping, or account setup. Use when the user asks "how do I..." about Bright Data, when you hit a Bright Data error you don't recognize, or when deciding between products (Web Unlocker vs. Scraping Browser vs. dataset tools). Supports threaded follow-ups via dialog_id. |
| search_engineA | Scrape search results from Google, Bing or Yandex. Returns SERP results in JSON or Markdown (URL, title, description),Ideal forgathering current information, news, and detailed search results. |
| scrape_as_markdownA | Fetch one web page. Returns JSON: url, title, format, content. content is the page in one format, markdown by default. Pick another with the format param:
|
| search_engine_batchB | Run multiple search queries simultaneously. Returns JSON for Google, Markdown for Bing/Yandex. |
| scrape_batchA | Fetch up to 5 web pages at once. Returns a JSON array in input order, one item per URL: url, title, format, content, or url and error if that page failed. content is the page in one format, markdown by default. Pick another with the format param:
|
| scrape_as_htmlA | Scrape a single webpage URL and get back the results in HTML. |
| extractA | Scrape a webpage and extract structured data as JSON. First scrapes the page as markdown, then uses AI sampling to convert it to structured JSON format. |
| list_dataset_fieldsA | List the filterable fields of a searchable dataset (field name, type, and description). Call this before search_dataset to learn which field names and types you can filter on. Supported dataset_id values:
|
| search_datasetA | Search a Bright Data dataset by a filter and get matching records back directly (fast Elasticsearch-backed search; no snapshot). Use this to FIND MANY records by criteria, as opposed to run_scraper which collects fresh records by URL. First call list_dataset_fields to get valid field names. A filter is a tree: a group {operator:"and"|"or", filters:[...]} or a leaf {name, value, operator}. Max nesting depth 3. Leaf operators: =, !=, <, <=, >, >=, in, not_in, includes, not_includes, array_includes, not_array_includes, is_null, is_not_null. Supported dataset_id values:
|
| search_scrapersA | Find a Bright Data pre-built scraper (Web Scraper API, 1,200+ sites) for a site or data type, e.g. "amazon reviews" or "linkedin.com". Returns dataset_id, name, domain and collection_methods. Next: call get_scraper_details with a dataset_id and one method. |
| get_scraper_detailsA | Show the scraper description, input fields, example input and main output fields for one method. Call before run_scraper and build the input from sample_input or input_fields. Records may contain more fields than output_fields lists. |
| run_scraperA | Run a scraper method. input is a list of objects shaped like sample_input from get_scraper_details, one per URL or query. collect_by_url returns one record per input; discover_by_* methods return up to limit_per_input records per input, and every record is billed. Waits up to 45 seconds; if still running it returns snapshot_id with status "running": then poll get_scraper_progress and call get_scraper_results when ready. Records with an "error" field explain failed inputs. |
| get_scraper_progressB | Status of a run: starting, running, ready, failed or canceled. |
| get_scraper_resultsC | Records of a finished run. Returns status "running" if not ready yet. |
| refresh_scrapersA | Reload the scraper list now instead of waiting for the daily refresh. |
| session_statsC | Tell the user about the tool usage during this session |
| chatgpt_ai_insightsB | Send a prompt to ChatGPT and get back AI-generated insights. Returns structured answer text, citations, recommendations, and markdown. Useful for GEO and LLM as a judge. |
| perplexity_ai_insightsB | Send a prompt to Perplexity and get back AI-generated insights. Returns structured answer text in markdown format. Useful for GEO and LLM as a judge. |
| scraping_browser_navigateB | Navigate a scraping browser session to a new URL |
| scraping_browser_go_backB | Go back to the previous page |
| scraping_browser_go_forwardB | Go forward to the next page |
| scraping_browser_snapshotA | Capture an ARIA snapshot of the current page showing all interactive elements with their refs. This provides accurate element references that can be used with ref-based tools. Use this before interacting with elements to get proper refs instead of guessing selectors. A filtered snapshot does not include page text; If necessary, call scraping_browser_get_text to read it. |
| scraping_browser_click_refA | Click on an element using its ref from the ARIA snapshot. Use scraping_browser_snapshot first to get the correct ref values. This is more reliable than CSS selectors. |
| scraping_browser_type_refA | Type text into an element using its ref from the ARIA snapshot. Use scraping_browser_snapshot first to get the correct ref values. This is more reliable than CSS selectors. |
| scraping_browser_screenshotA | Take a screenshot of the current page. Set full_page to capture the whole scrollable page. |
| scraping_browser_network_requestsA | Get all network requests made since loading the current page. Shows HTTP method, URL, status code and status text for each request. Useful for debugging API calls, tracking data fetching, and understanding page behavior. |
| scraping_browser_wait_for_refA | Wait for an element to be visible using its ref from the ARIA snapshot. Use scraping_browser_snapshot first to get the correct ref values. This is more reliable than CSS selectors. |
| scraping_browser_fill_formA | Fill multiple form fields in one operation. Use scraping_browser_snapshot first to get the correct ref values. This is more efficient than filling fields one by one. |
| scraping_browser_get_textB | Get the text content of the current page |
| scraping_browser_get_htmlB | Get the HTML content of the current page. Avoid using this tool and if used, use full_page option unless it is important to see things like script tags since this can be large |
| scraping_browser_scrollB | Scroll to the bottom of the current page |
| scraping_browser_scroll_to_refA | Scroll to a specific element using its ref from the ARIA snapshot. Use scraping_browser_snapshot first to get the correct ref values. This is more reliable than CSS selectors. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| web_scraping_strategy | Decision tree for picking the right Bright Data tool. Invoke at the start of any scraping session to learn the correct tool selection order (pre-built scrapers -> Fetch API -> Browser API). |
| diagnose_scraping_approach | Run a two-step diagnostic to discover the correct Bright Data product for a new website. Tries the Fetch API first, then Browser API, then reports which succeeded. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 32 tools
Most tools target distinct actions, but there is real overlap: scrape_as_html duplicates scrape_as_markdown with format='html', and scraping_browser_get_text/get_html and scrape_as_markdown's text/html formats read similar. The two AI-insight tools (chatgpt_ai_insights vs perplexity_ai_insights) and the scrape vs extract vs run_scraper trio are separable only by careful reading of descriptions.
All snake_case and mostly verb_noun with clear group prefixes (scraping_browser_*, get_scraper_*, search_*). Minor deviations: bare 'extract', noun-first names like session_stats and chatgpt_ai_insights, and the ad-hoc 'as_' pattern in scrape_as_markdown/scrape_as_html, but nothing that breaks predictability.
32 tools is heavy, driven mostly by the 14-tool scraping_browser_* automation subgroup. That subgroup is internally coherent and justified by the browser-automation capability, but combined with scraper/dataset/search/AI-insight tools the surface is larger than an agent can comfortably navigate.
Covers stateless scraping, batch, search, an extract/sampling path, full dataset and scraper lifecycle (discover, inspect, run, poll progress, fetch results, refresh), and full browser automation. Minor gaps: no explicit snapshot download/export or list/cancel of snapshots, and no dataset-schema discovery beyond filterable fields.