# Web Scraping MCP Servers: 9 Options Compared for AI Agents (2026)


A web scraping MCP server gives an AI agent tools for reading the web: fetch a URL, search, click through a page, or extract structured data, all called through the Model Context Protocol from clients such as Claude, Cursor, or VS Code. On GitHub, the most-starred dedicated servers are Chrome DevTools MCP (55,006 stars) and Playwright MCP (39,363). Both drive a browser on your machine. Apify's (15,360) and Firecrawl's (7,785) come next, and they send the work to their cloud platforms. Counts are from November 9, 2026.

We pulled star counts from the GitHub API and 30-day downloads from npm and PyPI on November 9, 2026. Then we read each server's README and tool reference. We did not benchmark the servers against live sites. We included official servers with a public GitHub repo whose main job is fetching or browsing pages, and left out search-only APIs. We compared nine servers on what actually changes your setup: who does the fetching, what you need to authenticate, and what's free. One of them is Massive's own MCP server, which this post also introduces.

> **Key Takeaways**
>
> - **Two designs dominate.** Local servers (Playwright, Chrome DevTools, Fetch) drive a browser or HTTP client on your machine. Vendor-fetched servers (Apify, Bright Data, Browserbase, Massive) send requests through a vendor's cloud, whether you connect to a hosted URL or run the client locally. Firecrawl and Crawl4AI offer both.
> - **Playwright MCP is the most installed**, with 29.3 million npm downloads in the last month, against 8.4 million for Chrome DevTools MCP.
> - **Local servers are free but use your IP address.** Playwright MCP and the Fetch server accept a proxy flag; Chrome DevTools MCP's README documents none.
> - **Free paths vary:** Firecrawl's keyless tier covers scrape, search, and parse; Bright Data includes 5,000 requests a month; Crawl4AI's hosted API includes 1,000 free credits a month.
> - **Massive MCP** adds four tools (fetch, Google search, AI chatbot answers from ChatGPT, Gemini, and Perplexity, and a credit check) with country and city targeting on every fetch, search, and chat call.

## What is a web scraping MCP server?

The Model Context Protocol "allows servers to expose tools that can be invoked by language models," such as "querying databases, calling APIs, or performing computations" ([MCP specification](https://modelcontextprotocol.io/specification/2025-06-18/server/tools)). A web scraping MCP server is one whose tools fetch and read web pages. The agent decides when to call them; the server decides how the page is retrieved.

Servers connect in one of two standard ways: stdio, where your MCP client starts the server as a local process, or Streamable HTTP, where it connects to a URL ([MCP transports](https://modelcontextprotocol.io/specification/2025-06-18/basic/transports)). Most servers below support stdio through `npx` or `uvx`, and several also offer a hosted URL.

## The 9 servers at a glance

Stars and downloads are from the GitHub API and the npm and PyPI download APIs on November 9, 2026. Two rows count a whole repo rather than the MCP part alone: the Fetch server lives in the official MCP `servers` monorepo, and Crawl4AI's MCP endpoint ships inside the main Crawl4AI project.

| Server | GitHub stars | Downloads, last 30 days | Who fetches | Auth and free path |
|---|---|---|---|---|
| Chrome DevTools MCP | 55,006 | 8,434,037 (npm) | Chrome on your machine | None, free |
| Playwright MCP | 39,363 | 29,268,459 (npm) | Browser on your machine | None, free |
| Apify MCP | 15,360 | 109,790 (npm) | Apify cloud | Token or OAuth |
| Firecrawl MCP | 7,785 | 580,164 (npm) | Firecrawl cloud, or your self-hosted Firecrawl | API key or OAuth; keyless tier for scrape, search, parse |
| Browserbase MCP | 3,397 | 7,938 (npm) | Browserbase cloud browsers | Hosted: Browserbase account; self-hosted: API key, project ID, and a model key (Gemini by default) |
| Bright Data MCP | 2,716 | 66,048 (npm) | Bright Data cloud | API token; 5,000 requests a month free |
| Fetch (reference server) | 91,882 (monorepo) | 506,506 (PyPI) | Your machine, plain HTTP | None, free |
| Crawl4AI MCP | 87,128 (whole project) | n/a (Docker or hosted) | Your Docker container, or Crawl4AI cloud | Self-hosted: none by default, free; hosted: API key, 1,000 free credits a month, then pay as you go |
| Massive MCP | 4 | 79 (npm) | Massive Web Render API | Massive API key; pay per call |

Massive's server launched in 2026, so its star count reflects its age rather than a ranking. Browserbase's count is for its current package, `@browserbasehq/mcp`. Download counts include CI runs and other automated installs, so treat them as a rough measure of use.

![Bar chart comparing last-30-day downloads of web scraping MCP servers on November 9, 2026, led by Playwright MCP at 29.3 million npm downloads.](assets/mcp-downloads.png "Last-30-day package downloads for MCP servers with a registry package. Source: npm and PyPI download APIs, November 9, 2026.")

## Local servers: free, but your IP address

Local servers run on the machine where your agent runs. You pay nothing to the server's maker, and you get full control of the browser, but every request leaves from your own network.

### Playwright MCP

Microsoft's server drives a browser through Playwright's accessibility tree rather than screenshots. The default tools include `browser_navigate`, `browser_click`, `browser_type`, `browser_fill_form`, `browser_snapshot`, and `browser_take_screenshot`, with optional groups for network mocking, storage, PDF export, and coordinate-based vision ([Playwright MCP README](https://github.com/microsoft/playwright-mcp)).

It runs headed by default, with `--headless` available, and it can attach to your own logged-in Chrome or Edge through an extension. A `--proxy-server` flag routes its traffic through a proxy, such as a [residential proxy](https://www.joinmassive.com/web-access). The README is direct about scope: "Playwright MCP is **not** a security boundary."

### Chrome DevTools MCP

The Chrome team's server, which its README calls Chrome DevTools for agents, gives coding agents the full DevTools toolkit: 61 tools in its [tool reference](https://github.com/ChromeDevTools/chrome-devtools-mcp/blob/main/docs/tool-reference.md), across input, navigation, emulation, performance tracing, network inspection, console messages, memory, and more ([Chrome DevTools MCP](https://github.com/ChromeDevTools/chrome-devtools-mcp)). It's built for debugging pages, and it reads page content well as a side effect. Chrome starts automatically when a tool needs it. Usage statistics are on by default and can be turned off with `--no-usage-statistics`.

### Fetch (MCP reference server)

The simplest option: one `fetch` tool that "fetches a URL from the internet and extracts its contents as markdown," with no browser, so it doesn't run page scripts and won't see content that a page builds with JavaScript ([Fetch server](https://github.com/modelcontextprotocol/servers/tree/main/src/fetch)). According to its README, it obeys robots.txt by default for model-initiated requests, and it identifies itself with a `ModelContextProtocol/1.0 (Autonomous; ...)` user agent. It accepts `--proxy-url`. The monorepo describes its servers as reference implementations rather than production-ready tools.

### Crawl4AI MCP

Crawl4AI offers MCP two ways. Its hosted server at `api.crawl4ai.com/mcp` connects over HTTP with a Crawl4AI API key; the hosted plan includes 1,000 free credits a month, then pay-as-you-go pricing ([Crawl4AI README](https://github.com/unclecode/crawl4ai)).

The self-hosted Docker server exposes tools named `md`, `html`, `screenshot`, `pdf`, `execute_js`, `crawl`, and `ask`, over SSE (the older HTTP transport the spec has since replaced) and WebSocket on port 11235 ([Crawl4AI Docker guide](https://raw.githubusercontent.com/unclecode/crawl4ai/main/deploy/docker/README.md)). In the Docker setup, the headless browser runs in your own container, and an upstream proxy can be set with standard environment variables. Crawl4AI lists Massive as its strategic partner for web access, which we covered in our [Crawl4AI spotlight](https://www.joinmassive.com/blog/crawl4ai-partner-spotlight).

## Vendor-fetched servers: a vendor's infrastructure does the fetching

Hosted servers call a vendor's infrastructure, so your agent doesn't run a browser and the requests don't leave from your IP address. You usually need an account or API key (Firecrawl's keyless tier is the exception), and usage is metered.

### Firecrawl MCP

Firecrawl's server covers a wide range of scraping jobs, with 29 tools in its full profile: `firecrawl_scrape`, `firecrawl_search`, `firecrawl_crawl`, `firecrawl_map`, `firecrawl_parse` for documents, an agent research tool, browser interaction, and site monitors ([Firecrawl MCP README](https://github.com/firecrawl/firecrawl-mcp-server)). Firecrawl runs it locally over stdio or as a hosted server at `mcp.firecrawl.dev`, and it can point at a self-hosted Firecrawl. On the keyless free tier, scrape, search, and parse work without an API key, with rate limits.

### Apify MCP

Apify's server connects agents to the Apify Store, so an agent can search for a ready-made scraper (an Actor), read its details, and run it. By default it loads `search-actors`, `fetch-actor-details`, and `call-actor`, plus Apify's Web Search and Web Fetch Actors as tools ([Apify MCP README](https://github.com/apify/apify-mcp-server)). Because an Actor is a full scraper with its own input schema, the agent can read what a scraper expects before calling it, then fetch the run's results from its dataset. The server is available hosted at `mcp.apify.com` with OAuth, or locally with an `APIFY_TOKEN`.

### Bright Data MCP

Bright Data's server has 30 tools covering search, Markdown scraping, a browser, ready-made scrapers, datasets, and ChatGPT and Perplexity answer collection (`chatgpt_ai_insights`, `perplexity_ai_insights`). Its README says every request is routed through Bright Data's unblocking infrastructure and that proxy rotation is handled automatically. It includes a free tier of 5,000 requests a month, and it adds a "content gate" that pauses when scraped text looks like instructions to change your MCP configuration, such as registering a server or running an `npx` package ([Bright Data MCP README](https://github.com/brightdata/brightdata-mcp)).

### Browserbase MCP

Browserbase's server runs Stagehand-driven cloud browsers through six tools, including `navigate`, `act`, `observe`, and `extract`, with an option to enable Browserbase proxies for a session. Its README recommends the hosted server at `mcp.browserbase.com/mcp`, which it says has the same tools, and the open-source repo is archived ([Browserbase MCP README](https://github.com/browserbase/mcp-server-browserbase)).

## New: the Massive MCP server

Massive's MCP server, `@joinmassive/mcp-server`, connects any MCP client to the [Massive Web Render API](https://www.joinmassive.com/web-render). It's MIT-licensed on [GitHub](https://github.com/joinmassive/mcp-server) and adds four tools ([Massive MCP README](https://github.com/joinmassive/mcp-server)):

1. **`web_fetch`** renders any URL and returns Markdown by default, or rendered or raw HTML.
2. **`web_search`** runs a Google search through the Web Render API, and the server parses the results into JSON: organic results, the AI Overview, and People Also Ask.
3. **`ai_chat_completion`** sends a prompt to ChatGPT, Gemini, or Perplexity and returns the answer with its sources.
4. **`account_status`** returns your remaining credits and costs nothing to call.

The fetch, search, and AI chat tools each take a `country`, and `city` narrows it further, so an agent can see a page, a search result, or an AI answer as a user in a specific market would. Page rendering is handled by the Web Render API, which runs on Massive's device-access network and supports geotargeting in 195+ countries. The server is free to install, and you pay only for the Web Render calls your agent makes. Each fetch, search, or chat call costs 1 credit, a `web_fetch` with `difficulty: medium` costs 2, and `account_status` is free ([Massive MCP README](https://github.com/joinmassive/mcp-server)). Add it to Claude Desktop, Cursor, or another client with your API key:

<div data-block="html"><div style="background:#011627;border:1px solid rgba(250,244,236,0.08);border-radius:10px;margin:1.5rem 0;"><div style="padding:10px 18px 0;font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:0.08em;color:rgba(214,222,235,0.6);">JSON</div><pre style="margin:0;padding:10px 18px 16px;background:transparent;color:#d6deeb;font-family:'JetBrains Mono',monospace;font-size:13px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere;overflow-x:visible;"><code>{"mcpServers": {
  "massive": {
    "command": "npx",
    "args": [
      "-y",
      "@joinmassive/mcp-server"
    ],
    "env": {
      "MASSIVE_TOKEN": "&lt;key&gt;"
    }
  }}}</code></pre></div></div>

For example, ask an agent to compare how ChatGPT answers "best espresso machine" in Germany and in the United States, and it calls `ai_chat_completion` twice, once with `country: DE` and once with `country: US`. It's the same capability behind our test of [whether ChatGPT gives different answers by country](https://www.joinmassive.com/blog/does-chatgpt-give-different-answers-by-country), callable from an agent.

## Security: treat page content as untrusted

A scraping MCP server pours text from the open web into your agent's context, and some of that text may be written to manipulate it. The MCP specification says "tools represent arbitrary code execution and must be treated with appropriate caution" ([MCP specification overview](https://modelcontextprotocol.io/specification/2025-06-18)). Its tools page adds that servers must sanitize tool outputs, and that clients should validate tool results before passing them to the model ([MCP specification](https://modelcontextprotocol.io/specification/2025-06-18/server/tools)). It also says there should always be "a human in the loop with the ability to deny tool invocations."

In practice: keep scraping servers out of sessions that hold credentials or write access, prefer an isolated browser profile over your logged-in one for local servers, and review tool calls before approving them. For one-click installs of local servers, MCP's security guidance says clients must show "the exact command that will be executed" ([MCP security best practices](https://modelcontextprotocol.io/docs/tutorials/security/security_best_practices)).

## How to choose a web scraping MCP server

- **To debug or inspect pages you're building:** Chrome DevTools MCP.
- **To let an agent click through sites like a user, for free:** Playwright MCP, with a proxy if the sites block your IP.
- **To read simple, static pages with no browser:** the Fetch server.
- **To self-host a crawler with an LLM-friendly output, or use Crawl4AI's hosted version:** Crawl4AI MCP.
- **To run ready-made scrapers for specific sites:** Apify MCP.
- **To scrape, search, and crawl through one hosted API:** Firecrawl MCP.
- **To scrape through built-in unblocking and ready-made scrapers, with a free monthly allowance:** Bright Data MCP.
- **To drive cloud browsers with natural-language actions:** Browserbase MCP, hosted at `mcp.browserbase.com`.
- **To fetch pages, Google results, or ChatGPT, Gemini, and Perplexity answers from a specific country or city:** Massive MCP.

Whichever web scraping MCP server you pick, the deciding question is where the request leaves from: your machine, or a vendor's network. For the frameworks underneath many of these servers, see our ranking of [open-source web scraping tools on GitHub](https://www.joinmassive.com/blog/open-source-web-scraping-tools), and for the bigger picture, [how to give AI agents live web access](https://www.joinmassive.com/blog/how-to-give-ai-agents-live-web-access).

## Frequently Asked Questions

### What is the best MCP server for web scraping?

It depends on where you want the fetching to happen. Playwright MCP is the most installed free option for driving a browser locally. Firecrawl, Apify, and Bright Data run scraping in their clouds. Massive MCP is built for fetching, search, and AI chatbot answers from a chosen country or city.

### Is there a free web scraping MCP server?

Yes. Playwright MCP, Chrome DevTools MCP, the Fetch reference server, and Crawl4AI's self-hosted Docker server are free and open source and run on your machine. Among hosted servers, Firecrawl has a keyless free tier, Bright Data includes 5,000 free requests a month, and Crawl4AI's hosted API includes 1,000 free credits a month.

### Can Claude scrape websites with MCP?

Yes. Claude Desktop, Claude Code, and other MCP clients can add any server in this list, after which Claude can call its tools to fetch pages, search, or drive a browser. You approve tool calls, and the server determines how and from where the page is fetched.

### How do I add a proxy to Playwright MCP?

Start the server with `--proxy-server`, for example `--proxy-server=http://host:port`, and use `--proxy-bypass` for hosts that should skip it. The Fetch server takes `--proxy-url` or the standard `HTTP_PROXY` and `HTTPS_PROXY` variables.

## Sources

- GitHub REST API (stars) and the npm and PyPI download APIs (last 30 days), November 9, 2026 (first-party snapshot kept with this post)
- Model Context Protocol, [specification: tools](https://modelcontextprotocol.io/specification/2025-06-18/server/tools), [transports](https://modelcontextprotocol.io/specification/2025-06-18/basic/transports), and [security best practices](https://modelcontextprotocol.io/docs/tutorials/security/security_best_practices)
- [microsoft/playwright-mcp](https://github.com/microsoft/playwright-mcp), [ChromeDevTools/chrome-devtools-mcp](https://github.com/ChromeDevTools/chrome-devtools-mcp), [MCP servers repo: fetch](https://github.com/modelcontextprotocol/servers/tree/main/src/fetch), [Crawl4AI Docker guide](https://raw.githubusercontent.com/unclecode/crawl4ai/main/deploy/docker/README.md)
- [firecrawl/firecrawl-mcp-server](https://github.com/firecrawl/firecrawl-mcp-server), [apify/apify-mcp-server](https://github.com/apify/apify-mcp-server), [brightdata/brightdata-mcp](https://github.com/brightdata/brightdata-mcp), [browserbase/mcp-server-browserbase](https://github.com/browserbase/mcp-server-browserbase)
- Massive, [joinmassive/mcp-server README](https://github.com/joinmassive/mcp-server) and [Web Render API docs](https://docs.joinmassive.com/web-render/overview)
