🚀 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