Firecrawl
公式Firecrawlを使用してウェブデータを抽出する
Firecrawl MCPで何ができますか?
- 単一のURLをスクレイピングしてクリーンなコンテンツを取得 — ページを構造化JSONまたはマークダウンとして抽出(
firecrawl_scrape使用)、オプションでPIIを編集可能。 - ウェブを検索して最新情報を取得 —
firecrawl_searchを使用してウェブ全体から関連ページを検索、結果からオプションでコンテンツを抽出。 - サイトをマッピングしてURLを発見 — スクレイピングするページを決定する前に、
firecrawl_mapを使用してドメイン上のインデックスされたすべてのURLを一覧表示。 - 自律的なマルチソース調査を実行 — 非同期の
firecrawl_agentジョブを開始してウェブ全体から情報を収集・構造化し、その後firecrawl_agent_statusをポーリングして結果を取得。 - 動的ページと対話 —
firecrawl_interactを使用してページ上でクリック、入力、ナビゲーションを行い、結果の状態を抽出。 - ページの経時変化を監視 —
firecrawl_monitor_*ツールを使用して定期的なチェックを設定し、コンテンツが有意に変更されたときに差分を取得。
ドキュメント
Firecrawl MCP Server
Firecrawl を MCP 互換の AI エージェントに提供する Model Context Protocol (MCP) サーバーです。クリーンでエージェントがすぐに利用できるコンテキストを得るために、ライブ Web の検索、スクレイピング、操作を行います。
初期実装を提供してくれた @vrknetha、@knacklabs に感謝します!
機能
- Web を検索し、ページ全体のコンテンツを取得
- 任意の URL をスクレイピングし、クリーンで構造化されたデータに変換
- ページとの対話 — クリック、ナビゲーション、操作
- 自律エージェントによる詳細なリサーチ
- 自動リトライとレート制限
- クラウドおよびセルフホストのサポート
- SSE サポート
MCP.so のプレイグラウンド または Klavis AI で当社の MCP サーバーをお試しください。
インストール
ホスト型 MCP (キー不要の無料枠)
セットアップ不要でリモートのホスト型サーバーに接続します:
https://mcp.firecrawl.dev/v2/mcp
キー不要の無料枠では、scrape、search、interact は API キーなしで動作します(レート制限あり)。crawl、map、agent、extract などの他のツールは、引き続きキーが必要です。
ユーザーがサインアップできる場合は、API キーまたは OAuth を推奨します。これにより、すべてのツールセットとより高い制限が利用可能になります。キーを使用する場合は、以下を使用します:
https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp
セットアップの詳細については、MCP サーバードキュメント および エージェントオンボーディングガイド を参照してください。
npx での実行
env FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp
手動インストール
npm install -g firecrawl-mcp
Cursor での実行
Cursor の設定 🖥️ 注意: Cursor バージョン 0.45.6 以降が必要です。 最新の設定手順については、MCP サーバーの設定に関する公式 Cursor ドキュメントを参照してください: Cursor MCP サーバー設定ガイド
Cursor v0.48.6 で Firecrawl MCP を設定するには
- Cursor 設定を開く
- Features > MCP Servers に移動
- "+ Add new global MCP server" をクリック
- 次のコードを入力:
{ "mcpServers": { "firecrawl-mcp": { "command": "npx", "args": ["-y", "firecrawl-mcp"], "env": { "FIRECRAWL_API_KEY": "YOUR-API-KEY" } } } }
Cursor v0.45.6 で Firecrawl MCP を設定するには
- Cursor 設定を開く
- Features > MCP Servers に移動
- "+ Add New MCP Server" をクリック
- 以下を入力:
- 名前: "firecrawl-mcp" (または任意の名前)
- タイプ: "command"
- コマンド:
env FIRECRAWL_API_KEY=your-api-key npx -y firecrawl-mcp
Windows を使用していて問題が発生した場合は、
cmd /c "set FIRECRAWL_API_KEY=your-api-key && npx -y firecrawl-mcp"を試してください。
your-api-key を Firecrawl API キーに置き換えてください。まだお持ちでない場合は、https://www.firecrawl.dev/app/api-keys からアカウントを作成して取得できます。
追加後、MCP サーバーリストを更新して新しいツールを表示します。Composer Agent は適切な場合に自動的に Firecrawl MCP を使用しますが、Web スクレイピングのニーズを説明することで明示的に要求することもできます。Command+L (Mac) で Composer にアクセスし、送信ボタンの横にある "Agent" を選択して、クエリを入力します。
Windsurf での実行
これを ./codeium/windsurf/model_config.json に追加します:
{
"mcpServers": {
"mcp-server-firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "YOUR_API_KEY"
}
}
}
}
Streamable HTTP ローカルモードでの実行
デフォルトの stdio トランスポートの代わりに、Streamable HTTP を使用してローカルでサーバーを実行するには:
env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp
URL を使用: http://localhost:3000/mcp
Smithery 経由でのインストール (レガシー)
Smithery 経由で Claude Desktop 用に Firecrawl を自動インストールするには:
npx -y @smithery/cli install @mendableai/mcp-server-firecrawl --client claude
VS Code での実行
ワンクリックインストールするには、以下のインストールボタンをクリックしてください...
手動インストールするには、VS Code のユーザー設定 (JSON) ファイルに次の JSON ブロックを追加します。これを行うには、Ctrl + Shift + P を押して Preferences: Open User Settings (JSON) と入力します。
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "apiKey",
"description": "Firecrawl API Key",
"password": true
}
],
"servers": {
"firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "${input:apiKey}"
}
}
}
}
}
必要に応じて、ワークスペース内の .vscode/mcp.json というファイルに追加することもできます。これにより、設定を他のユーザーと共有できます:
{
"inputs": [
{
"type": "promptString",
"id": "apiKey",
"description": "Firecrawl API Key",
"password": true
}
],
"servers": {
"firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "${input:apiKey}"
}
}
}
}
設定
環境変数
クラウド API に必須
FIRECRAWL_API_KEY: Firecrawl API キー- クラウド API 使用時に必須 (デフォルト)
FIRECRAWL_API_URLを使用したセルフホストインスタンス使用時はオプション
FIRECRAWL_API_URL(オプション): セルフホストインスタンス用のカスタム API エンドポイント- 例:
https://firecrawl.your-domain.com - 指定しない場合、クラウド API が使用されます (API キーが必要)
- 例:
MCP OAuth (ベアラーアクセストークン)
ホスト型 Firecrawl は、firecrawl.dev の認可サーバーを介して OAuth アクセストークン (fco_…) を発行できます。この MCP サーバーは、解決された資格情報を Authorization: Bearer … として Firecrawl API に転送します。
- HTTP ストリームトランスポート (
CLOUD_SERVICE=true、HTTP_STREAMABLE_SERVER=true、またはSSE_LOCAL=true): クライアントは MCP リクエストでAuthorization: Bearer <fco_access_token>を送信する必要があります。OAuth ベアラートークンは、両方が存在する場合、x-firecrawl-api-key/x-api-keyよりも優先されます。 - stdio: 静的アクセストークンには
FIRECRAWL_OAUTH_TOKENを使用するか、API キーにはFIRECRAWL_API_KEYを引き続き使用します。
アクセストークン (fco_…) のみを使用してください。リフレッシュトークン (fcr_…) はトークンエンドポイントで交換する必要があり、スクレイピング/検索 API に渡さないでください。
設定例
クラウド API 使用時:
export FIRECRAWL_API_KEY=your-api-key
セルフホストインスタンスの場合:
# Required for self-hosted
export FIRECRAWL_API_URL=https://firecrawl.your-domain.com
# Optional authentication for self-hosted
export FIRECRAWL_API_KEY=your-api-key # If your instance requires auth
Claude Desktop での使用
これを claude_desktop_config.json に追加します:
{
"mcpServers": {
"mcp-server-firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}
ツールの選択方法
このガイドを使用して、タスクに適したツールを選択してください:
- 正確な URL がわかっている場合: scrape を使用します (構造化データには JSON 形式を使用)
- 複数の既知の URL がある場合: 各 URL に対して scrape を呼び出します。特に 1 つのバルク API 操作が必要な場合は、MCP 外で Firecrawl API バッチエンドポイントを使用してください。
- サイト上の URL を検出する必要がある場合: map を使用します
- Web で情報を検索したい場合: search を使用します
- 複数の未知のソースにわたる複雑なリサーチが必要な場合: agent を使用します
- サイト全体またはセクションを分析したい場合: crawl を使用します (制限付きで!)
- インタラクティブなブラウザ自動化が必要な場合 (クリック、入力、ナビゲーション): 新しいページには URL を指定して interact を使用するか、既にページをスクレイピングした場合やより厳密なスクレイピング制御が必要な場合は scrape + interact を使用します
クイックリファレンス表
| ツール | 最適な用途 | 戻り値 |
|---|---|---|
| scrape | 単一ページのコンテンツ | JSON (推奨) または markdown |
| interact | URL またはスクレイピング済みページとの対話 | 実行結果 + URL モードの scrapeId |
| map | サイト上の URL の検出 | URL[] |
| crawl | 複数ページの抽出 (制限付き) | 内部ポーリング後の最終クロールステータス/データ |
| parse | ファイルとホストされたアップロード参照 | markdown、JSON、またはドキュメント出力 |
| extract | URL からの構造化抽出 | JSON 構造化データ |
| search | 情報の Web 検索 | results[] |
| agent | 複雑なマルチソースリサーチ | JSON (構造化データ) |
| monitor | 定期的なページチェック | モニター/チェックのメタデータと差分 |
| research | 論文および GitHub リポジトリのリサーチ | リサーチ結果とリポジトリの一致 |
フォーマット選択ガイド
scrape を使用する場合は、適切なフォーマットを選択してください:
- JSON 形式 (ほとんどの場合に推奨): ページから特定のデータが必要な場合に使用します。抽出する必要があるものに基づいてスキーマを定義します。これにより、応答が小さく保たれ、コンテキストウィンドウのオーバーフローを防ぎます。
- Markdown 形式 (控えめに使用): 記事全体を要約するために読む、ページ構造を分析するなど、ページ全体のコンテンツが本当に必要な場合にのみ使用します。
利用可能なツール
1. スクレイプツール (firecrawl_scrape)
高度なオプションを使用して、単一の URL からコンテンツをスクレイピングします。
最適な用途:
- どのページに情報が含まれているか正確にわかっている場合の、単一ページのコンテンツ抽出。
推奨されない用途:
- 複数ページからのコンテンツ抽出 (既知の URL には繰り返しスクレイプ呼び出しを使用するか、URL を最初に検出するために map + scrape を使用するか、ページ全体のコンテンツには crawl を使用します)
- どのページに情報が含まれているか不明な場合 (search を使用します)
よくある間違い:
- 1 回のスクレイプ呼び出しに URL のリストを渡す。MCP では URL ごとに 1 回スクレイプを呼び出します。特に 1 つのバルク API 操作が必要な場合は、MCP 外で Firecrawl API バッチエンドポイントを使用してください。
- デフォルトで markdown 形式を使用する (必要なものだけを抽出するには JSON 形式を使用します)。
適切なフォーマットの選択:
- JSON 形式 (推奨): ほとんどのユースケースでは、JSON 形式とスキーマを使用して、必要な特定のデータのみを抽出します。これにより、応答が集中し、コンテキストウィンドウのオーバーフローを防ぎます。
- Markdown 形式: タスクがページ全体のコンテンツを本当に必要とする場合のみ (例: 記事全体の要約、ページ構造の分析)。
プロンプト例:
"https://example.com/product. から製品詳細を取得して"
使用例 (JSON 形式 - 推奨):
{
"name": "firecrawl_scrape",
"arguments": {
"url": "https://example.com/product",
"formats": [
{
"type": "json",
"prompt": "Extract the product information",
"schema": {
"type": "object",
"properties": {
"name": { "type": "string" },
"price": { "type": "number" },
"description": { "type": "string" }
},
"required": ["name", "price"]
}
}
]
}
}
使用例 (markdown 形式 - フルコンテンツが必要な場合):
{
"name": "firecrawl_scrape",
"arguments": {
"url": "https://example.com/article",
"formats": ["markdown"],
"onlyMainContent": true
}
}
使用例 (ブランディング形式 - ブランドアイデンティティの抽出):
{
"name": "firecrawl_scrape",
"arguments": {
"url": "https://example.com",
"formats": ["branding"]
}
}
ブランディング形式: デザイン分析やスタイルの複製のために、包括的なブランドアイデンティティ (色、フォント、タイポグラフィ、スペーシング、ロゴ、UI コンポーネント) を抽出します。
プライバシー: redactPII: true を設定すると、個人を特定できる情報が編集されたコンテンツが返されます。
戻り値:
- JSON 構造化データ、markdown、ブランディングプロファイル、または指定されたその他の形式。
2. マップツール (firecrawl_map)
Web サイトをマッピングして、サイト上のインデックスされたすべての URL を検出します。
最適な用途:
- スクレイピングする前に Web サイト上の URL を検出する
- Web サイトの特定のセクションを見つける
推奨されない用途:
- 必要な特定の URL が既にわかっている場合 (scrape を使用)
- ページのコンテンツが必要な場合 (マッピング後に scrape を使用)
よくある間違い:
- URL を検出するために map の代わりに crawl を使用する
プロンプト例:
"example.com 上のすべての URL をリストアップして。"
使用例:
{
"name": "firecrawl_map",
"arguments": {
"url": "https://example.com"
}
}
戻り値:
- サイトで見つかった URL の配列
3. 検索ツール (firecrawl_search)
Web を検索し、オプションで検索結果からコンテンツを抽出します。
最適な用途:
- どの Web サイトに情報があるかわからない場合に、複数の Web サイトにわたる特定の情報を見つける。
- クエリに最も関連性の高いコンテンツが必要な場合
推奨されない用途:
- スクレイピングする Web サイトが既にわかっている場合 (scrape を使用)
- 単一の Web サイトを包括的にカバーする必要がある場合 (map または crawl を使用)
よくある間違い:
- 自由形式の質問に crawl や map を使用する (代わりに search を使用します)
使用例:
{
"name": "firecrawl_search",
"arguments": {
"query": "latest AI research papers 2023",
"limit": 5,
"lang": "en",
"country": "us",
"scrapeOptions": {
"formats": ["markdown"],
"onlyMainContent": true,
"redactPII": true
}
}
}
戻り値:
- 検索結果の配列 (オプションのスクレイピングされたコンテンツ付き)、および
idフィールド。結果を使用した後、そのidをfirecrawl_search_feedbackに渡して 1 クレジットを返金し (検索には 2 かかります)、検索品質を向上させます。
プロンプト例:
"2023 年に公開された AI に関する最新の研究論文を見つけて。"
3b. 検索フィードバックツール (firecrawl_search_feedback)
以前の firecrawl_search 結果に関する構造化されたフィードバックを送信します。検索 ID ごとの最初のフィードバックは 1 クレジットを返金し、Firecrawl の検索品質を向上させます。検索 ID ごとに冪等です。
実際に使用したすべての検索の後 (または役に立たなかった場合) にこれを呼び出します。missingContent による悪い/部分的なフィードバックは、良いフィードバックと同じくらい価値があります。
オプトアウト: MCP サーバー起動時に環境で FIRECRAWL_NO_SEARCH_FEEDBACK=1 (または FIRECRAWL_DISABLE_SEARCH_FEEDBACK=1) を設定します。firecrawl_search_feedback ツールは登録されないため、エージェントは呼び出せません。チーム管理者はサーバー側でフィードバックを無効にすることもできます。その場合、ツールは登録されますが、常に feedbackErrorCode: "TEAM_OPTED_OUT" を返します。
最も重要なフィールド: missingContent。これは、エージェントが見つけることを期待したが見つからなかった特定のコンテンツの配列です。欠落しているトピックごとに 1 つのエントリ — これらはチーム全体で集計され、次に何をインデックスするかを示します。
1 日あたりの返金上限(チームごと、UTC 日ごと、デフォルト 100 クレジット)。 チームの creditsRefundedToday が dailyRefundCap に達すると、それ以降の送信ではフィードバックが記録されますが、クレジットは返金されません。レスポンスには dailyCapReached: true が設定されます。エージェントは、このフラグを確認したら、その UTC 日の残りの時間はこのツールの呼び出しを停止する必要があります。
使用例:
{
"name": "firecrawl_search_feedback",
"arguments": {
"searchId": "0193f6c5-1234-7890-abcd-1234567890ab",
"rating": "good",
"valuableSources": [
{
"url": "https://docs.firecrawl.dev/features/search",
"reason": "Most up-to-date description of /search."
}
],
"missingContent": [
{
"topic": "Pricing for the search endpoint",
"description": "No pricing tier table for /search specifically."
},
{ "topic": "Per-team rate limits" }
],
"querySuggestions": "Boost docs.firecrawl.dev for queries that mention 'firecrawl'"
}
}
戻り値:
{ success, feedbackId, creditsRefunded, alreadySubmitted? }JSON。
3c. 汎用フィードバックツール (firecrawl_feedback)
/v2/feedback を通じて、完了した v2 エンドポイントジョブの構造化フィードバックを送信します。
scrape、parse、map、または search
ジョブのエンドポイントレベルのフィードバックに使用します。検索結果の品質については、特に
firecrawl_search_feedback を推奨します(検索固有のガイダンスが含まれているため)。
フィードバックは簡潔に保ちます。問題コード、タグ、短いメモ、URL、ページ番号、 小さなメタデータオブジェクトを使用してください。生のスクレイプ/解析出力を含めないでください。
オプトアウト: MCP サーバー起動時に環境で FIRECRAWL_NO_ENDPOINT_FEEDBACK=1(または FIRECRAWL_DISABLE_ENDPOINT_FEEDBACK=1)を設定します。firecrawl_feedback ツールは登録されないため、エージェントは呼び出せません。
使用例:
{
"name": "firecrawl_feedback",
"arguments": {
"endpoint": "scrape",
"jobId": "0193f6c5-1234-7890-abcd-1234567890ab",
"rating": "partial",
"issues": ["missing_markdown"],
"tags": ["docs"],
"note": "The pricing table was missing from the markdown output.",
"url": "https://example.com/pricing",
"pageNumbers": [1],
"metadata": {
"format": "markdown"
}
}
}
戻り値:
{ success, feedbackId, creditsRefunded, creditsRefundedToday?, dailyRefundCap?, dailyCapReached?, alreadySubmitted?, warning? }JSON。
4. クロールツール (firecrawl_crawl)
クロールジョブを開始し、終了状態になるまでポーリングし、最終的なクロールステータス/データを返します。
最適な用途:
- 包括的なカバレッジが必要な場合に、関連する複数のページからコンテンツを抽出する。
推奨しない用途:
- 単一ページからのコンテンツ抽出(スクレイプを使用)
- トークン制限が懸念される場合(より厳密な制御のために map + scrape を使用)
- 高速な結果が必要な場合(クロールは遅くなる可能性があります)
警告: クロールのレスポンスは非常に大きくなる可能性があり、トークン制限を超える場合があります。クロールの深さとページ数を制限するか、より厳密な制御のために map + scrape を使用してください。
よくある間違い:
- limit または maxDiscoveryDepth を高く設定しすぎる(トークンオーバーフローを引き起こす)
- 単一ページにクロールを使用する(代わりにスクレイプを使用)
プロンプト例:
"example.com/blog の最初の 2 階層からすべてのブログ投稿を取得します。"
使用例:
{
"name": "firecrawl_crawl",
"arguments": {
"url": "https://example.com/blog/*",
"maxDiscoveryDepth": 2,
"limit": 100,
"allowExternalLinks": false,
"deduplicateSimilarURLs": true
}
}
戻り値:
- 内部ポーリング後の最終的なクロールステータスとデータ(
id、status、completed、total、creditsUsed、expiresAt、next、dataを含む)。後でジョブを再確認する必要がある場合は、返されたidをfirecrawl_check_crawl_statusで使用します。
5. クロールステータス確認 (firecrawl_check_crawl_status)
ID で既存のクロールジョブのステータスと結果を確認します。
{
"name": "firecrawl_check_crawl_status",
"arguments": {
"id": "550e8400-e29b-41d4-a716-446655440000"
}
}
戻り値:
- レスポンスにはクロールジョブのステータスが含まれます。
6. 解析ツール (firecrawl_parse)
Firecrawl の /v2/parse エンドポイントを使用して、ローカルファイルまたはホストされたアップロード参照を解析します。
最適な用途: マークダウンまたは構造化 JSON 出力が必要な PDF、Word 文書、スプレッドシート、HTML ファイル、その他のドキュメント。ホスト型 MCP は 2 ステップのアップロード参照フローをサポートします。ローカル直接ファイル読み取りには、セルフホスト型 FIRECRAWL_API_URL が必要です。
推奨しない用途: リモート URL(スクレイプを使用)、1 回の呼び出しでの複数ファイル(ファイルごとに 1 回解析を呼び出す)、スクリーンショットやクリックなどのブラウザのみのアクション。
ホスト型 MCP フロー: ホスト型 MCP は呼び出し元のファイルシステムを直接読み取れません。firecrawl_parse を filePath で呼び出して、有効期限の短いアップロードコマンドと nextToolCall を受け取り、ファイルをローカルでアップロードしてから、返された uploadRef を使用して firecrawl_parse を再度呼び出します。ホストされたアップロード URL の発行には、Firecrawl 認証またはキーレス資格が必要です。ローカル npx firecrawl-mcp モードでは、直接ファイル解析には現在、セルフホスト型 Firecrawl API を指す FIRECRAWL_API_URL が必要です。プレーンなクラウド API キーのみのローカルサーバーは、このツールを介してファイルを読み取ってアップロードすることはできません。
使用例:
{
"name": "firecrawl_parse",
"arguments": {
"filePath": "/absolute/path/to/document.pdf",
"formats": ["markdown"],
"parsers": ["pdf"],
"zeroDataRetention": true
}
}
戻り値: 解析されたドキュメントコンテンツ、または nextToolCall を含むホストされたアップロード手順。
7. 抽出ツール (firecrawl_extract)
LLM 機能を使用して Web ページから構造化情報を抽出します。クラウド AI とセルフホスト LLM 抽出の両方をサポートします。
最適な用途:
- 価格、名前、詳細などの特定の構造化データを抽出する。
推奨しない用途:
- ページの完全なコンテンツが必要な場合(スクレイプを使用)
- 特定の構造化データを探していない場合
引数:
urls: 情報を抽出する URL の配列prompt: LLM 抽出のカスタムプロンプトsystemPrompt: LLM をガイドするシステムプロンプトschema: 構造化データ抽出の JSON スキーマallowExternalLinks: 外部リンクからの抽出を許可enableWebSearch: 追加コンテキストの Web 検索を有効化includeSubdomains: 抽出にサブドメインを含める
セルフホストインスタンスを使用する場合、抽出には設定された LLM が使用されます。クラウド API の場合、Firecrawl のマネージド LLM サービスが使用されます。 プロンプト例:
"これらの製品ページから製品名、価格、説明を抽出します。"
使用例:
{
"name": "firecrawl_extract",
"arguments": {
"urls": ["https://example.com/page1", "https://example.com/page2"],
"prompt": "Extract product information including name, price, and description",
"systemPrompt": "You are a helpful assistant that extracts product information",
"schema": {
"type": "object",
"properties": {
"name": { "type": "string" },
"price": { "type": "number" },
"description": { "type": "string" }
},
"required": ["name", "price"]
},
"allowExternalLinks": false,
"enableWebSearch": false,
"includeSubdomains": false
}
}
戻り値:
- スキーマで定義された抽出された構造化データ
{
"content": [
{
"type": "text",
"text": {
"name": "Example Product",
"price": 99.99,
"description": "This is an example product description"
}
}
],
"isError": false
}
8. エージェントツール (firecrawl_agent)
自律型 Web リサーチエージェント。これは、クエリに基づいてインターネットを自律的にブラウズし、情報を検索し、ページをナビゲートし、構造化データを抽出する別個の AI エージェントレイヤーです。
仕組み:
エージェントは Web 検索を実行し、リンクをたどり、ページを読み取り、データを自律的に収集します。これは非同期で実行され、ジョブ ID をすぐに返します。完了を確認して結果を取得するには、firecrawl_agent_status をポーリングします。
非同期ワークフロー:
- プロンプト/スキーマを指定して
firecrawl_agentを呼び出す → ジョブ ID を返す - エージェントが調査している間(複雑なクエリでは数分かかる場合があります)、他の作業を行う
- ジョブ ID で
firecrawl_agent_statusをポーリングして進行状況を確認する - ステータスが「completed」になると、レスポンスに抽出されたデータが含まれる
最適な用途:
- 正確な URL がわからない複雑な調査タスク
- 複数ソースからのデータ収集
- Web 上に散在する情報の検索
- 結果を待つ間に他の作業ができるタスク
推奨しない用途:
- URL がわかっている単純な単一ページスクレイピング(JSON 形式のスクレイプを使用 - より高速で安価)
引数:
prompt: 必要なデータの自然言語による説明(必須、最大 10,000 文字)urls: エージェントを特定のページに集中させるためのオプションの URL 配列schema: 構造化出力のためのオプションの JSON スキーマ
プロンプト例:
"Firecrawl の創設者とその経歴を調べてください"
使用例(エージェントを開始し、結果をポーリング):
{
"name": "firecrawl_agent",
"arguments": {
"prompt": "Find the top 5 AI startups founded in 2024 and their funding amounts",
"schema": {
"type": "object",
"properties": {
"startups": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"funding": { "type": "string" },
"founded": { "type": "string" }
}
}
}
}
}
}
}
次に、返されたジョブ ID を使用して firecrawl_agent_status でポーリングします。
使用例(URL を使用 - エージェントが特定のページに集中):
{
"name": "firecrawl_agent",
"arguments": {
"urls": ["https://docs.firecrawl.dev", "https://firecrawl.dev/pricing"],
"prompt": "Compare the features and pricing information from these pages"
}
}
戻り値:
- ステータス確認用のジョブ ID。結果をポーリングするには
firecrawl_agent_statusを使用します。
9. エージェントステータス確認 (firecrawl_agent_status)
エージェントジョブのステータスを確認し、完了時に結果を取得します。エージェントの開始後に結果をポーリングするために使用します。
ポーリングパターン: エージェントの調査は、複雑なクエリでは数分かかる場合があります。ステータスが「completed」または「failed」になるまで、定期的に(例:10〜30 秒ごとに)このエンドポイントをポーリングします。
{
"name": "firecrawl_agent_status",
"arguments": {
"id": "550e8400-e29b-41d4-a716-446655440000"
}
}
可能なステータス:
processing: エージェントはまだ調査中です - 後で再度確認してくださいcompleted: 調査が完了しました - レスポンスに抽出されたデータが含まれますfailed: エラーが発生しました
10. インタラクトツール (firecrawl_interact)
新しい URL、または firecrawl_scrape によって既に開かれたページを操作します。
最適な用途: 非推奨のブラウザツールを復元せずに、動的ページからのクリック、入力、ナビゲーション、状態の抽出。
使用オプション:
urlを渡して、1 回の MCP 呼び出しでページをスクレイプして開き、操作します。scrapeIdを渡して、既存のスクレイプされたページの操作を続行します。urlまたはscrapeIdのいずれか 1 つと、promptまたはcodeのいずれかを渡します。
使用例:
{
"name": "firecrawl_interact",
"arguments": {
"url": "https://example.com",
"prompt": "Click the pricing link and summarize the visible plans"
}
}
戻り値: 操作結果、および URL モードの場合は、フォローアップまたはクリーンアップ用の派生 scrapeId。
11. インタラクト停止ツール (firecrawl_interact_stop)
操作が完了したら、スクレイプされたページのインタラクトセッションを停止します。
{
"name": "firecrawl_interact_stop",
"arguments": {
"scrapeId": "scrape-id-here"
}
}
12. リサーチツール (firecrawl_research_*)
リサーチ MCP ツールを通じて、論文や GitHub リポジトリを検索および検査します。
利用可能なリサーチツール:
firecrawl_research_search_papers: 研究論文を検索します。firecrawl_research_inspect_paper: 1 つの論文を検査します。firecrawl_research_related_papers: 関連論文を検索します。firecrawl_research_read_paper: 論文の内容を読み取ります。firecrawl_research_search_github: GitHub リポジトリを検索します。
最適な用途: エージェントが一般的な Web スクレイピングではなく、焦点を絞ったリサーチサーフェスを必要とする文献レビュー、論文検索、リポジトリ発見ワークフロー。
13. モニターツール (firecrawl_monitor_*)
定期的なページモニターを作成および管理します。モニターはスケジュールされたスクレイプまたはクロールを実行し、各結果を最後に保持されたスナップショットと比較し、Webhook またはメールで通知できます。
最適な用途:
- 1 つまたは少数のページを長期にわたって監視する
- 平易な英語の目標を使用して意味のある変更をアラートする
- チェック履歴とページレベルの差分を追跡する
推奨される作成パターン:
page または pages と goal を使用します。MCP サーバーは 30 分間隔のスケジュールでモニターリクエストを構築し、API は意味のある変更の判断を自動的に有効にします。
goal が設定されている場合、意味のある変更の判断が自動的に実行されます。ページ Webhook は、monitor.page イベントで isMeaningful と judgment を公開します。
目標は、簡潔な 2〜3 文のモニター指示として記述します。何がアラートをトリガーするかを述べ、ユーザーが指定した範囲を保持し、リクエストから明らかな場合にのみ意図固有の除外を含めます。空白、フォーマットのみの変更、リクエスト ID、トラッキングパラメータ、一般的なメタデータ、無関係なページクロームなどの一般的なノイズは、ジャッジによって既に処理されるため、すべての目標で繰り返さないでください。ユーザーがあいまいな場合は目標を広く保ち、広範な監視や「変更があれば」を求めている場合はそれを保持します。ユーザーが気にしないと言っている場合は、それを明示的に含めます。
{
"name": "firecrawl_monitor_create",
"arguments": {
"page": "https://example.com/pricing",
"goal": "Alert when pricing, packaging, or launch messaging changes."
}
}
Webhook を使用した複数ページ:
{
"name": "firecrawl_monitor_create",
"arguments": {
"pages": ["https://example.com/pricing", "https://example.com/changelog"],
"goal": "Alert when pricing, packaging, or launch messaging changes.",
"webhookUrl": "https://example.com/webhooks/firecrawl"
}
}
高度な作成リクエスト:
クロールターゲット、JSON 変更追跡、カスタム保持、または明示的な judgeEnabled 制御が必要な場合は、body を渡します。
{
"name": "firecrawl_monitor_create",
"arguments": {
"body": {
"name": "Docs monitor",
"schedule": { "text": "hourly", "timezone": "UTC" },
"goal": "Alert when docs pages add, remove, or materially change API behavior.",
"targets": [{ "type": "crawl", "url": "https://example.com/docs" }]
}
}
}
その他のモニターツール:
firecrawl_monitor_list: モニターを一覧表示します。firecrawl_monitor_get: 1 つのモニターを取得します。firecrawl_monitor_update:goal、judgeEnabled、webhook、notificationなどのフィールドを更新します。firecrawl_monitor_run: 今すぐチェックをトリガーします。firecrawl_monitor_delete: モニターを削除します(破壊的。ユーザーが削除を意図している場合にのみ呼び出します)。firecrawl_monitor_checks: チェックを一覧表示します(オプションでステータスでフィルタリング)。firecrawl_monitor_check:diff、snapshot、judgment.meaningful、judgment.meaningfulChangesを含むページレベルの結果を取得します。
ログシステム
サーバーには包括的なログが含まれます。
- 操作のステータスと進行状況
- パフォーマンスメトリクス
- レート制限の追跡
- エラー状態
ログメッセージの例:
[INFO] Firecrawl MCP Server initialized successfully
[INFO] Starting scrape for URL: https://example.com
[ERROR] Rate limit exceeded
エラー処理
サーバーは堅牢なエラー処理を提供します。
- MCP クライアントに表面化される API レート制限エラー
- 詳細なエラーメッセージ
- ネットワークの回復力
エラーレスポンスの例:
{
"content": [
{
"type": "text",
"text": "Error: Rate limit exceeded"
}
],
"isError": true
}
開発
# Install dependencies
npm install
# Build
npm run build
# Run tests
npm test
貢献
- リポジトリをフォークする
- フィーチャーブランチを作成する
- テストを実行する:
npm test - プルリクエストを送信する
貢献者への感謝
初期実装をしてくれた @vrknetha、@cawstudios に感謝します!
ホスティングとサーバー統合をしてくれた MCP.so と Klavis AI、そして @gstarwd、@xiangkaiz、@zihaolin96 に感謝します。
ライセンス
MIT ライセンス - 詳細は LICENSE ファイルを参照してください