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

キー不要の無料枠では、scrapesearchinteract は API キーなしで動作します(レート制限あり)。crawlmapagentextract などの他のツールは、引き続きキーが必要です。

ユーザーがサインアップできる場合は、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 を設定するには

  1. Cursor 設定を開く
  2. Features > MCP Servers に移動
  3. "+ Add new global MCP server" をクリック
  4. 次のコードを入力:
    {
      "mcpServers": {
        "firecrawl-mcp": {
          "command": "npx",
          "args": ["-y", "firecrawl-mcp"],
          "env": {
            "FIRECRAWL_API_KEY": "YOUR-API-KEY"
          }
        }
      }
    }
    

Cursor v0.45.6 で Firecrawl MCP を設定するには

  1. Cursor 設定を開く
  2. Features > MCP Servers に移動
  3. "+ Add New MCP Server" をクリック
  4. 以下を入力:
    • 名前: "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 での実行

ワンクリックインストールするには、以下のインストールボタンをクリックしてください...

Install with NPX in VS Code Install with NPX in VS Code Insiders

手動インストールするには、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=trueHTTP_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
interactURL またはスクレイピング済みページとの対話実行結果 + URL モードの scrapeId
mapサイト上の URL の検出URL[]
crawl複数ページの抽出 (制限付き)内部ポーリング後の最終クロールステータス/データ
parseファイルとホストされたアップロード参照markdown、JSON、またはドキュメント出力
extractURL からの構造化抽出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 フィールド。結果を使用した後、その idfirecrawl_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 クレジット)。 チームの creditsRefundedTodaydailyRefundCap に達すると、それ以降の送信ではフィードバックが記録されますが、クレジットは返金されません。レスポンスには 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 エンドポイントジョブの構造化フィードバックを送信します。 scrapeparsemap、または 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
  }
}

戻り値:

  • 内部ポーリング後の最終的なクロールステータスとデータ(idstatuscompletedtotalcreditsUsedexpiresAtnextdata を含む)。後でジョブを再確認する必要がある場合は、返された idfirecrawl_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_parsefilePath で呼び出して、有効期限の短いアップロードコマンドと 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 をポーリングします。

非同期ワークフロー:

  1. プロンプト/スキーマを指定して firecrawl_agent を呼び出す → ジョブ ID を返す
  2. エージェントが調査している間(複雑なクエリでは数分かかる場合があります)、他の作業を行う
  3. ジョブ ID で firecrawl_agent_status をポーリングして進行状況を確認する
  4. ステータスが「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 または pagesgoal を使用します。MCP サーバーは 30 分間隔のスケジュールでモニターリクエストを構築し、API は意味のある変更の判断を自動的に有効にします。

goal が設定されている場合、意味のある変更の判断が自動的に実行されます。ページ Webhook は、monitor.page イベントで isMeaningfuljudgment を公開します。

目標は、簡潔な 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: goaljudgeEnabledwebhooknotification などのフィールドを更新します。
  • firecrawl_monitor_run: 今すぐチェックをトリガーします。
  • firecrawl_monitor_delete: モニターを削除します(破壊的。ユーザーが削除を意図している場合にのみ呼び出します)。
  • firecrawl_monitor_checks: チェックを一覧表示します(オプションでステータスでフィルタリング)。
  • firecrawl_monitor_check: diffsnapshotjudgment.meaningfuljudgment.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

貢献

  1. リポジトリをフォークする
  2. フィーチャーブランチを作成する
  3. テストを実行する: npm test
  4. プルリクエストを送信する

貢献者への感謝

初期実装をしてくれた @vrknetha@cawstudios に感謝します!

ホスティングとサーバー統合をしてくれた MCP.so と Klavis AI、そして @gstarwd@xiangkaiz@zihaolin96 に感謝します。

ライセンス

MIT ライセンス - 詳細は LICENSE ファイルを参照してください