{
  "markdown": "<div align=\"center\">\n  <img src=\"./assets/icon.png\" alt=\"Bright MCP\" width=\"170\" />\n  <br />\n  <i>unofficial support for Bright Data APIs</i>\n  <p>\n    <a href=\"https://github.com/dunkeln/bright_mcp/releases\"><img alt=\"Release\" src=\"https://img.shields.io/github/v/tag/dunkeln/bright_mcp?label=release\" /></a>\n    <a href=\"https://github.com/dunkeln/bright_mcp/actions/workflows/ci.yml\"><img alt=\"CI\" src=\"https://github.com/dunkeln/bright_mcp/actions/workflows/ci.yml/badge.svg\" /></a>\n  </p>\n  <p>\n    Works with <a href=\"#codex\">Codex</a> · <a href=\"#claude-code\">Claude Code</a> · <a href=\"#cursor\">Cursor</a>\n  </p>\n</div>\n\nBright Data services shaped for agents, built on Bun.\n\nThe bet is not one giant tool, or the fewest possible tool calls. It is that the\nmodel should make only the decisions where judgment adds value. Bright MCP keeps\nsearch, source choice, reading, extraction, research, and dataset selection visible;\nit internalizes deterministic plumbing such as retries, polling, pagination,\ntransitions, bounded previews, and partial recovery.\n\n## Why this MCP\n\nBright Data's official MCP is a broad local toolbox. Bright MCP is deliberately a\nsmaller, caller-scoped decision surface for hosted agents. Its seven data tools are\nnamed for outcomes rather than Bright Data product mechanics, keep credentials out\nof model-visible inputs and results, and preserve large or asynchronous results as\nbounded session resources.\n\nThat narrower surface is useful only when it still completes the workflow. Choose\nBright MCP when stable agent contracts, caller isolation, and predictable failure\nboundaries matter. Choose the official MCP when maximum Bright Data coverage and\ndirect provider controls matter more. This project does not claim broader product\ncoverage, durable scheduling, or a replacement Bright Data control plane.\n\nThe seven-tool all profile separates search, ranked source discovery, exact reading,\nextraction, research, maintained dataset discovery, and execution. It pages complete\npages and upstream snapshots as resources and renders structured results in a\ntransient React MCP workbench.\n\nThe full seven-tool contract remains at `/mcp`. Entitlement-aligned installs can\nuse stable three or two-tool surfaces at `/mcp/web`, `/mcp/deep-lookup`, or\n`/mcp/marketplace`; Scraping Browser is a separate four-tool surface at\n`/mcp/browser`. Tool lists never change after initialization based on a probe.\n\n## Install\n\nInstall from [`server.json`](./server.json) in clients that support MCP Registry\nremote metadata. Remote clients discover Bright MCP's OAuth flow, open the\nhosted connect page, and store the resulting OAuth credential in their own\ncredential vault. Paste the Bright Data key once; the service keeps no\ncredential database and never exposes the key to the model.\n\n### Plugin\n\n<a id=\"codex\"></a>\n**Codex**\n\n```bash\ncodex plugin marketplace add dunkeln/bright_mcp\ncodex plugin add bright@bright\n```\n\nSelect **Authenticate** if the install does not open the connection page\nautomatically. Codex stores and refreshes the OAuth credential client-side.\n\n<a id=\"claude-code\"></a>\n**Claude Code**\n\n```bash\nclaude plugin marketplace add dunkeln/bright_mcp\nclaude plugin install bright@bright\n```\n\nOpen `/mcp` and authenticate if the connection page does not open\nautomatically. Claude Code stores the OAuth credential client-side.\n\n<a id=\"cursor\"></a>\n**Cursor**\n\nInstall the plugin or add `https://bright-mcp.onrender.com/mcp` as a remote\nserver. Cursor discovers OAuth and opens the same paste-once connection page.\n\n### Manual header fallback\n\nClients without MCP OAuth may still keep `BRIGHTDATA_API_KEY` in their own\nsecret or environment store and send it as `X-Bright-API-Key`:\n\nClaude Code:\n\n```bash\nclaude mcp add --transport http bright https://bright-mcp.onrender.com/mcp \\\n  --header \"X-Bright-API-Key: ${BRIGHTDATA_API_KEY}\"\nclaude mcp add --transport http bright-browser https://bright-mcp.onrender.com/mcp/browser \\\n  --header \"X-Bright-API-Key: ${BRIGHTDATA_API_KEY}\"\n```\n\n**Cursor** (`~/.cursor/mcp.json`)\n\n```json\n{\n  \"mcpServers\": {\n    \"bright\": {\n      \"url\": \"https://bright-mcp.onrender.com/mcp\",\n      \"headers\": { \"X-Bright-API-Key\": \"${env:BRIGHTDATA_API_KEY}\" }\n    },\n    \"bright-browser\": {\n      \"url\": \"https://bright-mcp.onrender.com/mcp/browser\",\n      \"headers\": { \"X-Bright-API-Key\": \"${env:BRIGHTDATA_API_KEY}\" }\n    }\n  }\n}\n```\n\nThe direct key is forwarded over HTTPS for each request and is not cached or\npersisted by Bright MCP.\nAvailable live capabilities follow the products enabled on that Bright Data account.\nThe browser surface selects the account's sole active Browser API zone automatically. For multiple\nactive zones, append `?zone=<name>` once to the `bright-browser` URL.\n\nChoose the narrowest surface your account and workflow need:\n\n| Endpoint | Tools | Bright Data access | Authentication |\n|---|---|---|---|\n| `/mcp` | All seven data tools | SERP, Discover, Web Unlocker, Deep Lookup, Marketplace as used | OAuth bearer or `X-Bright-API-Key` |\n| `/mcp/web` | `search_web`, `discover_web`, `read_web` | SERP + Discover + Web Unlocker | OAuth bearer or `X-Bright-API-Key` |\n| `/mcp/deep-lookup` | `extract_web`, `research_web` | General Deep Lookup | OAuth bearer or `X-Bright-API-Key` |\n| `/mcp/marketplace` | `find_datasets`, `run_dataset` | Account-visible Marketplace datasets | OAuth bearer or `X-Bright-API-Key` |\n| `/mcp/browser` | Four `browser_*` tools | Scraping Browser | OAuth bearer or `X-Bright-API-Key`; native zone credentials resolved internally |\n\nChoose among the seven data tools by intent:\n\n| Sources | Needed result | Tool |\n|---|---|---|\n| Unknown | Compact links and summaries | `search_web` |\n| Unknown, goal-constrained | Ranked source shortlist | `discover_web` |\n| Known URLs | Readable page evidence | `read_web` |\n| Known URLs | Exact source HTML | `read_web` with `representation: source` |\n| Known URLs | Temporary named fields | `extract_web` |\n| Unknown | Sourced structured records | `research_web` |\n| Maintained vertical data | Typed records | `find_datasets` then `run_dataset` |\n\nSee [SETUP.md](./SETUP.md) for local development, credentials, live checks, and\nhosted authorization.\n\n## Evaluated with MCPJam\n\n<!-- benchmark:start -->\n**Test setup:** MCPJam HostRunner (`@mcpjam/sdk` 2.0.0 on Bun 1.3.14, macOS arm64) gave both MCPs the same five-turn prompts, Bright Data account credential, and `openrouter/anthropic/claude-haiku-4.5` agent through OpenRouter at temperature 0.1 for 5 runs per workflow. Runs were scheduled as matched pairs, two pairs at a time; calls within each conversation stayed sequential with a 120-second turn timeout. Each agent saw only its MCP's advertised tools and could take its own valid path to the same requested output. `anthropic/claude-sonnet-5` then judged anonymized answers against their tool evidence, with a label-swap check for position bias.\n\n![Outcome scorecard comparing completion, blind answer quality, and judge preference](./assets/benchmark-outcomes.png)\n\n**In this five-turn snapshot, Bright MCP leads the product outcomes:** 14/15 completed workflows, 7.59/10 blind quality, and a 9–4 judge preference win. Bright is the guided route: typed outcomes, bounded handoffs, and mechanics handled inside the MCP. The official MCP is the broader toolbox, which is better when coverage and direct provider control matter more than guidance.\n\n![Radar chart comparing blind answer-quality dimensions](./assets/benchmark-radar.png)\n\nBright's structured evidence and explicit provenance made it easier for the model to build a complete, grounded answer across turns. The official MCP still slightly won Known Pages quality, which fits its strong direct scrape-and-clean architecture.\n\n![Horizontal bars comparing blind pairwise preference](./assets/benchmark-preference.png)\n\nThe blind judge preferred Bright MCP 9 times versus 4 for the official MCP, with 2 ties. Bright won Marketplace 5–0; the official MCP won Known Pages 2–1 with 2 ties. That split is useful: Bright's typed workflow helped on multi-step data retrieval, while the official MCP's direct scraper was highly competitive on known URLs.\n\n![Paired horizontal bars comparing successful-workflow latency](./assets/benchmark-latency.png)\n\nSuccessful Search was effectively tied, with the official MCP slightly ahead; Known Pages tied; Bright led Marketplace. The official MCP benefits from a shorter direct search-and-scrape path, while Bright accepts more internal machinery for recovery, batching, and typed transitions.\n\n![Paired horizontal bars comparing successful-run token use](./assets/benchmark-efficiency.png)\n\nThe targeted three-run Search rerun measured 80,628 tokens for Bright versus 169,547 for the official MCP. Bright fell 39% from its earlier 131,866-token baseline after readable-page normalization and stronger summary-sufficiency guidance; one run answered from compact summaries without opening pages. Search uses the new regression result, while the other rows retain the published five-run snapshot.\n\n> Provisional: 67% label-swap agreement is below the 75% publication gate. The Search context rerun had three pairs and no judge calls, so treat it as a regression signal rather than a stable production estimate.\n\n[Evaluation design and provisional results](./evals/README.md#current-tool-use-benchmark)\n<!-- benchmark:end -->\n",
  "bytes": 9380,
  "sha": "cd36e015c53a46363838d5bc420c93095990067a1ce993a048f34b2e6cb77814",
  "repo_slug": "dunkeln/bright_mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_dunkeln_bright_mcp_9338698d/readme"
}