crawl4ai-mcp について
crawl4ai-mcpはCrawl4AIを使い、AIシステムにウェブのスクレイピングとクロール機能を提供します。4つのツール、2つのリソース、3つのプロンプトを備え、stdioとStreamable HTTPに対応し、ライフサイクル管理されたヘッドレスChromiumを利用します。
主な機能
- 01ページのスクレイピングとコンテンツ抽出
- 02リスト型と深層クロールへの対応
- 03セッション終了とアーティファクト取得
- 04設定・バージョンリソースの公開
- 05ページ要約などのプロンプト
- 06stdioとStreamable HTTPへの対応
活用シーン
- 01ページをMarkdownやテキストに変換して取得
- 02サイト内のページを再帰的に巡回
- 03ページ内容の要約・抽出・比較
MCP 対応
ウェブ取得・クロール用ツール、設定・バージョンリソース、ページ要約・抽出・比較用プロンプトをMCPクライアントに公開します。stdioとStreamable HTTPのトランスポートに対応しています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
概要
MCP-Crawl4AI は、AI システムがライブウェブにアクセスできるようにする Model Context Protocol サーバーです。FastMCP v3 と Crawl4AI を基盤としており、ライフスパン管理されたヘッドレス Chromium ブラウザーを利用し、標準化された MCP インターフェースを通じて 4 つのツール、2 つのリソース、3 つのプロンプトを提供します。
実行時の依存関係は 2 つだけです — fastmcp と crawl4ai。
ヒント
主な機能
- FastMCP v3 による完全な MCP 準拠と、ツールのアノテーション(
readOnlyHint、destructiveHintなど) - 4 つの目的に特化したツール。標準的なスクレイピング/クロールと、セッションのライフサイクル/成果物を中心に構成
- 3 つのプロンプト。一般的な LLM ワークフロー(要約、スキーマ抽出、ページ比較)向け
- 2 つのリソース。サーバー設定とバージョン情報を公開
- ヘッドレス Chromiumをライフスパンのシングルトンとして管理(一度起動すれば、すべての処理で再利用)
- 複数のトランスポート — stdio(デフォルト)と Streamable HTTP
- LLM 向けに最適化された出力 — マークダウン、クリーニング済み HTML、生 HTML、またはプレーンテキスト
- 標準的なオプショングループ。抽出、ランタイム、診断、セッション、レンダリング、巡回向け
- 1 つの
crawlコントラクトで、リスト巡回と詳細巡回に対応 - セッション対応ワークフロー。明示的なセッション終了と成果物取得のツールを提供
- ブラウザーを自動セットアップ — Playwright ブラウザーがない場合に検出し、自動でインストール
インストール
pip
pip install mcp-crawl4ai
mcp-crawl4ai --setup # one-time: installs Playwright browsers
uv(推奨)
uv add mcp-crawl4ai
mcp-crawl4ai --setup # one-time: installs Playwright browsers
Docker
docker build -t mcp-crawl4ai .
docker run -p 8000:8000 mcp-crawl4ai
Docker イメージには Playwright ブラウザーが含まれているため、別途セットアップする必要はありません。
開発
git clone https://github.com/wyattowalsh/mcp-crawl4ai.git
cd mcp-crawl4ai
uv sync --group dev
mcp-crawl4ai --setup
メモ
サーバーは初回起動時に Playwright ブラウザーがないか自動検出し、自動インストールを試みます。
mcp-crawl4ai --setupまたはcrawl4ai-setupをいつでも手動で実行できます。
クイックスタート
stdio(デフォルト — Claude Desktop、Cursor など向け)
mcp-crawl4ai
HTTP トランスポート
mcp-crawl4ai --transport http --port 8000
メモ
HTTP はデフォルトで
127.0.0.1にバインドされます(プライベート/ローカルのみ)。外部に公開する場合は、--hostを明示的に設定し、TLS/認証にはリバースプロキシを使用してください。
Claude Desktop の設定
Claude Desktop の MCP 設定(claude_desktop_config.json)に追加します:
{
"mcpServers": {
"crawl4ai": {
"command": "mcp-crawl4ai",
"args": ["--transport", "stdio"]
}
}
}
Claude Code の設定
claude mcp add crawl4ai -- mcp-crawl4ai --transport stdio
MCP Inspector
npx @modelcontextprotocol/inspector uv --directory . run mcp-crawl4ai
ツール
標準のインターフェースで公開されるツールは4 つです:
scrape
1 つの URL、または上限付きの URL リスト(最大 20 件)をスクレイピングし、標準形式の単一エンベロープレスポンスを返します。
- 入力:
targets(str | list[str])と、任意のグループ化されたoptions - 抽出(
schema、extraction_mode)、ランタイム制御、診断、セッション設定、レンダリング設定、成果物の取得に対応 schema_version、tool、ok、data/items、meta、warnings、errorを含む標準 JSON エンベロープを返します
crawl
標準の巡回制御でクロールします。
options.traversal.mode="list"は、上限付きのリスト巡回に使用しますoptions.traversal.mode="deep"は、単一の起点から再帰的な BFS/DFS 巡回を行いますscrapeと同じエンベロープ形式を使用し、オプショングループと巡回オプションを共有します
close_session
options.session.session_id で作成したステートフルセッションを終了します。
get_artifact
options.conversion.capture_artifacts が有効な場合に、scrape または crawl 中に取得した成果物のメタデータ/内容を取得します。
コア機能と高度な使い方の選択
- コアの使い方(推奨): 最小限のオプション(
runtime、conversion.output_format、traversal.mode="list")でscrape/crawlを使用します。ほとんどのエージェントワークフローで、動作の予測可能性を保ち、リスクを低減できます。 - 高度な使い方(明示的なオプトイン): タスクの結果に必要な場合に限り、詳細巡回、カスタムディスパッチャー制御、JS トランスフォーム、抽出スキーマ、成果物の取得を使用します。
- 安全性の予算とゲート: 高度なオプションを有効にする前に、
config://serverのsettings.defaults、settings.limits、settings.policies、settings.capabilitiesを確認し、有効な制約と機能ゲートを把握してください。
リソース
| URI | MIME Type | 説明 |
|---|---|---|
config://server | application/json | 現在のサーバー設定:名前、バージョン、ツール一覧、ブラウザー設定 |
crawl4ai://version | application/json | サーバーと依存関係のバージョン情報(server、crawl4ai、fastmcp) |
プロンプト
| プロンプト | パラメーター | 説明 |
|---|---|---|
summarize_page | url、focus(デフォルト:"key points") | ページをクロールし、指定した観点で内容を要約します |
build_extraction_schema | url、data_type | ページを確認し、scrape 用の CSS 抽出スキーマを作成します |
compare_pages | url1、url2 | 2 つのページをクロールし、構造化された比較結果を作成します |
アーキテクチャ
graph TD
A[MCP Client] -->|stdio / HTTP| B[FastMCP v3]
B --> C[Tool Router]
C --> D[scrape]
C --> E[crawl]
C --> F[close_session]
C --> G[get_artifact]
D & E & F & G --> N[AsyncWebCrawler Singleton]
N --> O[Headless Chromium]
B --> P[Resources]
B --> Q[Prompts]
style B fill:#4B8BBE,color:#fff
style N fill:#FF6B35,color:#fff
style O fill:#2496ED,color:#fff
このサーバーは単一モジュールのアーキテクチャを採用しています。
- FastMCP v3 が、MCP プロトコルのネゴシエーション、トランスポート、ツール/リソース/プロンプトの登録、メッセージのルーティングを処理します
- ライフスパン管理の
AsyncWebCrawlerが、サーバー起動時にヘッドレス Chromium ブラウザーを一度だけ起動してすべてのツール呼び出しで共有し、終了時に適切にシャットダウンします - 4 つのツール関数を
@mcp.tool()でデコレートし、正式なインターフェースを定義します - 2 つのリソース関数を
@mcp.resource()でデコレートし、JSON を返します - 3 つのプロンプト関数を
@mcp.promptでデコレートし、構造化されたMessageリストを返します
重要
中間マネージャークラスやカスタム HTTP クライアントはありません。サーバーはすべてのクロールを crawl4ai の
AsyncWebCrawlerに、すべてのプロトコル処理を FastMCP に委任します。実行時の依存関係は 2 つだけです。
設定
CLI フラグ
| フラグ | デフォルト | 説明 |
|---|---|---|
--transport | stdio | トランスポートプロトコル:stdio または http |
--host | 127.0.0.1 | バインドするホスト(HTTP トランスポートのみ) |
--port | 8000 | バインドするポート(HTTP トランスポートのみ) |
--setup | — | Playwright ブラウザーをインストールして終了します |
環境変数
環境変数は必要ありません。サーバーはすべての設定に適切なデフォルト値を使用します。設定されている場合は、Crawl4AI 独自の環境変数(例:CRAWL4AI_VERBOSE)も尊重されます。
テスト
# Run all tests
uv run pytest
# Coverage gate (>=90%)
uv run pytest --cov=mcp_crawl4ai --cov-report=term-missing
# Smoke tests only
uv run pytest -m smoke
# Unit tests only
uv run pytest -m unit
# Integration workflow tests
uv run pytest -m integration
# End-to-end workflow tests
uv run pytest -m e2e
# Manual live test (requires browser)
uv run python tests/manual/test_live.py
メモ
自動テストはすべて
fastmcp.Client(mcp)を使用してメモリー内で実行されるため、ブラウザーやネットワークは必要ありません。テストスイートではAsyncWebCrawlerをモックし、高速で決定論的な実行を実現します。
コントリビューション
開発環境のセットアップ、コーディング規約、プルリクエストの手順については、コントリビューションガイドを参照してください。
ライセンス
このプロジェクトは MIT ライセンスのもとで公開されています。詳しくは LICENSE ファイルを参照してください。
MCP-Crawl4AI — AI とライブ Web をつなぐ
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。