io.github.brightdata/brightdata-mcp
平台与服务编辑精选by brightdata
Bright Data Web MCP 是让 AI 助手实时搜索、提取和浏览网页的服务器。
这个服务器解决了 AI 无法访问实时网页数据的痛点,适合需要让 Claude 或 GPT 获取最新资讯、价格或新闻的开发者。不过,免费额度用完后需要付费,对于高频使用场景成本可能较高。
什么是 io.github.brightdata/brightdata-mcp?
Bright Data Web MCP 是让 AI 助手实时搜索、提取和浏览网页的服务器。
README
Overview
The Bright Data MCP server gives AI agents real-time access to public web data. It exposes 32 tools covering:
- Web search — Google, Bing, and Yandex results as structured data
- Page scraping — any URL as Markdown or HTML, with bot detection, CAPTCHA solving, and proxy rotation handled automatically on every request
- Structured data (Web Scraper API) — clean JSON from 1,200+ pre-built scrapers: Amazon, LinkedIn, Instagram, TikTok, YouTube, X, Reddit, Facebook, Crunchbase, Zillow, npm, PyPI and more, without parsing HTML. Six tools find and run any of them
- Browser automation — navigate, click, type, screenshot, and read pages in a remote browser session
- LLM response collection — send prompts to ChatGPT and Perplexity and get their answers back as structured data
Every request is routed through Bright Data's unblocking infrastructure, so pages that block ordinary HTTP clients (bot detection, CAPTCHAs, rate limits, geo-restrictions) return normally. No proxy setup, no headless browser maintenance, no retry logic to write.
Two deployment options: a hosted remote server (one URL, no installation) or a local instance via npx @brightdata/mcp.
Quick Start
Hosted server — no installation. Add this URL to your MCP client:
https://mcp.brightdata.com/mcp?token=YOUR_API_TOKEN_HERE
Get your API token from your Bright Data account settings. New accounts get 5,000 free requests per month.
Optional URL parameters:
| Parameter | Description | Example |
|---|---|---|
groups=<ids> | Enable specific tool groups | ...&groups=scrapers,browser |
tools=<names> | Enable specific tools only | ...&tools=search_engine,scrape_as_markdown |
- Go to: Settings → Connectors → Add custom connector
- Name:
Bright Data - URL:
https://mcp.brightdata.com/mcp?token=YOUR_API_TOKEN - Click "Add"
Or run locally:
{
"mcpServers": {
"Bright Data": {
"command": "npx",
"args": ["@brightdata/mcp"],
"env": {
"API_TOKEN": "<your-api-token-here>"
}
}
}
}
claude mcp add --transport http brightdata "https://mcp.brightdata.com/mcp?token=YOUR_API_TOKEN"
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"brightdata": {
"url": "https://mcp.brightdata.com/mcp?token=YOUR_API_TOKEN"
}
}
}
Add to .vscode/mcp.json:
{
"servers": {
"brightdata": {
"type": "http",
"url": "https://mcp.brightdata.com/mcp?token=YOUR_API_TOKEN"
}
}
}
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"brightdata": {
"serverUrl": "https://mcp.brightdata.com/mcp?token=YOUR_API_TOKEN"
}
}
}
Add to ~/.gemini/settings.json:
{
"mcpServers": {
"brightdata": {
"httpUrl": "https://mcp.brightdata.com/mcp?token=YOUR_API_TOKEN"
}
}
}
Add to your Zed settings:
{
"context_servers": {
"brightdata": {
"url": "https://mcp.brightdata.com/mcp?token=YOUR_API_TOKEN"
}
}
}
Go to Settings > MCP Servers > Add MCP Server and add:
{
"brightdata": {
"url": "https://mcp.brightdata.com/mcp?token=YOUR_API_TOKEN"
}
}
For any client that supports local MCP servers:
{
"mcpServers": {
"Bright Data": {
"command": "npx",
"args": ["@brightdata/mcp"],
"env": {
"API_TOKEN": "<your-api-token-here>"
}
}
}
}
Pricing and Free Tier
Every account includes a recurring monthly free tier. No credit card or commitment required to start.
5,000 free requests per month, renewing on the 1st of each month. Unused requests don't roll over. For team accounts, the free tier is shared across all users in the account.
What's included free:
- Fetch any webpage and extract as Markdown
- Access to 60+ pre-built scrapers for popular domains
- Web search (Google, Bing, Yandex)
- Web unlocking (bot detection bypass, CAPTCHA solving, proxy rotation)
- Browser automation
- Geo-targeting
Beyond the free tier — pay as you go, no commitment:
| Search, Scrape & Extract | Browser Navigation | |
|---|---|---|
| Pay as you go | $1.50 / 1K results | $8 / GB |
- When free requests run out, requests stop. No surprise charges — unless you have deposited funds
- Adding a credit card is a verification step only; you are not charged unless your free tier is exhausted and you have funds deposited
- Set a spend cap in the control panel so pay-as-you-go usage never exceeds your budget
Full pricing, volume plans and enterprise →
Use Cases
Real-time research
Answer questions using live web data instead of training data. Search, then read the sources.
| Task | Tools |
|---|---|
| Search the web for current information | search_engine, search_engine_batch |
| Read a specific page as clean Markdown | scrape_as_markdown, scrape_batch |
| Find the most relevant sources for a research question, ranked by AI relevance score | discover |
Example prompts: "What's Tesla's current stock price?", "Get today's weather forecast for New York", "Find the most cited sources on EU AI regulation from the last 6 months".
E-commerce intelligence
Read product data as structured JSON: price, availability, rating, review count, seller, images.
| Task | Tools |
|---|---|
| Products, reviews and search results from Amazon, Walmart, eBay, Best Buy, Etsy, Home Depot, Zara and other stores | search_scrapers → get_scraper_details → run_scraper |
| Cross-retailer price view | the same flow with the Google Shopping scraper |
Example prompts: "Compare this laptop's price on Amazon vs Walmart vs Best Buy", "Get the rating and review count for ASIN B0D2Q9397Y", "Is this product in stock?".
Market and competitor analysis
Build competitor profiles from live data: funding, headcount, hiring, customer reviews, pricing pages.
| Task | Tools |
|---|---|
| Company funding, size, employees, job postings (Crunchbase, ZoomInfo, LinkedIn) | search_scrapers → run_scraper |
| Customer sentiment (Google Maps, Facebook, app store reviews) | search_scrapers → run_scraper |
| Competitor pricing pages | scrape_as_markdown, scrape_batch |
| Market discovery | search_engine_batch, discover |
Example prompt: "Analyze Notion as a competitor: pricing, funding, hiring focus, and what customers complain about".
AI agents with reliable web access
Replace built-in fetch/search tools that get blocked on protected sites. Every request goes through unblocking infrastructure, so agents don't fail on bot detection, CAPTCHAs, or geo-restrictions.
| Task | Tools |
|---|---|
| Drop-in replacement for built-in web search | search_engine |
| Drop-in replacement for built-in URL fetch | scrape_as_markdown |
| Parallel data collection (10 at a time) | search_engine_batch, scrape_batch |
| Interactive sites (login walls, infinite scroll, dynamic content) | scraping_browser_* (14 tools) |
| Structured JSON from any page, no schema needed | extract |
Coding agents
Package registry data on demand — no scraping, no stale caches.
| Task | Tools |
|---|---|
| npm and PyPI package version, README, metadata | run_scraper with the npmjs or pypi scraper (find them with search_scrapers) |
| Read files from GitHub repositories | run_scraper with the GitHub repository scraper |
Example prompts: "What's the latest version of express on npm?", "Get the README for the langchain-brightdata PyPI package".
GEO and brand visibility
Send prompts to major LLMs and get their answers back as structured data. Measure how AI assistants describe your brand, which sources they cite, and what they recommend — the feedback loop for Generative Engine Optimization.
| Task | Tools |
|---|---|
| ChatGPT answers with citations and recommendations | chatgpt_ai_insights |
| Perplexity answers with sources | perplexity_ai_insights |
Example prompt: "Ask ChatGPT and Perplexity 'what is the best proxy provider' and compare how each one ranks us".
Social media monitoring
Structured data from every major platform: profiles, posts, comments, engagement metrics. Each platform has scrapers per data type (LinkedIn profiles, Instagram reels, TikTok comments, ...); find them with search_scrapers and run them with run_scraper.
| Platform | Examples of scrapers |
|---|---|
| person profiles, company profiles, job listings, posts, people search | |
| profiles, posts, reels, comments | |
| TikTok | profiles, posts, shop, comments |
| profiles, posts, marketplace listings, company reviews, events | |
| YouTube | videos, channels, comments |
| X (Twitter) | posts, posts by profile |
| posts, comments |
Example prompt: "Get the last 10 posts from this TikTok profile and summarize the engagement".
Content creation and academic research
Gather source material from many pages at once, filtered by recency and relevance.
| Task | Tools |
|---|---|
| Collect multiple sources in one call | scrape_batch (up to 10 URLs) |
| Find sources by topic with date filtering | discover with start_date / end_date |
| News and finance data | search_engine with news queries, run_scraper with the Yahoo Finance scraper |
How It Compares
| Capability | Bright Data MCP | Typical web MCP servers |
|---|---|---|
| Total tools | 32 | 2–10 |
| Platform-specific structured JSON extractors | 1,200+ pre-built scrapers across e-commerce, social, business, finance, travel, app stores, through 6 tools | Rare; generic scraping only |
| Unblocking (bot detection bypass, CAPTCHA solving, proxy rotation) | Built into every request | Usually none; blocked on protected sites |
| Search engines | Google, Bing, Yandex | Usually one |
| AI-relevance-ranked search with intent | Yes (discover) | Not offered |
| Browser automation | 14 tools, remote browser, no local setup | Limited or none |
| LLM response collection (ChatGPT, Perplexity) | Yes | Not offered |
| Package registry data (npm, PyPI) | Yes | Not offered |
| Batch operations | 10 searches or 10 scrapes per call | Usually single-request only |
| Geo-targeting | Yes | Limited or none |
| Free tier | 5,000 requests/month, browser automation included, no credit card | Varies; often rate-limited keyless access |
Tool Selection: Groups
Tools are organized into groups so you only load what you need. Fewer tools means less context for your agent to process.
GROUPSenables tool bundles. Comma-separated:GROUPS="scrapers,browser"(local) or&groups=scrapers,browser(hosted URL)TOOLSadds individual tools on top:TOOLS="extract,scrape_as_html"- Base tools are always enabled:
search_engine,search_engine_batch,scrape_as_markdown,scrape_batch,discover - Group ID
customis reserved; useTOOLSfor individual picks
| Group ID | Contents | Tool count |
|---|---|---|
scrapers | Search and run any pre-built Web Scraper API scraper (Amazon, LinkedIn, TikTok, npm, ...) | 6 |
browser | Remote browser automation | 14 |
geo | ChatGPT and Perplexity response collection | 2 |
advanced_scraping | Batch tools, HTML scraping, AI extraction, session stats | 5 |
Older group IDs (ecommerce, social, business, finance, research, app_stores, travel, code) still work and enable the scrapers tools; social and business also add search_dataset and list_dataset_fields. Old web_data_* names in TOOLS enable the scrapers tools too.
Configuration examples
Local server with browser automation and AI extraction:
{
"mcpServers": {
"Bright Data": {
"command": "npx",
"args": ["@brightdata/mcp"],
"env": {
"API_TOKEN": "<your-api-token-here>",
"GROUPS": "browser,advanced_scraping",
"TOOLS": "extract"
}
}
}
}
Coding agent setup (Claude Code / Cursor / Windsurf) — npm, PyPI and GitHub data through the pre-built scrapers:
{
"mcpServers": {
"Bright Data": {
"command": "npx",
"args": ["@brightdata/mcp"],
"env": {
"API_TOKEN": "<your-api-token-here>",
"GROUPS": "scrapers"
}
}
}
}
Tools Reference (32 Tools)
Which tool to use
- Known URL, need the content:
scrape_as_markdown. Multiple URLs (up to 10):scrape_batch - Need to find information:
search_engine. Multiple queries (up to 10):search_engine_batch - Deep research or RAG, need relevance-ranked sources:
discoverwith anintent - Structured data from a known platform (Amazon, LinkedIn, TikTok, npm, PyPI, etc.):
search_scrapers→get_scraper_details→run_scraper— returns clean JSON, faster and more reliable than scraping the same page - Structured JSON from a page no scraper covers:
extract - Raw HTML:
scrape_as_html - Page requires interaction (click, type, scroll, login):
scraping_browser_*tools - How ChatGPT/Perplexity answer a prompt:
chatgpt_ai_insights/perplexity_ai_insights
Notes on scraper runs:
- Return structured JSON, billed per record returned
- Records with an
errorfield explain inputs that failed, e.g. a URL of the wrong type - Results can be large. Keep
limit_per_inputlow fordiscover_by_*methods and run bulk collection in a subagent where your framework supports it, so records don't flood the main context window - If a run fails,
scrape_as_markdownworks on the same URL as a fallback
| Tool | Description | Group |
|---|---|---|
search_engine | Search Google, Bing, or Yandex. Google returns JSON (URL, title, description); Bing and Yandex return Markdown. Paginate with the cursor parameter | always enabled |
search_engine_batch | Up to 10 search queries in one call | always enabled |
scrape_as_markdown | Any URL as Markdown. Bot protection and CAPTCHA handled automatically | always enabled |
scrape_batch | Up to 10 URLs in one call; returns an array of URL/content pairs in Markdown | always enabled |
discover | AI-relevance-ranked web search. Returns scored results (title, description, URL, relevance score). Supports intent-based ranking, geo-targeting, date filtering, keyword filtering | always enabled |
scrape_as_html | Any URL as raw HTML | advanced_scraping |
extract | Scrape a page and convert it to structured JSON using AI, with an optional custom extraction prompt | advanced_scraping |
session_stats | Tool usage counts for the current session | advanced_scraping |
Search and run any of Bright Data's 1,200+ pre-built scrapers. The scraper list is loaded from docs.brightdata.com/scrapers.json and refreshed daily. Available on both the hosted and the local server. Enabled by default when no tools or groups are selected; otherwise add the scrapers group (&groups=scrapers on the hosted URL, GROUPS=scrapers locally).
Typical flow: search_scrapers → get_scraper_details → run_scraper. Runs are billed per record; discover_by_* methods collect up to limit_per_input records per input (default 10).
| Tool | Description | Group |
|---|---|---|
search_scrapers | Find scrapers by site or data type (e.g. "amazon reviews", "linkedin.com"). Returns dataset ID, name, domain and collection methods | default / scrapers |
get_scraper_details | Description, input fields, example input and main output fields for one scraper method | default / scrapers |
run_scraper | Run a scraper method. Waits up to 45 seconds; if still running, returns a snapshot_id to check later | default / scrapers |
get_scraper_progress | Status of a run: starting, running, ready, failed or canceled | default / scrapers |
get_scraper_results | Records of a finished run | default / scrapers |
refresh_scrapers | Reload the scraper list now instead of waiting for the daily refresh | default / scrapers |
Remote browser session. Typical sequence: navigate → snapshot → interact by ref → extract or screenshot.
| Tool | Description |
|---|---|
scraping_browser_navigate | Open or reuse a browser session and navigate to a URL |
scraping_browser_go_back | Navigate back |
scraping_browser_go_forward | Navigate forward |
scraping_browser_snapshot | ARIA snapshot of the page listing interactive elements with refs. Required before ref-based actions |
scraping_browser_click_ref | Click an element by ref from the latest snapshot |
scraping_browser_type_ref | Type into an element by ref; optionally press Enter to submit |
scraping_browser_fill_form | Fill several form fields by ref in one call |
scraping_browser_screenshot | Screenshot of the current page; optional full_page |
scraping_browser_get_text | Text content of the page body |
scraping_browser_get_html | HTML of the current page |
scraping_browser_scroll | Scroll to the bottom of the page |
scraping_browser_scroll_to_ref | Scroll an element into view |
scraping_browser_wait_for_ref | Wait for an element to become visible, with optional timeout |
scraping_browser_network_requests | Network requests since page load: method, URL, status |
Refs come from the latest snapshot. If the page changes after a click or navigation, take a new snapshot before the next ref-based action. For static pages, scrape_as_markdown is faster and cheaper than a browser session.
| Tool | Input | Returns |
|---|---|---|
chatgpt_ai_insights | Prompt | ChatGPT's answer as Markdown |
perplexity_ai_insights | Prompt | Perplexity's answer as Markdown |
Use for Generative Engine Optimization (tracking how LLMs describe your brand) and LLM-as-a-judge workflows.
</details> <details> <summary><b>Dataset Search — 2 tools</b></summary>Filter search over stored LinkedIn datasets; returns matching records at once, with no scraper run.
| Tool | Description | Group |
|---|---|---|
list_dataset_fields | Filterable fields of a dataset (name, type, description). Call before search_dataset | social, business |
search_dataset | Records matching a filter, up to 10 per call, with a cursor for more | social, business |
Full tool reference in the docs →
Agent Skills
Ready-to-use skills that teach your agent how to use this MCP server correctly. The full collection lives at github.com/brightdata/skills — 21 skills covering MCP orchestration, competitive intelligence, price comparison, brand listening, SEO audits, scraper building, RAG pipelines, and more.
Three of the highest-impact skills:
| Skill | What it does |
|---|---|
| bright-data-mcp | Makes Bright Data MCP the default for all web data operations, replacing WebFetch, WebSearch, and other built-in web tools that fail on bot detection |
| competitive-intel | Competitor snapshots, pricing comparison, review mining, hiring signals, content/SEO analysis, and market landscape maps from live web data |
| price-comparison | Resolves a product across Amazon, Walmart, eBay, Best Buy, and Google Shopping and names the cheapest in-stock option |
Configuration
Basic setup (local)
{
"mcpServers": {
"Bright Data": {
"command": "npx",
"args": ["@brightdata/mcp"],
"env": {
"API_TOKEN": "your-token-here"
}
}
}
}
Advanced configuration
{
"mcpServers": {
"Bright Data": {
"command": "npx",
"args": ["@brightdata/mcp"],
"env": {
"API_TOKEN": "your-token-here",
"RATE_LIMIT": "100/1h",
"WEB_UNLOCKER_ZONE": "custom",
"BROWSER_ZONE": "custom_browser",
"POLLING_TIMEOUT": "600"
}
}
}
}
Environment variables
| Variable | Description | Default | Example |
|---|---|---|---|
API_TOKEN | Your Bright Data API token (required) | - | your-token-here |
RATE_LIMIT | Custom rate limiting | unlimited | 100/1h, 50/30m |
WEB_UNLOCKER_ZONE | Custom Web Unlocker zone name | mcp_unlocker | my_custom_zone |
BROWSER_ZONE | Custom Browser zone name | mcp_browser | my_browser_zone |
POLLING_TIMEOUT | Timeout for discover polling (seconds). Each second = 1 polling attempt | 600 | 300, 1200 |
CONTENT_GATE | When page content returned by a data tool looks like instructions to change the MCP configuration, the server asks the user (via MCP elicitation) before returning it. Set to off to disable | on | off |
CONTENT_GATE_TIMEOUT | Seconds to wait for the user's answer before withholding the content | 120 | 60, 300 |
BASE_TIMEOUT | Request timeout for base tools in seconds (search and scrape) | No limit | 60, 120 |
BASE_MAX_RETRIES | Max retries for base tools on transient errors (0-3) | 0 | 1, 3 |
GROUPS | Comma-separated tool group IDs | - | scrapers,browser |
TOOLS | Comma-separated individual tool names | - | extract,scrape_as_html |
Content gate
scrape_as_markdown, search_engine, extract and their batch variants return whatever a web
page says. If that content contains text that reads like instructions to change your MCP
configuration — register a server, run an npx -y package, edit the MCP config file — the server
pauses and asks you, through your MCP client, before returning it. Approve and the content is
returned unchanged; decline and it is withheld with a short explanation to the assistant. Pages that
do not contain such text are returned exactly as before, with no prompt. For a batch call, only the
matching items are withheld.
Pages that are about MCP configuration (documentation, READMEs) will naturally prompt. Clients that
do not support MCP elicitation get the matching content withheld; set CONTENT_GATE=off if you
accept the risk. While the server waits for your answer it reports progress; clients that do not
extend their tool timeout on progress will cap the wait at their own limit — CONTENT_GATE_TIMEOUT
is the knob on the server side. Browser tools are not covered.
Documentation
| Resource | Link |
|---|---|
| API documentation | docs.brightdata.com/ai/mcp-server/overview |
| Full tools reference | docs.brightdata.com/ai/mcp-server/tools |
| Agent skills | github.com/brightdata/skills |
| Usage examples | examples |
| Changelog | CHANGELOG.md |
Troubleshooting
<details> <summary><b>Common issues and solutions</b></summary>"spawn npx ENOENT" error
Install Node.js, or use the full path to node:
"command": "/usr/local/bin/node" // macOS/Linux
"command": "C:\\Program Files\\nodejs\\node.exe" // Windows
Timeouts on complex sites
Increase the timeout in your client settings to 180s.
Authentication issues
Verify your API token is valid and has the required permissions. Tokens are managed in account settings.
run_scraper returns errors or no data
Records with an error field explain inputs that failed. Compare your input with sample_input from get_scraper_details (e.g., Amazon product URLs contain /dp/, Walmart ones /ip/) and check the page is publicly accessible. scrape_as_markdown works on the same URL as a fallback.
Remote server connection fails
Check your internet connection and firewall settings.
</details>Contributing
Please follow Bright Data's coding standards.
Support
| Channel | Link |
|---|---|
| GitHub issues | github.com/brightdata-com/brightdata-mcp/issues |
| Documentation | docs.brightdata.com/ai/mcp-server/overview |
| support@brightdata.com |
License
MIT © Bright Data Ltd.
常见问题
io.github.brightdata/brightdata-mcp 是什么?
Bright Data's Web MCP server enabling AI agents to search, extract & navigate the web
相关 Skills
MCP构建
by anthropics
聚焦高质量 MCP Server 开发,覆盖协议研究、工具设计、错误处理与传输选型,适合用 FastMCP 或 MCP SDK 对接外部 API、封装服务能力。
✎ 想让 LLM 稳定调用外部 API,就用 MCP构建:从 Python 到 Node 都有成熟指引,帮你更快做出高质量 MCP 服务器。
Slack动图
by anthropics
面向Slack的动图制作Skill,内置emoji/消息GIF的尺寸、帧率和色彩约束、校验与优化流程,适合把创意或上传图片快速做成可直接发送的Slack动画。
✎ 帮你快速做出适配 Slack 的动图,内置约束规则和校验工具,少踩上传与播放坑,做表情包和演示都更省心。
接口测试套件
by alirezarezvani
扫描 Next.js、Express、FastAPI、Django REST 的 API 路由,自动生成覆盖鉴权、参数校验、错误码、分页、上传与限流场景的 Vitest 或 Pytest 测试套件。
✎ 帮你把API与集成测试自动化跑顺,减少回归漏测;能力全面,尤其适合复杂接口场景的QA团队。
相关 MCP Server
Slack 消息
编辑精选by Anthropic
Slack 是让 AI 助手直接读写你的 Slack 频道和消息的 MCP 服务器。
✎ 这个服务器解决了团队协作中需要 AI 实时获取 Slack 信息的痛点,特别适合开发团队让 Claude 帮忙汇总频道讨论或发送通知。不过,它目前只是参考实现,文档有限,不建议在生产环境直接使用——更适合开发者学习 MCP 如何集成第三方服务。
by netdata
io.github.netdata/mcp-server 是让 AI 助手实时监控服务器指标和日志的 MCP 服务器。
✎ 这个工具解决了运维人员需要手动检查系统状态的痛点,最适合 DevOps 团队让 Claude 自动分析性能数据。不过,它依赖 NetData 的现有部署,如果你没用过这个监控平台,得先花时间配置。
by d4vinci
Scrapling MCP Server 是专为现代网页设计的智能爬虫工具,支持绕过 Cloudflare 等反爬机制。
✎ 这个工具解决了爬取动态网页和反爬网站时的头疼问题,特别适合需要批量采集电商价格或新闻数据的开发者。不过,它依赖外部浏览器引擎,资源消耗较大,不适合轻量级任务。