🚀 AnyCrawl MCP Server
🚀 AnyCrawl MCP Server 是一款强大的网页抓取和爬取工具,它通过模型上下文协议(MCP)为 Cursor、Claude 等大语言模型(LLM)客户端提供支持。
🚀 快速开始
AnyCrawl MCP Server 可助力你高效地进行网页抓取和爬取工作。以下是使用前的准备步骤:
- 获取 API 密钥:访问 AnyCrawl 网站,注册或登录账号。注册后可免费获得 1500 个积分,足以爬取近 1500 个页面。打开仪表盘,点击 “API Keys”,复制你的密钥。
- 设置环境变量:将获取的 API 密钥设置为
ANYCRAWL_API_KEY 环境变量。示例:export ANYCRAWL_API_KEY="your-api-key-here"。
- 选择安装方式:你可以选择使用
npx 运行,或者手动安装。
✨ 主要特性
- 网页抓取:从单个 URL 提取内容,支持多种输出格式。
- 网站爬取:可对整个网站进行爬取,支持配置爬取深度和限制。
- 搜索引擎集成:支持在网络上搜索,并可选择对搜索结果进行抓取。
- 多引擎支持:支持 Playwright、Cheerio 和 Puppeteer 等多种抓取引擎。
- 灵活输出:支持 Markdown、HTML、文本、截图和结构化 JSON 等多种输出格式。
- 异步操作:支持非阻塞式爬取任务,并可进行状态监控。
- 错误处理:具备强大的错误处理和日志记录功能。
- 多模式支持:支持 STDIO(默认)、MCP(HTTP)、SSE 等模式,可通过 Nginx 代理实现云端部署。
📦 安装指南
使用 npx 运行
ANYCRAWL_API_KEY=YOUR-API-KEY npx -y anycrawl-mcp
手动安装
npm install -g anycrawl-mcp-server
ANYCRAWL_API_KEY=YOUR-API-KEY anycrawl-mcp
配置环境变量
设置必需的环境变量:
export ANYCRAWL_API_KEY="your-api-key-here"
可选设置自定义基础 URL:
export ANYCRAWL_BASE_URL="https://api.anycrawl.dev"
💻 使用示例
可用模式
AnyCrawl MCP Server 支持以下部署模式,默认模式为 STDIO(无需设置环境变量),可通过设置 ANYCRAWL_MODE 进行切换。
| 模式 |
描述 |
适用场景 |
传输方式 |
STDIO |
通过标准输入输出实现标准 MCP(默认) |
命令型 MCP 客户端、本地工具 |
标准输入输出 |
MCP |
可流式传输的 HTTP(JSON,有状态) |
Cursor(可流式传输的 HTTP)、API 集成 |
HTTP + JSON |
SSE |
服务器发送事件 |
网页应用、浏览器集成 |
HTTP + SSE |
快速启动命令
npm run dev
npm run dev:mcp
npm run dev:sse
npm start
npm run start:mcp
npm run start:sse
ANYCRAWL_MODE=MCP ANYCRAWL_API_KEY=YOUR-KEY npm run dev:mcp
ANYCRAWL_MODE=SSE ANYCRAWL_API_KEY=YOUR-KEY npm run dev:sse
Docker Compose(MCP + SSE 搭配 Nginx)
本仓库提供了一个生产就绪的镜像,可在同一容器中通过 Nginx 前端在端口 3000 运行 MCP(JSON),在端口 3001 运行 SSE。Nginx 还支持以 API 密钥为前缀的路径 /{API_KEY}/mcp 和 /{API_KEY}/sse,并通过 x-anycrawl-api-key 头转发密钥。
docker compose build
docker compose up -d
Docker 镜像中使用的环境变量:
ANYCRAWL_MODE: MCP_AND_SSE(Compose 中的默认值),或 MCP、SSE
ANYCRAWL_MCP_PORT: 默认值为 3000
ANYCRAWL_SSE_PORT: 默认值为 3001
CLOUD_SERVICE: 设置为 true 可从 /{API_KEY}/... 或头信息中提取 API 密钥
ANYCRAWL_BASE_URL: 默认值为 https://api.anycrawl.dev
在 Cursor 上运行
配置 Cursor(需要 Cursor v0.45.6+ 版本)。
对于 Cursor v0.48.6 及更高版本,将以下内容添加到 MCP Servers 设置中:
{
"mcpServers": {
"anycrawl-mcp": {
"command": "npx",
"args": ["-y", "anycrawl-mcp"],
"env": {
"ANYCRAWL_API_KEY": "YOUR-API-KEY"
}
}
}
}
对于 Cursor v0.45.6 版本:
- 打开 Cursor 设置 → 功能 → MCP Servers → "+ 添加新的 MCP 服务器"
- 名称:"anycrawl-mcp"(或你喜欢的名称)
- 类型:"命令"
- 命令:
env ANYCRAWL_API_KEY=YOUR-API-KEY npx -y anycrawl-mcp
在 Windows 系统上遇到问题时:
cmd /c "set ANYCRAWL_API_KEY=YOUR-API-KEY && npx -y anycrawl-mcp"
在 VS Code 上运行
手动安装时,将以下 JSON 添加到 VS Code 的用户设置(JSON)中(命令面板 → 首选项:打开用户设置(JSON)):
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "apiKey",
"description": "AnyCrawl API 密钥",
"password": true
}
],
"servers": {
"anycrawl": {
"command": "npx",
"args": ["-y", "anycrawl-mcp"],
"env": {
"ANYCRAWL_API_KEY": "${input:apiKey}"
}
}
}
}
}
可选地,将以下内容放置在工作区的 .vscode/mcp.json 中以共享配置:
{
"inputs": [
{
"type": "promptString",
"id": "apiKey",
"description": "AnyCrawl API 密钥",
"password": true
}
],
"servers": {
"anycrawl": {
"command": "npx",
"args": ["-y", "anycrawl-mcp"],
"env": {
"ANYCRAWL_API_KEY": "${input:apiKey}"
}
}
}
}
在 Windsurf 上运行
将以下内容添加到 ./codeium/windsurf/model_config.json 中:
{
"mcpServers": {
"mcp-server-anycrawl": {
"command": "npx",
"args": ["-y", "anycrawl-mcp"],
"env": {
"ANYCRAWL_API_KEY": "YOUR_API_KEY"
}
}
}
}
使用 SSE 服务器模式
SSE(服务器发送事件)模式为 MCP 通信提供了基于 Web 的界面,适用于网页应用、测试以及与基于 Web 的 LLM 客户端集成。
快速启动
ANYCRAWL_API_KEY=YOUR-API-KEY npx -y anycrawl-mcp
ANYCRAWL_API_KEY=YOUR-API-KEY npm run dev:sse
服务器配置
可选的服务器设置(显示默认值):
export ANYCRAWL_PORT=3000
export ANYCRAWL_HOST=0.0.0.0
健康检查
curl -s http://localhost:${ANYCRAWL_PORT:-3000}/health
通用 MCP/SSE 客户端配置
对于支持 SSE 传输的其他 MCP/SSE 客户端,使用以下配置:
{
"mcpServers": {
"anycrawl": {
"type": "sse",
"url": "https://mcp.anycrawl.dev/{API_KEY}/sse",
"name": "AnyCrawl MCP 服务器",
"description": "网页抓取和爬取工具"
}
}
}
或
{
"mcpServers": {
"AnyCrawl": {
"type": "streamable_http",
"url": "https://mcp.anycrawl.dev/{API_KEY}/mcp"
}
}
}
环境设置:
ANYCRAWL_API_KEY=your-api-key-here npm run dev:sse
Cursor 配置(HTTP 模式,可流式传输的 HTTP)
配置 Cursor 以连接到你的 HTTP MCP 服务器。
本地 HTTP 可流式传输服务器:
{
"mcpServers": {
"anycrawl-http-local": {
"type": "streamable_http",
"url": "http://127.0.0.1:3000/mcp"
}
}
}
云端 HTTP 可流式传输服务器:
{
"mcpServers": {
"anycrawl-http-cloud": {
"type": "streamable_http",
"url": "https://mcp.anycrawl.dev/{API_KEY}/mcp"
}
}
}
注意:对于 HTTP 模式,需在服务器进程环境或 URL 中设置 ANYCRAWL_API_KEY(以及可选的主机/端口)。使用 streamable_http 时,Cursor 不需要你的 API 密钥。
可用工具
1. 抓取工具 (anycrawl_scrape)
从单个 URL 抓取内容并以多种格式提取。
适用场景:
- 从单个页面提取内容
- 快速数据提取
- 测试特定 URL
参数:
url(必需):要抓取的 URL
engine(必需):抓取引擎(playwright、cheerio、puppeteer)
formats(可选):输出格式(markdown、html、text、screenshot、screenshot@fullPage、rawHtml、json)
proxy(可选):代理 URL
timeout(可选):超时时间(毫秒,默认值:300000)
retry(可选):失败时是否重试(默认值:false)
wait_for(可选):页面加载等待时间
include_tags(可选):要包含的 HTML 标签
exclude_tags(可选):要排除的 HTML 标签
json_options(可选):JSON 提取选项
示例:
{
"name": "anycrawl_scrape",
"arguments": {
"url": "https://example.com",
"engine": "cheerio",
"formats": ["markdown", "html"],
"timeout": 30000
}
}
2. 爬取工具 (anycrawl_crawl)
启动爬取任务以从网站抓取多个页面。默认情况下,使用 SDK 的 client.crawl 等待任务完成并返回聚合结果(默认:每 3 秒轮询一次,60 秒后超时)。
适用场景:
- 从多个相关页面提取内容
- 全面的网站分析
- 批量数据收集
参数:
url(必需):要爬取的基础 URL
engine(必需):抓取引擎
max_depth(可选):最大爬取深度(默认值:10)
limit(可选):最大页面数(默认值:100)
strategy(可选):爬取策略(all、same-domain、same-hostname、same-origin)
exclude_paths(可选):要排除的 URL 模式
include_paths(可选):要包含的 URL 模式
scrape_options(可选):单个页面抓取选项
poll_seconds(可选):等待时的轮询间隔秒数(默认值:3)
timeout_ms(可选):等待的总超时毫秒数(默认值:60000)
示例:
{
"name": "anycrawl_crawl",
"arguments": {
"url": "https://example.com/blog",
"engine": "playwright",
"max_depth": 2,
"limit": 50,
"strategy": "same-domain",
"poll_seconds": 3,
"timeout_ms": 60000
}
}
返回结果:{ "job_id": "...", "status": "completed", "total": N, "completed": N, "creditsUsed": N, "data": [...] }。
3. 爬取状态工具 (anycrawl_crawl_status)
检查爬取任务的状态。
参数:
示例:
{
"name": "anycrawl_crawl_status",
"arguments": {
"job_id": "7a2e165d-8f81-4be6-9ef7-23222330a396"
}
}
4. 爬取结果工具 (anycrawl_crawl_results)
获取爬取任务的结果。
参数:
job_id(必需):爬取任务 ID
skip(可选):要跳过的结果数(用于分页)
示例:
{
"name": "anycrawl_crawl_results",
"arguments": {
"job_id": "7a2e165d-8f81-4be6-9ef7-23222330a396",
"skip": 0
}
}
5. 取消爬取工具 (anycrawl_cancel_crawl)
取消待处理的爬取任务。
参数:
示例:
{
"name": "anycrawl_cancel_crawl",
"arguments": {
"job_id": "7a2e165d-8f81-4be6-9ef7-23222330a396"
}
}
6. 搜索工具 (anycrawl_search)
使用 AnyCrawl 搜索引擎在网络上搜索。
适用场景:
- 在多个网站上查找特定信息
- 研究和发现
- 不确定信息所在网站时使用
参数:
query(必需):搜索查询
engine(可选):搜索引擎(google)
limit(可选):最大结果数(默认值:10)
offset(可选):要跳过的结果数(默认值:0)
pages(可选):要搜索的页面数
lang(可选):语言代码
country(可选):国家代码
scrape_options(必需):搜索结果抓取选项
safeSearch(可选):安全搜索级别(0=关闭,1=中等,2=严格)
示例:
{
"name": "anycrawl_search",
"arguments": {
"query": "latest AI research papers 2024",
"engine": "google",
"limit": 5,
"scrape_options": {
"engine": "cheerio",
"formats": ["markdown"]
}
}
}
📚 详细文档
输出格式
- Markdown:干净、结构化的 Markdown 内容,非常适合 LLM 处理。
- HTML:保留所有格式的原始 HTML 内容。
- 文本:格式最少的纯文本内容。
- 截图:页面的视觉截图。
- Screenshot@fullPage:包含折叠下方内容的全页截图。
- 原始 HTML:未处理的 HTML 内容。
- JSON:使用自定义模式进行结构化数据提取。
引擎
Cheerio
Playwright
- 全浏览器自动化
- JavaScript 渲染
- 最适合动态内容
Puppeteer
- Chrome/Chromium 自动化
- 功能和性能的良好平衡
🔧 技术细节
错误处理
服务器提供全面的错误处理:
- 验证错误:无效参数或缺少必需字段
- API 错误:AnyCrawl API 错误,带有详细消息
- 网络错误:连接和超时问题
- 速率限制:自动重试并进行退避
日志记录
服务器包含详细的日志记录:
- 调试:详细的操作信息
- 信息:一般操作状态
- 警告:非关键问题
- 错误:关键错误和失败
可通过环境变量设置日志级别:
export LOG_LEVEL=debug
开发
前提条件
设置
git clone <repository>
cd anycrawl-mcp
npm ci
构建
npm run build
测试
npm test
代码检查
npm run lint
格式化
npm run format
📄 许可证
本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。
支持
关于 AnyCrawl
AnyCrawl 是一个强大的 Node.js/TypeScript 爬虫,可将网站转换为适合 LLM 的数据,并从 Google、Bing、百度等搜索引擎提取结构化的搜索结果页面(SERP)数据。它具有原生多线程处理功能,支持多种输出格式。
- 网站:https://anycrawl.dev
- GitHub:https://github.com/any4ai/anycrawl
- API:https://api.anycrawl.dev