🚀 AnyCrawl MCP Server
🚀 AnyCrawl MCP Server は、Model Context Protocol (MCP) を介して、Cursor、Claude、その他のLLMクライアント向けに強力なウェブスクレイピングとクローリングを提供します。
✨ 主な機能
- ウェブスクレイピング:単一の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"
APIキーの取得
- AnyCrawlのウェブサイトにアクセスし、サインアップまたはログインします:AnyCrawl
- 🎉 無料でサインアップすると、1,500クレジットが付与され、約1,500ページをクロールできます。
- ダッシュボードを開き → APIキー → キーをコピーします。
- キーをコピーし、
ANYCRAWL_API_KEY 環境変数として設定します(上記を参照)。
使用方法
利用可能なモード
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 with 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の場合:
- Cursor設定 → 機能 → MCPサーバー → "+ 新しい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での実行
手動インストールの場合、VS Codeのユーザー設定(JSON)にこのJSONを追加します(コマンドパレット → 設定: ユーザー設定(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"
}
}
}
}
SSEサーバーモードでの実行
SSE(サーバー送信イベント)モードは、MCP通信のためのウェブベースのインターフェースを提供し、ウェブアプリケーション、テスト、およびウェブベースの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 Server",
"description": "Web scraping and crawling tools"
}
}
}
または
{
"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モード(streamable_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モードの場合、ANYCRAWL_API_KEY(および任意のホスト/ポート)をサーバープロセスの環境またはURLに設定します。Cursorは streamable_http を使用する場合、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)
保留中のクロールジョブをキャンセルします。
パラメータ:
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": {
"engine": "cheerio",
"formats": ["markdown"]
}
}
}
出力形式
Markdown
LLMでの消費に最適な、クリーンで構造化されたMarkdownコンテンツ。
HTML
すべての形式が保持された生のHTMLコンテンツ。
テキスト
最小限の形式のプレーンテキストコンテンツ。
スクリーンショット
ページのビジュアルスクリーンショット。
スクリーンショット@全ページ
折り返し部分以下のコンテンツを含む全ページのスクリーンショット。
生の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
コントリビューション
- リポジトリをフォークします。
- 機能ブランチを作成します。
- テストを実行します:
npm test
- プルリクエストを送信します。
📄 ライセンス
MITライセンス - 詳細はLICENSEファイルを参照してください。
サポート
AnyCrawlについて
AnyCrawlは強力なNode.js/TypeScriptクローラーで、ウェブサイトをLLM対応のデータに変換し、Google/Bing/Baiduなどから構造化されたSERP結果を抽出します。バルク処理のためのネイティブマルチスレッディングを備え、複数の出力形式をサポートしています。
- ウェブサイト: https://anycrawl.dev
- GitHub: https://github.com/any4ai/anycrawl
- API: https://api.anycrawl.dev