A free, local MCP server that gives Claude web scraping powers. 24 tools, four escalating fetch tiers, no API key.
cute-web-scraper
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
**An MCP server that gives Claude web scraping powers.** Free, local, no API key, no cloud account.
Ask in plain English. It fetches the pages, renders the JavaScript when needed, gets past the blocks, and hands back clean markdown or a queryable table — no selectors, no glue code.
Why this one
- **It gets in, for free.** Four escalating tiers — plain HTTP, browser TLS fingerprints, a real browser, then a stealth browser. ASOS, eBay, Booking.com and Trustpilot all return real data on a home connection, with no proxies, no API key and no per-page cost. Hosted scrapers put their anti-bot behind metered credits and leave it out of their open-source builds; the two fingerprint tiers here are the ones that actually got past those four sites, and they cost nothing.
- **It doesn't waste your context.** Articles are stripped of navigation, cookie banners and footers: a BBC news page goes from **20,513 characters to 3,198**. Large results land in a SQLite table you query with SQL instead of pasting into the chat.
- **It tells the truth about failure.** Five of the sites tested served a refusal under a *success* status — an interstitial under HTTP 200, a bot check under 202 — and one served real content under 403. Block detection weighs the page body, not the status code, so you don't get a stub reported as data.
- **Whole sites, not single pages.** Sitemap discovery, parallel fetching, and 25 tools covering products, contacts, Shopify catalogues, places, screenshots and change tracking.
- **Documents too.** A link to a PDF, .docx or .xlsx is extracted to text and markdown tables rather than silently skipped — and the file type is identified from the bytes, because servers routinely mislabel them.
Install
Chromium is downloaded automatically the first time you use js_render (a one-off ~130MB).
Connect it to Claude Code
Then just ask:
Tools
**Fetching and discovery**
| Tool | What it does |
|---|---|
| search_web | Search the web and get ranked results, optionally with each result's full text in the same call |
| fetch_page | One URL to clean markdown, with title, status and link count |
| inspect_network | Report the API calls a page makes, with their JSON — read the data source directly |
| screenshot_page | Render a page and save a PNG to disk — what it actually looks like, not just its text |
| fetch_pages | Many URLs in parallel, returning results and per-URL errors |
| crawl_site | Discover a site's pages via sitemap, falling back to link-following |
| analyze_website | Detect the platform, find the sitemap, report whether JS is needed |
**Extraction**
| Tool | What it does |
|---|---|
| extract_by_selector | Arbitrary fields via CSS selectors — turns any listing into a table |
| extract_products | Structured product data (name, price, currency, availability, brand, sku, rating) from JSON-LD, OpenGraph or microdata |
| extract_emails | Email addresses across a list of URLs, with surrounding context |
| extract_phones | Phone numbers across a list of URLs, with surrounding context |
| extract_links | Every hyperlink, resolved to absolute URLs |
| extract_social_links | Social profiles across eight platforms |
| extract_shopify_store | A whole Shopify catalogue, one row per variant |
| list_shopify_collections | A Shopify store's collections and their product counts |
**Places and local businesses**
| Tool | What it does |
|---|---|
| find_places | Search by name or description — name, address, coordinates, phone, website, opening hours |
| find_places_nearby | Every business of a category within a radius of a place |
**Change tracking**
| Tool | What it does |
|---|---|
| track_changes | Fetch a page and diff it against the last check — new, same or changed |
| list_tracked | Pages being watched, and when each was last seen |
| untrack | Stop watching a page |
**Result tables**
| Tool | What it does |
|---|---|
| list_tables | Saved result tables with row counts and columns |