Skip to main content
Glama
syrotadenys1

Web Content Scraper MCP Worker

by syrotadenys1

Web Content Scraper MCP Worker

A high-performance Cloudflare Worker project that presents an agent-ready Model Context Protocol (MCP) Tool and REST API endpoint for dynamic web content extraction. Built with TypeScript, Cloudflare Workflows, Cloudflare Browser Rendering (@cloudflare/puppeteer), and the MCP SDK (@modelcontextprotocol/sdk), monetized with the x402 payment protocol ($0.005 USDC per call on Base).


🌟 Key Features

  1. Dynamic Page Scraping & Headless Chrome:

    • Uses Cloudflare Browser Rendering (@cloudflare/puppeteer) to execute dynamic JavaScript, handle client-side rendering (SPAs/React/Vue/Next.js), and bypass anti-bot layout hurdles.

  2. Boilerplate & Ad Stripping:

    • In-browser DOM parsing automatically strips scripts, stylesheets, navigation bars, headers, footers, sidebars, cookie banners, popups, and advertisement blocks.

  3. Structured Content Output:

    • Markdown Format (default): Converts page hierarchy into clean structured Markdown (# Headings, paragraphs, lists, blockquotes, code blocks, links, and images).

    • JSON Format: Extracts metadata (title, author, siteName, description), text content, headings array, link objects, and image objects.

  4. Cloudflare Workflows Integration:

    • Includes ScraperWorkflow for step-by-step asynchronous processing, step retries, and error isolation.

  5. x402 Protocol Monetization:

    • Protected endpoints require $0.005 USDC payment per execution on the Base network via the x402 microtransaction standard.


Related MCP server: skim-mcp

🚀 MCP Tool Specification

Tool Name: scrape_web_content

Description:

"Scrapes a dynamic web page, bypasses client-side rendering, removes clutter/ads, and extracts core content as clean Markdown or structured JSON. Use this tool when you need to read web articles, documentation, or extract main body text from any URL."

Parameters:

  • url (string, required): The HTTP/HTTPS web page URL to scrape.

  • format (string, optional): "markdown" or "json" (default: "markdown").

Response Schema:

{
  "title": "Article Title",
  "sourceUrl": "https://example.com/article",
  "extractedContent": "# Article Title\n\nCore content formatted in clean markdown...",
  "wordCount": 482
}

📡 REST API Endpoints

1. Health Diagnostics

GET /health

Response:

{
  "status": "ok",
  "service": "web-scraper-mcp-worker",
  "timestamp": "2026-08-05T16:00:00.000Z",
  "browserConfigured": true,
  "workflowConfigured": true,
  "monetization": {
    "protocol": "x402",
    "price_usdc": "0.005",
    "network": "base",
    "payee_address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
  }
}

2. Scraping Endpoint (x402 Protected)

POST /api/scrape
Content-Type: application/json

{
  "url": "https://example.com/blog/dynamic-article",
  "format": "markdown"
}

3. Workflow Trigger Endpoint

POST /api/workflow/scrape
Content-Type: application/json

{
  "url": "https://example.com/docs/api",
  "format": "json"
}

4. MCP JSON-RPC Protocol Endpoint (x402 Protected)

POST /mcp
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "scrape_web_content",
    "arguments": {
      "url": "https://news.ycombinator.com",
      "format": "markdown"
    }
  }
}

💳 x402 Monetization Flow

Unauthenticated requests to protected endpoints return an HTTP 402 Payment Required status code with x402 headers:

HTTP/1.1 402 Payment Required
WWW-Authenticate: X-402 payee="0x742d35Cc6634C0532925a3b844Bc454e4438f44e" asset="0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" amount="5000" network="eip155:8453"
Content-Type: application/json

{
  "x402Version": 1,
  "error": "Payment Required",
  "payment": {
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "5000",
    "human_amount": "$0.005 USDC",
    "payee": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
    "resource": "/api/scrape",
    "description": "Dynamic Web Scraper & Content Extractor ($0.005 USDC per execution)"
  }
}

Include payment authorization proof in the X-PAYMENT header to execute requests.


🛠 Local Development & Deployment

Prerequisites

  • Node.js 18+

  • Cloudflare Workers Paid account (for Browser Rendering in production)

Commands

# Install dependencies
npm install

# Type Check
npm run type-check

# Local Development Server
npm run dev

# Deploy to Cloudflare Workers
npm run deploy

📄 License

MIT License.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Scrapes webpages and converts them to markdown using AI-powered interaction to automatically handle cookie banners, CAPTCHAs, paywalls, and other blocking elements before extracting clean content.
    8 npm
    48
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Pay-per-use clean web reader for AI agents. URL in, markdown plus metadata out, in milliseconds. Settled per-call in USDC over x402 — no signup, no API keys.
    1
    82 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables extracting clean Markdown from any webpage by paying $0.005 USDC per call via the x402 protocol, with automatic wallet-based payment settlement.
    6 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables extracting clean, structured markdown from any URL—stripping nav, ads, and scripts—for RAG pipelines and AI research agents, with pay-per-call micropayments via x402.
    MIT