刮板MCP
 ](https://github.com/cotdp/scraper-mcp/actions/workflows/docker-publish.yml) 
用于网络抓取的上下文优化MCP服务器。通过服务器端HTML过滤、markdown转换和CSS选择器定位,将LLM令牌使用量减少70-90%。
快速开始
# Run with Docker (GitHub Container Registry)
docker run -d -p 8000:8000 --name scraper-mcp ghcr.io/cotdp/scraper-mcp:latest
# Add to Claude Code
claude mcp add --transport http scraper http://localhost:8000/mcp --scope user试试看:
> scrape https://example.com
> scrape and filter .article-content from https://blog.example.com/post终点:
- MCP:
http://localhost:8000/mcp - 仪表板:
http://localhost:8000/
特性
网络爬取
- 4种刮擦模式:原始HTML、markdown、纯文本、链接提取
- JavaScript渲染:可选的基于剧作家的SPA和动态内容渲染
- CSS选择器过滤:仅在服务器端提取相关内容
- 批量操作:同时处理多个URL
- 智能缓存:三层缓存系统(实时/默认/静态)
- 重试逻辑:瞬态故障的指数回退
困惑AI集成
- 网络搜索:基于人工智能的引文搜索(
perplexity工具) - 推理:具有逐步推理的复杂分析(
perplexity_reason工具) - 需要
PERPLEXITY_API_KEY环境变量
监控仪表板
- 实时请求统计和缓存指标
- 用于测试工具的交互式API游乐场
- 不重新启动的运行时配置
看 仪表板指南 了解详情。
可用工具
| 工具 | 说明 |
|---|---|
scrape_url | HTML转换为markdown(最适合LLM) |
scrape_url_html | 原始HTML内容 |
scrape_url_text | 纯文本提取 |
scrape_extract_links | 提取所有包含元数据的链接 |
perplexity | 带有引文的AI网络搜索 |
perplexity_reason | 复杂的推理任务 |
所有工具支持:
- 单个URL或批处理操作(传递数组)
timeout和max_retries参数css_selector用于靶向提取render_js用于JavaScript渲染(SPA、动态内容)
资源
注: 默认情况下,资源被禁用以减少上下文开销。启用--enable-resources旗帜或ENABLE_RESOURCES=true环境变量。
MCP资源通过基于URI的寻址提供只读数据访问:
| URI | 描述 |
|---|---|
cache://stats | 缓存命中率、大小、条目计数 |
cache://requests | 最近的请求ID列表 |
cache://request/{id} | 按ID检索缓存结果 |
config://current | 当前运行时配置 |
config://scraping | 超时、重试、并发 |
server://info | 版本、正常运行时间、功能 |
server://metrics | 请求计数、成功率 |
提示
注: 默认情况下禁用提示以减少上下文开销。启用--enable-prompts旗帜或ENABLE_PROMPTS=true环境变量。
MCP提示提供可重用的工作流模板:
| 提示 | 描述 |
|---|---|
analyze_webpage | 结构化网页分析 |
summarize_content | 生成内容摘要 |
extract_data | 提取特定数据类型 |
seo_audit | 全面的SEO检查 |
link_audit | 分析内部/外部链接 |
research_topic | 多源研究 |
fact_check | 验证不同来源的声明 |
看 api参考 以获取完整的文档。
JavaScript渲染
对于SPA(React、Vue、Angular)和具有动态内容的页面,启用JavaScript渲染:
# Enable JS rendering with render_js=True
scrape_url(["https://spa-example.com"], render_js=True)
# Combine with CSS selector for targeted extraction
scrape_url(["https://react-app.com"], render_js=True, css_selector=".main-content")何时使用 render_js=True:
- 单页应用程序(SPA)-React、Vue、Angular等。
- 具有延迟加载内容的网站
- 需要执行JavaScript的页面
- 通过AJAX/fetch加载动态内容
不需要时:
- 静态HTML页面(大多数博客、新闻网站、文档)
- 服务器呈现的内容
- 没有JavaScript依赖的简单网站
它是如何工作的:
- 使用无头Chromium的剧作家
- 具有池化上下文的单个浏览器实例(约300MB基础+每个上下文10-20MB)
- 延迟初始化(浏览器仅在请求第一个JS渲染时启动)
- 信号量控制并发(默认:5个并发上下文)
内存注意事项:
- 基本请求提供程序:~50MB
- Playwright处于活动状态:约300-500MB,具体取决于并发上下文
- 使用JS渲染时建议至少1GB的容器内存
测试JS渲染: 使用仪表板游乐场 http://localhost:8000/ 使用切换开关交互式测试JavaScript渲染。
Docker部署
快速运行
# Using GitHub Container Registry (recommended)
docker run -d -p 8000:8000 --name scraper-mcp ghcr.io/cotdp/scraper-mcp:latest
# With JavaScript rendering (requires more memory)
docker run -d -p 8000:8000 --memory=1g --name scraper-mcp ghcr.io/cotdp/scraper-mcp:latest
# With Perplexity AI
docker run -d -p 8000:8000 -e PERPLEXITY_API_KEY=your_key ghcr.io/cotdp/scraper-mcp:latestDocker Compose
对于持久存储和自定义配置:
# docker-compose.yml
services:
scraper-mcp:
image: ghcr.io/cotdp/scraper-mcp:latest
ports:
- "8000:8000"
volumes:
- cache:/app/cache
environment:
- PERPLEXITY_API_KEY=${PERPLEXITY_API_KEY:-}
- PLAYWRIGHT_MAX_CONTEXTS=5
deploy:
resources:
limits:
memory: 1G # Recommended for JS rendering
restart: unless-stopped
volumes:
cache:docker-compose up -d生产部署 (来自GHCR的预构建图像):
docker-compose -f docker-compose.prod.yml up -d升级
要将现有部署升级到最新版本,请执行以下操作:
# Pull the latest image
docker pull ghcr.io/cotdp/scraper-mcp:latest
# Restart with new image (docker-compose)
docker-compose down && docker-compose up -d
# Or for production deployments
docker-compose -f docker-compose.prod.yml pull
docker-compose -f docker-compose.prod.yml up -d
# Or restart a standalone container
docker stop scraper-mcp && docker rm scraper-mcp
docker run -d -p 8000:8000 --name scraper-mcp ghcr.io/cotdp/scraper-mcp:latest您的缓存数据在升级过程中会保留在命名卷中。
可用标签
| 标签 | 描述 |
|---|---|
latest | 最新稳定版本 |
main | 主分支的最新构建 |
v0.4.0 | 具体版本 |
配置
创建一个 .env 自定义设置文件:
# Perplexity AI (optional)
PERPLEXITY_API_KEY=your_key_here
# JavaScript rendering (optional, requires Playwright)
PLAYWRIGHT_MAX_CONTEXTS=5 # Max concurrent browser contexts
PLAYWRIGHT_TIMEOUT=30000 # Page load timeout in ms
PLAYWRIGHT_DISABLE_GPU=true # Reduce memory in containers
# MCP features (disabled by default to reduce context overhead)
ENABLE_RESOURCES=true # Enable MCP resources
ENABLE_PROMPTS=true # Enable MCP prompts
# Proxy (optional)
HTTP_PROXY=http://proxy.example.com:8080
HTTPS_PROXY=http://proxy.example.com:8080
# ScrapeOps proxy service (optional)
SCRAPEOPS_API_KEY=your_key_here
SCRAPEOPS_RENDER_JS=true看 配置指南 对于所有选项。
克劳德桌面
添加到MCP设置中:
{
"mcpServers": {
"scraper": {
"url": "http://localhost:8000/mcp"
}
}
}Claude代码技能
该项目包括 代理技能 为Claude Code提供了有效使用刮刀工具的专业知识。
安装技能
将技能复制到您的Claude Code技能目录:
# Clone or download this repo, then:
cp -r .claude/skills/web-scraping ~/.claude/skills/
cp -r .claude/skills/perplexity ~/.claude/skills/或直接安装:
# web-scraping skill
mkdir -p ~/.claude/skills/web-scraping
curl -o ~/.claude/skills/web-scraping/SKILL.md \
https://raw.githubusercontent.com/cotdp/scraper-mcp/main/.claude/skills/web-scraping/SKILL.md
# perplexity skill
mkdir -p ~/.claude/skills/perplexity
curl -o ~/.claude/skills/perplexity/SKILL.md \
https://raw.githubusercontent.com/cotdp/scraper-mcp/main/.claude/skills/perplexity/SKILL.md安装后,Claude Code将在执行网络抓取或困惑AI任务时自动使用这些技能。
文档
本地开发
# Install
uv pip install -e ".[dev]"
# Run
python -m scraper_mcp
# Test
pytest
# Lint
ruff check . && mypy src/看 开发指南 了解详情。
许可证
MIT许可证
______________________________________________________________________
_最后更新日期:2025年12月23日_
