Web Scraper MCP
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、礼貌的速率限制)。加固的网站仍可能阻止;请参阅 限制。
工具
工具 | 功能 |
| 一个 URL → 干净的 markdown(去除样板内容)。静态优先,JS 页面自动回退到浏览器。 |
| 后台 BFS 爬取任务(去重、深度/页面上限);轮询结果。 |
| 列出页面上的链接(可选同域)——决定要爬取什么。 |
| 网络搜索。可插拔后端:DuckDuckGo(默认)、SearXNG、Brave 或 Tavily。 |
| 获取页面并提取与您的模式匹配的结构化 JSON,通过 LLM。 |
| 使用 token 便宜的 ARIA 快照驱动持久浏览器会话(点击/填写/按键)。 |
| 搜索 → 阅读顶级来源 → 返回带引用的综合报告。 |
extract 和 deep_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/mcpStdio(本地,用于桌面客户端):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 作为 extract 和 deep_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。
变量 | 默认值 | 说明 |
| (未设置) | HTTP 端点的 Bearer token。任何网络部署必需;未设置 = 未认证(警告)。 |
|
| 绑定地址。Docker 镜像设置主机为 |
|
| 无头页面并发上限(受 RAM/CPU 限制)。 |
|
| 爬取作业的硬性上限。 |
|
| 每个域名的礼貌速率限制。 |
|
| 遵守 robots.txt。 |
|
| 保持 false — 如果为 true 则禁用 SSRF 防护。 |
| (未设置) | 启用 |
| (未设置) | 可选搜索后端(先设置者优先,否则使用 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 -qMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables 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.186MIT
- FlicenseNot gradedqualityDmaintenanceEnables 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.
- AlicenseAqualityAmaintenanceWeb 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.8852AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceEnables LLMs to fetch and extract web content using browser automation, OCR, and multiple extraction methods, handling JavaScript rendering and anti-scraping techniques.17MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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