mcpField
A
Anycrawl  - Turn Any Website Into Llm Ready

Anycrawl - Turn Any Website Into Llm Ready

本地服务
github.com/any4aiAI 与智能体67 周前更新

关于 Anycrawl - Turn Any Website Into Llm Ready

AnyCrawl MCP Server 为 MCP 客户端提供网页抓取、网站爬取和网络搜索工具。它支持多种提取引擎与输出格式,可本地或云端部署,并提供异步爬取任务管理。

主要功能

  1. 01抓取单个网页
  2. 02按深度和页面数爬取网站
  3. 03搜索网络并可抓取结果
  4. 04使用多种抓取引擎
  5. 05输出 Markdown、HTML、文本、截图或 JSON
  6. 06监控、获取和取消爬取任务

适用场景

  1. 01提取指定网页的内容
  2. 02收集网站中的多个页面
  3. 03搜索多个网站开展调研
  4. 04查看长时间爬取任务进度或取消任务

MCP 相关

向 MCP 客户端提供网页抓取、爬取、搜索及爬取任务管理工具。支持 stdio、Streamable HTTP 和 SSE 模式,也可使用托管云端点。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"anycrawl": {
"command": "npx",
"args": [
"-y",
"anycrawl-mcp-server"
],
"env": {
"ANYCRAWL_API_KEY": "<ANYCRAWL_API_KEY>",
"ANYCRAWL_BASE_URL": "<ANYCRAWL_BASE_URL>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
启动命令npx -y anycrawl-mcp-server
需要配置的环境变量
ANYCRAWL_API_KEY密钥
ANYCRAWL_BASE_URL
LOG_LEVEL

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmanycrawl-mcp-server

工具

6

收录的工具列表 · 更新于 3 周前

参数类型必填说明
proxystring否
formatsarray否
timeoutnumber否
wait_fornumber否
include_tagsarray否
exclude_tagsarray否
json_optionsobject否
json_options.schemaany否
json_options.user_promptstring否
json_options.schema_namestring否
json_options.schema_descriptionstring否
extract_sourceenum否html | markdown
engineenum否playwright | cheerio | puppeteer
urlstring是
retryboolean否

详细介绍

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
MCPStreamable 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、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:

  1. 打开 Cursor Settings → Features → MCP Servers → “+ Add New MCP Server”
  2. 名称:“anycrawl-mcp”(或使用你偏好的名称)
  3. 类型:“command”
  4. 命令:
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(必需):要抓取的 URL
  • engine(可选):抓取引擎(auto、playwright、cheerio、puppeteer;默认值:auto)
  • 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",
    "formats": ["markdown", "html"],
    "timeout": 30000
  }
}
2. 爬取工具(anycrawl_crawl)

启动爬取任务,从网站抓取多个页面。默认情况下,此工具会等待任务完成,并使用 SDK 的 client.crawl 返回汇总结果(默认值:每 3 秒轮询一次,60 秒后超时)。

最适合用于:

  • 从多个相关页面提取内容
  • 全面分析网站
  • 批量收集数据

参数:

  • url(必填):要爬取的基础 URL
  • engine(可选):抓取引擎(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(必填):爬取任务 ID
  • skip(可选):要跳过的结果数(用于分页)

示例:

{
  "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

参与贡献

  1. Fork 此仓库
  2. 创建功能分支
  3. 运行测试:npm test
  4. 提交拉取请求

许可证

MIT 许可证 - 详情请参阅 LICENSE 文件

支持

关于 AnyCrawl

AnyCrawl 是一款强大的 Node.js/TypeScript 爬虫,可将网站转换为适用于大模型的数据,并从 Google/Bing/Baidu 等平台提取结构化 SERP 结果。它具有原生多线程功能,可进行批量处理,并支持多种输出格式。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。