关于 Anycrawl - Turn Any Website Into Llm Ready
AnyCrawl MCP Server 为 MCP 客户端提供网页抓取、网站爬取和网络搜索工具。它支持多种提取引擎与输出格式,可本地或云端部署,并提供异步爬取任务管理。
主要功能
- 01抓取单个网页
- 02按深度和页面数爬取网站
- 03搜索网络并可抓取结果
- 04使用多种抓取引擎
- 05输出 Markdown、HTML、文本、截图或 JSON
- 06监控、获取和取消爬取任务
适用场景
- 01提取指定网页的内容
- 02收集网站中的多个页面
- 03搜索多个网站开展调研
- 04查看长时间爬取任务进度或取消任务
MCP 相关
向 MCP 客户端提供网页抓取、爬取、搜索及爬取任务管理工具。支持 stdio、Streamable HTTP 和 SSE 模式,也可使用托管云端点。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
6收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| proxy | string | 否 | |
| formats | array | 否 | |
| timeout | number | 否 | |
| wait_for | number | 否 | |
| include_tags | array | 否 | |
| exclude_tags | array | 否 | |
| json_options | object | 否 | |
| json_options.schema | any | 否 | |
| json_options.user_prompt | string | 否 | |
| json_options.schema_name | string | 否 | |
| json_options.schema_description | string | 否 | |
| extract_source | enum | 否 | html | markdown |
| engine | enum | 否 | playwright | cheerio | puppeteer |
| url | string | 是 | |
| retry | boolean | 否 |
详细介绍
AnyCrawl MCP Server
🚀 AnyCrawl MCP Server — 通过 Model Context Protocol(MCP),为 Cursor、Claude 及其他大模型客户端提供强大的网页抓取和爬取功能。
功能
- 网页抓取:从单个 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
配置
AnyCrawl MCP Server 支持两种部署模式:云服务(推荐)和可自托管。
云服务(推荐)
使用 AnyCrawl 云服务 mcp.anycrawl.dev。无需设置服务端。
# Only need your API key
export ANYCRAWL_API_KEY="your-api-key-here"
云端端点:
- MCP(streamable_http):
https://mcp.anycrawl.dev/{API_KEY}/mcp— Codex 和 Cursor 请使用此端点 - SSE:
https://mcp.anycrawl.dev/{API_KEY}/sse— 仅供旧版 SSE 客户端使用(不适用于 Codex)
可自托管部署
如需自行托管,请将基础 URL 配置为指向你自己的 AnyCrawl API 实例:
export ANYCRAWL_API_KEY="your-api-key-here"
export ANYCRAWL_BASE_URL="https://your-api-server.com" # Your self-hosted API URL
使用自定义主机/端口进行本地开发:
export ANYCRAWL_HOST="127.0.0.1" # Default: mcp.anycrawl.dev (cloud)
export ANYCRAWL_PORT="3000" # Default: 3000
获取 API 密钥
- 访问 AnyCrawl 网站并注册或登录:AnyCrawl
- 🎉 免费注册即可获得 1,500 个额度,足以爬取近 1,500 个页面。
- 打开控制面板 → API Keys → 复制你的密钥。
- 复制密钥并将其设置为
ANYCRAWL_API_KEY环境变量(见上文)。
使用方法
可用模式
AnyCrawl MCP Server 支持以下部署模式:
默认模式为 STDIO(无需环境变量)。设置 ANYCRAWL_MODE 即可切换模式。
| 模式 | 描述 | 适用场景 | 传输方式 |
|---|---|---|---|
STDIO | 通过 stdio 运行标准 MCP(默认) | 命令行型 MCP 客户端、本地工具 | stdio |
MCP | Streamable HTTP(JSON,有状态) | Cursor(streamable_http)、API 集成 | HTTP + JSON |
SSE | 服务器发送事件 | Web 应用、浏览器集成 | HTTP + SSE |
快速入门命令
# Development (local)
npm run dev # STDIO (default)
npm run dev:mcp # MCP mode (JSON /mcp)
npm run dev:sse # SSE mode (/sse)
# Production (built output)
npm start # STDIO (default)
npm run start:mcp
npm run start:sse
# Env examples
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)
此仓库提供可用于生产环境的镜像,可在同一容器中通过端口 3000 运行 MCP(JSON),并通过端口 3001 运行 SSE,前端由 Nginx 代理。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、SSEANYCRAWL_MCP_PORT:默认值为3000ANYCRAWL_SSE_PORT:默认值为3001CLOUD_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 Settings → Features → MCP Servers → “+ Add New MCP Server”
- 名称:“anycrawl-mcp”(或使用你偏好的名称)
- 类型:“command”
- 命令:
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 的 User Settings(JSON)中(命令面板 → Preferences: Open User Settings (JSON)):
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "apiKey",
"description": "AnyCrawl API Key",
"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 Key",
"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"
}
}
}
}
在 Claude Desktop / Claude Code 上运行
Claude Code(CLI)
使用 claude mcp add 命令添加 AnyCrawl MCP 服务:
claude mcp add --transport stdio anycrawl -e ANYCRAWL_API_KEY=your-api-key -- npx -y anycrawl-mcp
Claude Desktop
将以下内容添加到 Claude Desktop 配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"anycrawl": {
"command": "npx",
"args": ["-y", "anycrawl-mcp"],
"env": {
"ANYCRAWL_API_KEY": "YOUR_API_KEY"
}
}
}
}
使用 SSE 服务模式运行
SSE(服务器发送事件)模式提供了基于 Web 的 MCP 通信界面,适用于 Web 应用、测试以及与基于 Web 的大模型客户端集成。
快速开始
ANYCRAWL_MODE=SSE ANYCRAWL_API_KEY=YOUR-API-KEY npx -y anycrawl-mcp
# Or using npm scripts
ANYCRAWL_API_KEY=YOUR-API-KEY npm run dev:sse
服务配置
本地/可自托管部署的可选服务设置:
export ANYCRAWL_PORT=3000 # Default: 3000
export ANYCRAWL_HOST=127.0.0.1 # Set to override cloud default (mcp.anycrawl.dev)
健康检查
curl -s http://localhost:${ANYCRAWL_PORT:-3000}/health
# Response: ok
通用 MCP/SSE 客户端配置
对于支持 SSE 传输的其他 MCP/SSE 客户端,请使用此配置:
{
"mcpServers": {
"anycrawl": {
"type": "sse",
"url": "https://mcp.anycrawl.dev/{API_KEY}/sse",
"name": "AnyCrawl MCP Server",
"description": "Web scraping and crawling tools"
}
}
}
或
{
"mcpServers": {
"AnyCrawl": {
"type": "streamable_http",
"url": "https://mcp.anycrawl.dev/{API_KEY}/mcp"
}
}
}
环境设置:
# Start SSE server with API key
ANYCRAWL_API_KEY=your-api-key-here npm run dev:sse
Cursor 的 HTTP 模式配置(streamable_http)
配置 Cursor 以连接到 HTTP MCP 服务。
本地 HTTP Streamable 服务:
{
"mcpServers": {
"anycrawl-http-local": {
"type": "streamable_http",
"url": "http://127.0.0.1:3000/mcp"
}
}
}
云端 HTTP Streamable 服务:
{
"mcpServers": {
"anycrawl-http-cloud": {
"type": "streamable_http",
"url": "https://mcp.anycrawl.dev/{API_KEY}/mcp"
}
}
}
注意:对于 HTTP 模式,请在服务进程环境或 URL 中设置 ANYCRAWL_API_KEY(以及可选的主机/端口)。使用 streamable_http 时,Cursor 不需要 API 密钥。
Codex 配置(streamable HTTP)
Codex 仅使用 streamable HTTP,不支持旧版 SSE 传输。
将以下内容添加到 ~/.codex/config.toml(替换 YOUR_API_KEY):
[mcp_servers.anycrawl]
url = "https://mcp.anycrawl.dev/YOUR_API_KEY/mcp"
startup_timeout_sec = 60
重要提示:
- 使用
/mcp,不要使用/sse。配置/sse会导致 Codex 一直等待直至超时(约 30 秒),因为它需要的是 streamable HTTP,而不是 SSE。 - 将 API 密钥放在 URL 路径中(Codex 不会为远程服务读取
ANYCRAWL_API_KEY)。 - 如果启动仍然超时,请增大
startup_timeout_sec(Codex 的默认值为 10 秒)。
可用工具
1. 抓取工具(anycrawl_scrape)
抓取单个 URL 并以多种格式提取内容。
适用场景:
- 从单个页面提取内容
- 快速提取数据
- 测试特定 URL
参数:
url(必需):要抓取的 URLengine(可选):抓取引擎(auto、playwright、cheerio、puppeteer;默认值:auto)formats(可选):输出格式(markdown、html、text、screenshot、screenshot@fullPage、rawHtml、json)proxy(可选):代理 URLtimeout(可选):超时时间,单位为毫秒(默认值:300000)retry(可选):失败时是否重试(默认值:false)wait_for(可选):等待页面加载的时间include_tags(可选):要包含的 HTML 标签exclude_tags(可选):要排除的 HTML 标签json_options(可选):JSON 提取选项
示例:
{
"name": "anycrawl_scrape",
"arguments": {
"url": "https://example.com",
"formats": ["markdown", "html"],
"timeout": 30000
}
}
2. 爬取工具(anycrawl_crawl)
启动爬取任务,从网站抓取多个页面。默认情况下,此工具会等待任务完成,并使用 SDK 的 client.crawl 返回汇总结果(默认值:每 3 秒轮询一次,60 秒后超时)。
最适合用于:
- 从多个相关页面提取内容
- 全面分析网站
- 批量收集数据
参数:
url(必填):要爬取的基础 URLengine(可选):抓取引擎(auto、playwright、cheerio、puppeteer;默认值:auto)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",
"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)
检查爬取任务的状态。
参数:
job_id(必填):爬取任务 ID
示例:
{
"name": "anycrawl_crawl_status",
"arguments": {
"job_id": "7a2e165d-8f81-4be6-9ef7-23222330a396"
}
}
4. 爬取结果工具(anycrawl_crawl_results)
获取爬取任务的结果。
参数:
job_id(必填):爬取任务 IDskip(可选):要跳过的结果数(用于分页)
示例:
{
"name": "anycrawl_crawl_results",
"arguments": {
"job_id": "7a2e165d-8f81-4be6-9ef7-23222330a396",
"skip": 0
}
}
5. 取消爬取工具(anycrawl_cancel_crawl)
取消待处理的爬取任务。
参数:
job_id(必填):要取消的爬取任务 ID
示例:
{
"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": {
"formats": ["markdown"]
}
}
}
输出格式
Markdown
简洁、结构清晰的 Markdown 内容,非常适合大模型使用。
HTML
保留所有格式的原始 HTML 内容。
文本
格式简洁的纯文本内容。
截图
页面的可视化截图。
截图@fullPage
包含页面首屏以下内容的整页截图。
原始 HTML
未经处理的 HTML 内容。
JSON
使用自定义架构提取结构化数据。
引擎
Auto(默认)
- 自动为目标 URL 选择最佳引擎
- 无需手动配置,即可优化速度和准确性
- 推荐用于大多数场景
Cheerio
- 快速、轻量
- 适用于静态内容
- 服务端渲染
Playwright
- 完整的浏览器自动化
- JavaScript 渲染
- 最适合动态内容
Puppeteer
- Chrome/Chromium 自动化
- 功能与性能兼顾
错误处理
服务提供全面的错误处理:
- 验证错误:参数无效或缺少必填字段
- API 错误:AnyCrawl API 错误,并提供详细消息
- 网络错误:连接问题和超时问题
- 速率限制:自动退避重试
日志记录
服务器包含详细的日志记录:
- Debug:详细的操作信息
- Info:常规操作状态
- Warn:非关键问题
- Error:严重错误和故障
使用环境变量设置日志级别:
export LOG_LEVEL=debug # debug, info, warn, error
开发
前置条件
- Node.js 22.12+(Docker 和 CI 使用 Node 22;参见
.node-version) - npm
设置
git clone <repository>
cd anycrawl-mcp
npm ci
构建
npm run build
测试
npm test
这会运行现有的单元测试、构建 CLI,并检查真实 FastMCP 在 STDIO、Streamable HTTP 和旧版 SSE 上的握手。roots 回归测试会声明客户端支持 roots,同时不响应 roots/list:禁用 roots 时,请求数必须为零,并且会话须在两秒内就绪。
如需验证两个 Docker 镜像(包括 Nginx 路由):
docker build -t anycrawl-mcp:verify .
docker build -f Dockerfile.service -t anycrawl-mcp-combined:verify .
npm run test:containers -- anycrawl-mcp:verify anycrawl-mcp-combined:verify
发布和回滚检查记录在 MCP 部署手册中。
Lint
npm run lint
格式化
npm run format
参与贡献
- Fork 此仓库
- 创建功能分支
- 运行测试:
npm test - 提交拉取请求
许可证
MIT 许可证 - 详情请参阅 LICENSE 文件
支持
- GitHub Issues:报告错误或请求功能
- 文档:AnyCrawl API 文档
- 邮箱:[email protected]
关于 AnyCrawl
AnyCrawl 是一款强大的 Node.js/TypeScript 爬虫,可将网站转换为适用于大模型的数据,并从 Google/Bing/Baidu 等平台提取结构化 SERP 结果。它具有原生多线程功能,可进行批量处理,并支持多种输出格式。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。