Tutorial12 min read

Web Crawl MCP: Scraping Tools With an MCP Server for AI Agents

Short answer

Web scraping tools with an MCP server for AI agents include Microsoft's Playwright MCP (npx @playwright/mcp@latest) and Chrome DevTools MCP (npx -y chrome-devtools-mcp@latest), which drive a real browser; the MCP reference Fetch server (uvx mcp-server-fetch), which downloads a URL as Markdown; the open-source crawlers Crawl4AI (MCP built into its Docker server) and Firecrawl (npx -y firecrawl-mcp, MIT licence, pointed at a self-hosted Firecrawl); the hosted MCP servers that scraping-API vendors run, added by URL with an API key; and your own server, built in a few lines with the MCP Python SDK. Any MCP client, such as Claude, ChatGPT, Cursor or GitHub Copilot in VS Code, can call them. A self-hosted server sends every request from the machine it runs on, so crawling more than a few pages from one site needs a proxy in the server's settings. ProxyField residential proxies plug into Playwright MCP's proxy option and the Fetch server's --proxy-url from $1.95/GB; start with the Easy Trial: 1 GB for $2.95.

residential IPs
412M+
from, traffic never expires
$1.95/GB
Easy Trial
1 GB for $2.95
At a glance
MCP serverLimit to knowMaintainerAdd it withTools it exposes (examples)JavaScriptProxy setting
Playwright MCP (@playwright/mcp)Node.js 18+; a persistent profile serves one browser at a time, so parallel agents need --isolatedMicrosoftnpx @playwright/mcp@latestbrowser_navigate, browser_snapshot, browser_click, browser_type, browser_network_requests, browser_take_screenshotYes--proxy-server, --proxy-bypass; username and password through the config file
Chrome DevTools MCP (chrome-devtools-mcp)Official support for Google Chrome and Chrome for Testing only; --slim for a reduced tool setChrome DevTools teamnpx -y chrome-devtools-mcp@latest (Node.js LTS)navigate_page, take_snapshot, list_network_requests, list_console_messages, take_screenshot, performance_start_traceYesSet on the Chrome it controls
Fetch (mcp-server-fetch)Returns 5,000 characters by default (max_length); obeys robots.txt for the model's requestsMCP reference serversuvx mcp-server-fetchfetch with url, max_length, start_index, rawNo--proxy-url, or HTTP_PROXY / HTTPS_PROXY
Crawl4AI Docker serverDocker on port 11235 with --shm-size=1g; MCP at /mcp/sseCrawl4AI open-source projectdocker run -d -p 11235:11235 --shm-size=1g unclecode/crawl4ai, then http://localhost:11235/mcp/ssemd, html, screenshot, pdf, execute_js, crawl, askYesproxy_config in the crawler config
Firecrawl MCP (firecrawl-mcp), self-hostedFIRECRAWL_API_URL points it at your own Firecrawl; a key only if your instance asks for oneFirecrawl open-source project (MIT)npx -y firecrawl-mcpfirecrawl_scrape, firecrawl_map, firecrawl_crawl, firecrawl_check_crawl_status, firecrawl_searchYes, in the Firecrawl instancePROXY_SERVER, PROXY_USERNAME, PROXY_PASSWORD in the instance's apps/api/.env
Hosted scraping-API serversBilled per request or credit; rate limits and tools set by each vendorEach vendorclaude mcp add --transport http <name> <url>, API key in a header or environment variableThe vendor's own, typically fetch, search and extractUsuallyThe vendor's IPs
Your own servermcp 2.3.0 (October 2, 2026); the class is MCPServer in v2, FastMCP in 1.xYoupip install "mcp[cli]>=2", then mcp run server.pyWhatever you define, e.g. fetch_pageYour choiceInside your code
On this page 11 sections
  1. What an MCP server does for web scraping
  2. How to judge a web crawl MCP server
  3. How to use Playwright MCP
  4. Playwright MCP vs Puppeteer MCP
  5. Which AI clients support a scraping MCP server?
  6. Hosted scraping-API MCP servers
  7. Proxies and MCP servers
  8. What makes a scraping tool agent-ready
  9. Build your own crawl MCP server
  10. Sources
  11. Web Crawl MCP FAQ

The Puppeteer server in the MCP reference collection is archived; see Playwright MCP vs Puppeteer MCP.

What an MCP server does for web scraping

MCP, the Model Context Protocol, is "an open-source standard for connecting AI applications to external systems"; its own documentation calls it "a USB-C port for AI applications." An MCP server exposes tools, each with a name, a description and a typed input. The AI client lists the tools to the model, and the model decides when to call one, for example browser_navigate with a URL, then browser_snapshot to read the page.

For scraping, that means an agent can collect data as part of a larger task, "find the pricing pages of these five companies and compare the plans," without you writing glue code. It also means the agent, not your code, decides how many pages to open, which is why MCP suits exploration and small jobs better than a nightly crawl of 100,000 URLs.

MCP server vs scraping API. A scraping API is an HTTP endpoint your code calls with fixed parameters. A scraping API's MCP server wraps the same service as tools with descriptions, so an agent can call it on its own. The fetching, IPs and billing are the same; the difference is who decides when to call: your code or the model.

How to judge a web crawl MCP server

Searchers ask for web crawl MCP options with "top-tier scalability," "great data quality," "excellent accuracy" or "top crawling speed." Here is what each depends on:

  • Scalability. A local browser server runs on one machine; Playwright MCP's persistent profile "can only be used by one browser instance at a time," so parallel agents need --isolated or separate profiles. Past a few hundred pages per site, the limit is usually blocking, not CPU: every request leaves from the same IP unless the server uses a proxy.
  • Data quality and accuracy. Check what the server returns. Accessibility snapshots keep structure and element references; Markdown keeps text and drops layout; the Fetch server truncates to 5,000 characters unless you raise max_length. If the model then extracts fields from that output, validate them, because a model can misread a value.
  • Speed. A plain fetch takes one HTTP request; a browser page loads scripts, images and fonts. Use a fetch server for static pages and a browser only where the page needs JavaScript.
  • Customization. Playwright MCP takes a JSON config file with Playwright launch and context options: browser, viewport, storage state, proxy.
  • Documentation and usability. Look for a one-line install for your client, a full option list and a security section. Playwright MCP's README has install steps for 20 clients (counted October 27, 2026) and says plainly that it "is not a security boundary."

How to use Playwright MCP

Playwright MCP needs Node.js 18 or newer. Add it to your client with its standard command, npx @playwright/mcp@latest:

Shell
# Claude Code
claude mcp add playwright npx @playwright/mcp@latest
# Codex CLI
codex mcp add playwright npx "@playwright/mcp@latest"
# VS Code (GitHub Copilot agent)
code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'

Clients that read a JSON config, such as Claude Desktop, Cursor or Windsurf, take the same server as "command": "npx", "args": ["@playwright/mcp@latest"]. Then ask the agent in plain words: "Open https://example.com/pricing, read the plan names and prices, and give me a table."

Add a proxy. The --proxy-server option takes an address such as http://myproxy:3128 or socks5://myproxy:8080 but no password. With an IP allowlist, add your machine's IP in the ProxyField dashboard and pass the gateway with the port you set up there for it in place of <port>:

JSON
{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["@playwright/mcp@latest", "--headless", "--proxy-server=http://gate.proxyfield.io:<port>"]
    }
  }
}

With a username and password, use a config file (--config proxy.json), whose launchOptions are passed to Playwright's own launch, which accepts proxy credentials:

JSON
{
  "browser": {
    "launchOptions": {
      "proxy": {
        "server": "http://gate.proxyfield.io:7000",
        "username": "<login>-country-us-city-new_york",
        "password": "<password>"
      }
    }
  }
}

<login>-country-us-city-new_york asks for a New York IP; other targeting in the username: -region-<region>, -session-<id> and -ttl-<seconds> (30 to 129,600 seconds, 20 minutes by default) after the location, as in <login>-country-us-region-new_york-city-new_york-session-he9f2qga-ttl-600. An agent's browsing session clicks through several pages, so a sticky session, one IP for the whole visit, usually works better than a new IP per request. More on Playwright with proxies: Playwright proxy setup.

Microsoft's README also points coding agents to Playwright CLI with skills, which it describes as more token-efficient because it avoids "loading large tool schemas and verbose accessibility trees into the model context." MCP remains its recommendation for long-running agent loops that keep a browser open.

Easy Trial: 1 GB for $2.95.
Try for the price of 1 GB, no subscription, traffic never expires.

Playwright MCP vs Puppeteer MCP

Choose Playwright MCP for new work. The Puppeteer server in the MCP reference collection has been archived, and Playwright MCP is maintained by Microsoft, supports Chromium, Firefox and WebKit, and works from accessibility snapshots, so the model does not need screenshots or a vision model. If you want Puppeteer's engine, Chrome DevTools MCP uses Puppeteer to automate Chrome and adds DevTools features such as network inspection and performance traces; it officially supports Google Chrome and Chrome for Testing only.

FeaturePlaywright MCPChrome DevTools MCPPuppeteer reference server
Status (October 2026)Maintained by MicrosoftMaintained by the Chrome DevTools teamArchived
BrowsersChromium, Firefox, WebKitGoogle Chrome, Chrome for Testing (official support)–
How the model sees the pageAccessibility snapshotDevTools data, snapshots, screenshots–
ProxyBuilt-in optionsThrough the Chrome it controls–

Which AI clients support a scraping MCP server?

Any MCP client can use a scraping server. The MCP documentation names Claude and ChatGPT among AI assistants and Visual Studio Code and Cursor among development tools. Playwright MCP's README gives install steps for VS Code, Cursor, Windsurf, Claude Desktop, Claude Code, Codex, Gemini CLI, Goose and others. Local servers run as a command on your machine (stdio); remote servers are reached over HTTP, for example claude mcp add --transport http <name> <url> in Claude Code.

Hosted scraping-API MCP servers

A hosted MCP server runs on a scraping-API vendor's infrastructure, so you add a URL instead of a command. In Claude Code that is claude mcp add --transport http <name> <url>; clients with a JSON config take the URL and a header such as Authorization: Bearer <api_key>. Keep the key in an environment variable or the client's secret store, never in the prompt.

FeatureLocal server (Playwright MCP, Fetch, Crawl4AI, your own)Hosted scraping-API server
Where it runsyour machine or your server (stdio, or HTTP you host)the vendor's servers (HTTP)
IPsyour own, or the proxy you configurethe vendor's
Billingyour machine plus your proxy traffic, per GBper request, per result or per credit, by the vendor's plan
Rendering and retriesyours to set upthe vendor's
What you controlbrowser, headers, pacing, proxy country and sessionthe parameters the vendor's tools accept

The tools behind a hosted server are the vendor's scraping API, described for a model. Vendors and their per-request prices are compared on web scraping API prices. ProxyField's own scraper APIs have no MCP server or SDK in their first version; their design is in the API documentation (in development: Contact sales).

Proxies and MCP servers

Where the proxy goes depends on the server:

  • Playwright MCP: --proxy-server, or launchOptions.proxy in the config file for a username and password.
  • Fetch server: --proxy-url; without it, the server uses the standard HTTP_PROXY, HTTPS_PROXY and ALL_PROXY variables. It obeys a site's robots.txt for requests that come from the model, unless you start it with --ignore-robots-txt; keep the default.
  • Chrome DevTools MCP: set the proxy on the Chrome instance it controls; see its configuration guide.
  • Crawl4AI: proxy_config in the crawler config takes the gateway, username and password; setup in Crawl4AI with proxies.
  • Firecrawl MCP on a self-hosted Firecrawl: the MCP server only forwards calls, so the proxy goes into the Firecrawl instance: PROXY_SERVER=http://gate.proxyfield.io:7000, PROXY_USERNAME=<login>-country-us-city-new_york and PROXY_PASSWORD=<password> in its apps/api/.env; more in AI web scrapers compared.
  • Hosted scraping-API servers: they use the vendor's IPs and bill per request, so you do not add your own proxy.

ProxyField gives a self-hosted MCP server one gateway, gate.proxyfield.io:7000, over HTTP, HTTPS or SOCKS5: a new IP on every request or a sticky session from 30 s to 36 h, targeting by country, region or city, and unlimited concurrent threads. You pay per GB with no subscription, and traffic never expires. All purchases are final.

What makes a scraping tool agent-ready

A scraping tool works well for agents when:

  1. Its tools are few and well described

    Every tool definition takes up the model's context; Chrome DevTools MCP offers a --slim mode with a reduced tool set for basic browser tasks.

  2. Its output is compact

    Markdown or a trimmed snapshot, with a length cap, keeps tokens down.

  3. Failures come back as results the model can read

    The Fetch server returns a robots.txt refusal, an HTTP error or an unusable proxy as a tool result marked isError: true, so the agent can change course instead of stopping.

  4. It handles access

    Pacing, retries and IP rotation live in the server or its proxy, not in the model's judgment.

  5. It is safe to point at the open web

    Page content is untrusted input that can carry instructions; the Fetch server, for example, refuses private and loopback addresses by default.

Build your own crawl MCP server

If you already have a scraper, an MCP server makes it an agent tool in a few lines. With the official Python package for MCP, version 2 (pip install "mcp[cli]>=2"; 2.3.0 is the release of October 2, 2026), a fetch tool that goes through the ProxyField gateway:

Python
# server.py: run with `mcp run server.py` (or `uv run mcp run server.py`)
import os
import requests
from mcp.server import MCPServer

PROXY = os.environ["SCRAPER_PROXY"]  # http://<login>-country-us-city-new_york:<password>@gate.proxyfield.io:7000
mcp = MCPServer("crawler")

@mcp.tool()
def fetch_page(url: str, max_chars: int = 20000) -> str:
    """Fetch a public web page through a rotating residential proxy and return its HTML."""
    resp = requests.get(url, proxies={"http": PROXY, "https": PROXY}, timeout=30)
    resp.raise_for_status()
    return resp.text[:max_chars]

Add it to Claude Code with claude mcp add --env SCRAPER_PROXY=... crawler -- mcp run server.py. On the 1.x releases the same class is FastMCP, imported with from mcp.server.fastmcp import FastMCP; version 2 renamed it MCPServer. To try the server in the MCP Inspector first, run mcp dev server.py. For crawling logic and rotation, see proxies for web scraping; for the AI assistants themselves, see web scraping with Claude and can ChatGPT scrape websites.

Get started: point your MCP server at residential proxies. Start with the Easy Trial: 1 GB for $2.95, no subscription.

Sources

Web Crawl MCP FAQ

Which web scraping tools offer an MCP server for AI agents?

ProxyField's October 2026 list: Playwright MCP (npx @playwright/mcp@latest, Node.js 18+) and Chrome DevTools MCP (npx -y chrome-devtools-mcp@latest) for a real browser, the MCP Fetch server (uvx mcp-server-fetch, 5,000 characters by default) for plain pages, Crawl4AI's Docker server (MCP at /mcp/sse on port 11235), Firecrawl's open-source firecrawl-mcp on a self-hosted Firecrawl, hosted MCP servers from scraping-API vendors, added by URL with an API key, and your own server built with the MCP Python SDK. The self-hosted ones take a proxy setting, and ProxyField residential proxies plug into them from $1.95/GB; hosted servers use the vendor's IPs.

Which AI clients support a scraping MCP server?

Any MCP client. The MCP documentation names Claude, ChatGPT, Visual Studio Code and Cursor, and Playwright MCP's README has install steps for 20 clients, including Claude Code, Claude Desktop, Codex, Gemini CLI, Goose and Windsurf.

What are the best web crawl MCP options?

ProxyField sorts them by the pages you read: Playwright MCP is the common choice for JavaScript pages and clicking through sites, the Fetch server is lighter for static pages, Chrome DevTools MCP adds network and performance inspection, and a hosted scraping-API server suits teams that do not want to run browsers or manage IPs.

Which web crawl MCP servers scale to large crawls?

None of them turns an agent into a crawler for hundreds of thousands of URLs; the model decides each step, which is slow and costly at that size. For scale, run a crawler such as Scrapy or Crawlee with rotating proxies, and give the agent an MCP tool that queries the results.

How do I use Playwright MCP?

Add the server to your client with npx @playwright/mcp@latest, for example claude mcp add playwright npx @playwright/mcp@latest in Claude Code, then ask the agent to open a URL and read or click what you need. Options such as --headless, --isolated and --proxy-server go after the package name.

Playwright vs Puppeteer MCP: which should I use?

Playwright MCP. The Puppeteer server in the MCP reference collection is archived, while Playwright MCP is maintained by Microsoft and supports Chromium, Firefox and WebKit. For a Puppeteer-based option with DevTools features, use Chrome DevTools MCP.

Does Playwright MCP support proxies?

Yes. Start it with --proxy-server=http://host:port (HTTP or SOCKS5) and --proxy-bypass for exceptions; for a username and password, put a proxy object with server, username and password under browser.launchOptions in its config file.

Can Playwright MCP get blocked by anti-bots?

Yes. It drives a real browser, but every request still leaves from your machine's IP, and anti-bot systems also look at request rates and browser signals. Pacing, a sticky residential IP per session and stopping at CAPTCHAs keep an agent's browsing within what a site tolerates.

Why use an MCP server for web scraping?

It lets an AI agent fetch and read pages as one step of a larger task, without glue code: the agent picks the tool, the URL and the next step. It is best for exploration and small jobs; recurring, large crawls still belong in a scraper.

How is a scraping API's MCP server different from its API?

The service behind them is the same. The API is an endpoint your code calls with fixed parameters; the MCP server describes the same calls as tools, so an AI agent can decide on its own when to call them and with what.

Show 7 more questionsShow fewer questions

How do I connect a web scraping MCP server to my AI agent?

A local server is a command your client starts, such as npx @playwright/mcp@latest, added through the client's MCP settings or CLI. A remote server is a URL, added in Claude Code with claude mcp add --transport http <name> <url>; API keys go in environment variables or headers, never in the prompt.

Can my AI agent use a scraping browser through MCP?

Yes. A browser MCP server such as Playwright MCP gives the agent tools to navigate, take snapshots, click, type and read network requests, and hosted scraping browsers can be reached through their own MCP servers. Give a self-hosted browser a proxy so its requests do not all come from one IP.

What makes a scraping tool agent-ready?

A small set of clearly described tools, compact output such as Markdown with a length cap, errors returned as readable results, access handling (pacing, retries, IP rotation) inside the tool, and safe defaults such as refusing private network addresses.

Does Crawl4AI have an MCP server?

Yes, in its Docker server: run the unclecode/crawl4ai image on port 11235 and add http://localhost:11235/mcp/sse to your client, for example claude mcp add --transport sse c4ai-sse http://localhost:11235/mcp/sse in Claude Code. Its tools are md, html, screenshot, pdf, execute_js, crawl and ask.

Does Firecrawl have an MCP server?

Yes: firecrawl-mcp, open source under the MIT licence, started with npx -y firecrawl-mcp. Set FIRECRAWL_API_URL to run it against your own self-hosted Firecrawl, which then takes your proxy in its PROXY_SERVER, PROXY_USERNAME and PROXY_PASSWORD settings. Its tools include firecrawl_scrape, firecrawl_map and firecrawl_crawl.

What output format do scraping MCP servers return?

It varies: the Fetch server returns Markdown, or raw HTML with raw, capped at 5,000 characters by default; Playwright MCP returns accessibility snapshots with element references; Chrome DevTools MCP adds network and console data. Hosted servers often return Markdown or JSON.

What is the difference between a hosted and a local scraping MCP server?

A local server runs on your machine, so the browser and requests use your IP or the proxy you configure, and you pay for your own traffic. A hosted server runs on the vendor's infrastructure with its IPs and is billed per request or per result.

Easy Trial: 1 GB for $2.95.

Try for the price of 1 GB, no subscription, traffic never expires.