Skip to main content
Glama
Prog-up

Web Scraper MCP

by Prog-up

Web Scraper MCP

一个自托管的 Model Context Protocol 服务器, 为 LLM 客户端(Claude Code、Cursor、ChatGPT)提供与付费抓取服务相同的工具面——scrape、crawl、map、search、extract、interact、deep_research——完全运行在您自己的硬件上。

无需付费代理/CAPTCHA 服务:反机器人是自托管的(无头 Chromium + playwright-stealth、robots.txt、礼貌的速率限制)。加固的网站仍可能阻止;请参阅 限制

工具

工具

功能

scrape

一个 URL → 干净的 markdown(去除样板内容)。静态优先,JS 页面自动回退到浏览器。

crawl / check_crawl_status

后台 BFS 爬取任务(去重、深度/页面上限);轮询结果。

map

列出页面上的链接(可选同域)——决定要爬取什么。

search

网络搜索。可插拔后端:DuckDuckGo(默认)、SearXNG、Brave 或 Tavily。

extract

获取页面并提取与您的模式匹配的结构化 JSON,通过 LLM。

browser_navigate / browser_act / browser_close

使用 token 便宜的 ARIA 快照驱动持久浏览器会话(点击/填写/按键)。

deep_research

搜索 → 阅读顶级来源 → 返回带引用的综合报告。

extractdeep_research 需要 ANTHROPIC_API_KEY

Related MCP server: Universal Web Data Extraction Platform

快速开始

uv sync                      # install deps (uses the pinned uv.lock)
uv run playwright install chromium
export SCRAPER_AUTH_TOKEN=$(openssl rand -hex 32)
uv run web-scraper-mcp       # HTTP server on http://127.0.0.1:8000/mcp

Stdio(本地,用于桌面客户端):SCRAPER_TRANSPORT=stdio uv run web-scraper-mcp

Docker

最快的入门方式是拉取 DockerHub 上的预构建镜像。

# Pull the latest image
docker pull PROG_UP_USERNAME/web-scraper-mcp:latest

# Run the container (with Anthropic / Claude)
docker run -p 8000:8000 \
  -e SCRAPER_AUTH_TOKEN=your_secure_token_here \
  -e ANTHROPIC_API_KEY=sk-ant-api03-... \
  PROG_UP_USERNAME/web-scraper-mcp:latest

# Or run the container over stdio (useful for local MCP clients)
docker run -i --rm \
  -e SCRAPER_TRANSPORT=stdio \
  -e SCRAPER_AUTH_TOKEN=your_secure_token_here \
  PROG_UP_USERNAME/web-scraper-mcp:latest

(确保将 PROG_UP_USERNAME 替换为您实际的 DockerHub 用户名)。

使用本地模型(Ollama)与上下文窗口

如果您希望使用本地模型而不是 Anthropic 的 API,服务器完全支持 Ollama 作为 extractdeep_research 工具的替代后端。

docker run -p 8000:8000 \
  -e SCRAPER_AUTH_TOKEN=your_secure_token_here \
  -e SCRAPER_OLLAMA_HOST=http://host.docker.internal:11434 \
  -e SCRAPER_EXTRACT_MODEL=qwen3.5:2b \
  -e SCRAPER_RESEARCH_MODEL=qwen3.5:2b \
  PROG_UP_USERNAME/web-scraper-mcp:latest

[!WARNING] 上下文窗口至关重要! 网络抓取会产生大量 Markdown。extract 可以向 LLM 发送多达 100,000 个字符,deep_research 可以发送多达 16,000 个字符。

默认情况下,Claude 原生处理大规模上下文。然而,Ollama 的默认上下文窗口(num_ctx)通常仅配置为 2,048 个 token。如果您将巨大的 Wikipedia 页面传递给本地模型,它会静默截断提示(丢弃您的指令)并返回空字符串!

我们自动在 API 负载中向 Ollama 传递 "num_ctx": 32768 以防止这种截断。使用 Ollama 时,请确保您的本地机器有足够的 RAM/VRAM 来支持 32K 上下文窗口!

在客户端中注册(mcp.json

如果通过 HTTP 运行:

{
  "mcpServers": {
    "web-scraper": {
      "url": "http://127.0.0.1:8000/mcp",
      "headers": { "Authorization": "Bearer your_secure_token_here" }
    }
  }
}

如果通过 stdio(Docker)运行:

{
  "mcpServers": {
    "web-scraper": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "SCRAPER_TRANSPORT=stdio",
        "-e", "SCRAPER_OLLAMA_HOST=http://host.docker.internal:11434",
        "-e", "SCRAPER_EXTRACT_MODEL=qwen3.5:2b",
        "-e", "SCRAPER_RESEARCH_MODEL=qwen3.5:2b",
        "PROG_UP_USERNAME/web-scraper-mcp:latest"
      ]
    }
  }
}

配置

所有设置都是环境变量(前缀 SCRAPER_)或 .env 文件 — 请参阅 .env.example

变量

默认值

说明

SCRAPER_AUTH_TOKEN

(未设置)

HTTP 端点的 Bearer token。任何网络部署必需;未设置 = 未认证(警告)。

SCRAPER_HOST / SCRAPER_PORT

127.0.0.1 / 8000

绑定地址。Docker 镜像设置主机为 0.0.0.0

SCRAPER_MAX_CONCURRENT_PAGES

8

无头页面并发上限(受 RAM/CPU 限制)。

SCRAPER_MAX_CRAWL_PAGES / _DEPTH

100 / 3

爬取作业的硬性上限。

SCRAPER_PER_DOMAIN_DELAY_S

1.0

每个域名的礼貌速率限制。

SCRAPER_RESPECT_ROBOTS

true

遵守 robots.txt。

SCRAPER_ALLOW_PRIVATE_NETWORKS

false

保持 false — 如果为 true 则禁用 SSRF 防护。

ANTHROPIC_API_KEY

(未设置)

启用 extract / deep_research

SCRAPER_SEARXNG_URL, BRAVE_API_KEY, TAVILY_API_KEY

(未设置)

可选搜索后端(先设置者优先,否则使用 DuckDuckGo)。

安全

  • SSRF 防护 — 每个获取的 URL(以及每个重定向跳转)都会进行 DNS 解析,如果指向私有/回环/链路本地/云元数据地址则被拒绝。浏览器还会中止对私有 IP 的子资源请求。

  • 认证 — HTTP 传输上的 Bearer token;默认绑定 localhost。

  • 资源上限 — 响应大小、超时、页面并发、爬取页面/深度限制以保护主机。

  • robots.txt + 速率限制 默认开启。

  • 容器 — 以非 root 用户运行;仅通过环境变量传递机密。

供应链 — 验证镜像

CI 使用 cosign(Sigstore)通过 GitLab 的 OIDC 身份对镜像进行无密钥签名,并附加 SPDX SBOM 证明。运行前请验证:

cosign verify \
  --certificate-oidc-issuer https://gitlab.cri.epita.fr \
  --certificate-identity-regexp 'https://gitlab.cri.epita.fr/enzo.juhel/web-scraper//.*' \
  registry.gitlab.cri.epita.fr/enzo.juhel/web-scraper@sha256:...

基准测试

benchmarks/run.py 对我们的 scrape/extract 与公共数据集和 Crawl4AI 基线进行评分,输出记分卡(按页面类型的 F1/准确率 + 限制部分)。在本地运行或通过手动 CI benchmark 作业运行:

uv run python benchmarks/run.py --output scorecard.md

限制

  • 无付费代理/CAPTCHA:防御严密的网站(LinkedIn、Amazon、Cloudflare 挑战)有时会阻止我们。基准测试记分卡量化了具体位置。

  • 主内容提取在文章上表现良好,在论坛/产品/列表页面上较弱(所有提取器的已知特性)。

  • 内存中的爬取/会话状态 — 设计为单进程、单用户。

开发

uv run pre-commit install        # local lint/secret hooks
uv run ruff check . && uv run ruff format --check .
uv run mypy src
uv run pytest -q
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables web scraping and crawling capabilities for LLM clients, supporting single-page scraping, multi-page website crawling, and web search with multiple engines (Playwright, Cheerio, Puppeteer) and flexible output formats including markdown, HTML, text, and screenshots.
    18
    6
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables LLMs to extract content from websites using automated static and dynamic scraping engines with built-in anti-bot protections. It provides tools for web data retrieval and stores results in MongoDB with support for JSON and CSV exports.
  • A
    license
    A
    quality
    A
    maintenance
    Web scraping, crawling, and structured data extraction for AI agents. 5 tools: scrape (clean markdown from any URL), crawl (entire sites), map (discover URLs), extract (structured JSON), and search. 833ms avg latency, single binary, self-hostable.
    8
    852
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables LLMs to fetch and extract web content using browser automation, OCR, and multiple extraction methods, handling JavaScript rendering and anti-scraping techniques.
    17
    MIT

View all related MCP servers

Related MCP Connectors

  • Enable language models to perform advanced AI-powered web scraping with enterprise-grade reliabili…

  • Scrape, crawl, map & search the web. Open-source, self-hostable Rust crawler & search for AI agents.

  • Live web access for agents: scrape, SERP search, crawl/map, 74 collectors, datasets, proxies.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Prog-up/web-scraper-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server