Firecrawl MCP Server

公式

強力なウェブスクレイピングと検索機能をCursorやClaudeのようなLLMクライアントに追加します。

ドキュメント

Firecrawl MCP Server

Firecrawl を MCP 対応 AI エージェントに提供する Model Context Protocol (MCP) サーバーです。クリーンでエージェントがすぐに利用できるコンテキストを得るために、ライブ Web の検索、スクレイピング、操作が行えます。

初期実装をしてくださった @vrknetha 氏、@knacklabs 氏に大感謝!

機能

  • Web 検索とページ全体のコンテンツ取得
  • 任意の URL をクリーンで構造化されたデータにスクレイピング
  • ページ操作 — クリック、ナビゲーション、操作
  • 自律エージェントによる深いリサーチ
  • 自動リトライとレート制限
  • クラウドおよびセルフホスト対応
  • SSE サポート

MCP.so のプレイグラウンド または Klavis AI で当社の 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 Server Configuration Guide

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. 以下を入力:
    • Name: "firecrawl-mcp" (または任意の名前)
    • Type: "command"
    • 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 (Bearer アクセストークン)

ホスト型 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 Bearer トークンは、x-firecrawl-api-key / x-api-key の両方が存在する場合に優先されます。
  • stdio: 静的アクセストークンには FIRECRAWL_OAUTH_TOKEN を使用するか、API キーとして FIRECRAWL_API_KEY を引き続き使用します。

アクセストークン (fco_…) のみを使用してください。リフレッシュトークン (fcr_…) はトークンエンドポイントで交換する必要があり、スクレイピング/検索 API に渡さないでください。

オプション設定

リトライ設定
  • FIRECRAWL_RETRY_MAX_ATTEMPTS: 最大リトライ試行回数 (デフォルト: 3)
  • FIRECRAWL_RETRY_INITIAL_DELAY: 最初のリトライ前の初期遅延 (ミリ秒) (デフォルト: 1000)
  • FIRECRAWL_RETRY_MAX_DELAY: リトライ間の最大遅延 (ミリ秒) (デフォルト: 10000)
  • FIRECRAWL_RETRY_BACKOFF_FACTOR: 指数バックオフ乗数 (デフォルト: 2)
クレジット使用量モニタリング
  • FIRECRAWL_CREDIT_WARNING_THRESHOLD: クレジット使用量警告しきい値 (デフォルト: 1000)
  • FIRECRAWL_CREDIT_CRITICAL_THRESHOLD: クレジット使用量クリティカルしきい値 (デフォルト: 100)

設定例

カスタムリトライとクレジットモニタリングを使用したクラウド API 利用の場合:

# Required for cloud API
export FIRECRAWL_API_KEY=your-api-key

# Optional retry configuration
export FIRECRAWL_RETRY_MAX_ATTEMPTS=5        # Increase max retry attempts
export FIRECRAWL_RETRY_INITIAL_DELAY=2000    # Start with 2s delay
export FIRECRAWL_RETRY_MAX_DELAY=30000       # Maximum 30s delay
export FIRECRAWL_RETRY_BACKOFF_FACTOR=3      # More aggressive backoff

# Optional credit monitoring
export FIRECRAWL_CREDIT_WARNING_THRESHOLD=2000    # Warning at 2000 credits
export FIRECRAWL_CREDIT_CRITICAL_THRESHOLD=500    # Critical at 500 credits

セルフホストインスタンスの場合:

# 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

# Custom retry configuration
export FIRECRAWL_RETRY_MAX_ATTEMPTS=10
export FIRECRAWL_RETRY_INITIAL_DELAY=500     # Start with faster retries

Claude Desktop での使用

claude_desktop_config.json に以下を追加してください:

{
  "mcpServers": {
    "mcp-server-firecrawl": {
      "command": "npx",
      "args": ["-y", "firecrawl-mcp"],
      "env": {
        "FIRECRAWL_API_KEY": "YOUR_API_KEY_HERE",

        "FIRECRAWL_RETRY_MAX_ATTEMPTS": "5",
        "FIRECRAWL_RETRY_INITIAL_DELAY": "2000",
        "FIRECRAWL_RETRY_MAX_DELAY": "30000",
        "FIRECRAWL_RETRY_BACKOFF_FACTOR": "3",

        "FIRECRAWL_CREDIT_WARNING_THRESHOLD": "2000",
        "FIRECRAWL_CREDIT_CRITICAL_THRESHOLD": "500"
      }
    }
  }
}

システム設定

サーバーには、環境変数で設定可能なパラメータがいくつか含まれています。設定されていない場合のデフォルト値は以下のとおりです:

const CONFIG = {
  retry: {
    maxAttempts: 3, // Number of retry attempts for rate-limited requests
    initialDelay: 1000, // Initial delay before first retry (in milliseconds)
    maxDelay: 10000, // Maximum delay between retries (in milliseconds)
    backoffFactor: 2, // Multiplier for exponential backoff
  },
  credit: {
    warningThreshold: 1000, // Warn when credit usage reaches this level
    criticalThreshold: 100, // Critical alert when credit usage reaches this level
  },
};

これらの設定は以下を制御します:

  1. リトライ動作

    • レート制限による失敗リクエストを自動的にリトライ
    • API の過負荷を避けるため指数バックオフを使用
    • 例: デフォルト設定では、リトライは以下のように試行されます:
      • 1回目のリトライ: 1秒の遅延
      • 2回目のリトライ: 2秒の遅延
      • 3回目のリトライ: 4秒の遅延 (maxDelay で制限)
  2. クレジット使用量モニタリング

    • クラウド API 使用時の API クレジット消費量を追跡
    • 指定されたしきい値で警告を提供
    • 予期しないサービス中断の防止に役立つ
    • 例: デフォルト設定では:
      • 残り1000クレジットで警告
      • 残り100クレジットでクリティカルアラート

レート制限とバッチ処理

サーバーは Firecrawl の組み込みレート制限とバッチ処理機能を利用します:

  • 指数バックオフによる自動レート制限処理
  • バッチ操作の効率的な並列処理
  • スマートなリクエストキューイングとスロットリング
  • 一時的なエラーの自動リトライ

ツールの選び方

このガイドを参考に、タスクに適したツールを選択してください:

  • 正確な URL がわかっている場合:
    • 1つの場合: scrape を使用 (構造化データには JSON 形式)
    • 複数の場合: batch_scrape を使用
  • サイト上の URL を発見する必要がある場合: map を使用
  • Web で情報を検索したい場合: search を使用
  • 複数の未知のソースにわたる複雑なリサーチが必要な場合: agent を使用
  • サイト全体またはセクションを分析したい場合: crawl を使用 (制限付きで!)
  • インタラクティブなブラウザ自動化が必要な場合 (クリック、入力、ナビゲーション): scrape + interact を使用

クイックリファレンス表

ツール最適な用途戻り値
scrape単一ページのコンテンツJSON (推奨) または markdown
interactスクレイピングしたページとの対話実行結果
batch_scrape複数の既知の URLJSON (推奨) または markdown[]
mapサイト上の URL 発見URL[]
crawl複数ページ抽出 (制限付き)markdown/html[]
search情報の Web 検索results[]
agent複雑なマルチソースリサーチJSON (構造化データ)

フォーマット選択ガイド

scrape または batch_scrape を使用する際は、適切なフォーマットを選択してください:

  • JSON 形式 (ほとんどの場合に推奨): ページから特定のデータが必要な場合に使用します。抽出する必要があるものに基づいてスキーマを定義します。これによりレスポンスが小さく保たれ、コンテキストウィンドウのオーバーフローを防ぎます。
  • Markdown 形式 (控えめに使用): 記事全体を要約するために読む、ページ構造を分析するなど、本当にページ全体のコンテンツが必要な場合にのみ使用します。

利用可能なツール

1. Scrape ツール (firecrawl_scrape)

高度なオプションを使用して単一 URL からコンテンツをスクレイピングします。

最適な用途:

  • どのページに情報が含まれているか正確にわかっている場合の、単一ページのコンテンツ抽出。

推奨されない用途:

  • 複数ページからのコンテンツ抽出 (既知の URL には batch_scrape、URL を最初に発見するには map + batch_scrape、全ページコンテンツには crawl を使用)
  • どのページに情報が含まれているか不明な場合 (search を使用)

よくある間違い:

  • URL のリストに scrape を使用する (代わりに batch_scrape を使用)。
  • デフォルトで 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
  }
}

使用例 (branding 形式 - ブランドアイデンティティ抽出):

{
  "name": "firecrawl_scrape",
  "arguments": {
    "url": "https://example.com",
    "formats": ["branding"]
  }
}

Branding 形式: デザイン分析やスタイル複製のための包括的なブランドアイデンティティ (色、フォント、タイポグラフィ、スペーシング、ロゴ、UI コンポーネント) を抽出します。 プライバシー: redactPII: true を設定すると、個人を特定できる情報が編集されたコンテンツが返されます。

戻り値:

  • JSON 構造化データ、markdown、ブランディングプロファイル、または指定されたその他の形式。

2. Batch Scrape ツール (firecrawl_batch_scrape)

組み込みのレート制限と並列処理により、複数の URL を効率的にスクレイピングします。

最適な用途:

  • どのページをスクレイピングするか正確にわかっている場合の、複数ページからのコンテンツ取得。

推奨されない用途:

  • URL の発見 (URL がわからない場合は最初に map を使用)
  • 単一ページのスクレイピング (scrape を使用)

よくある間違い:

  • 一度に多すぎる URL で batch_scrape を使用する (レート制限やトークンオーバーフローに達する可能性があります)

プロンプト例:

"これら3つのブログ投稿のコンテンツを取得して: [url1, url2, url3]"

使用例:

{
  "name": "firecrawl_batch_scrape",
  "arguments": {
    "urls": ["https://example1.com", "https://example2.com"],
    "options": {
      "formats": ["markdown"],
      "onlyMainContent": true
    }
  }
}

戻り値:

  • レスポンスにはステータス確認用のオペレーション ID が含まれます:
{
  "content": [
    {
      "type": "text",
      "text": "Batch operation queued with ID: batch_1. Use firecrawl_check_batch_status to check progress."
    }
  ],
  "isError": false
}

3. バッチステータス確認 (firecrawl_check_batch_status)

バッチ操作のステータスを確認します。

{
  "name": "firecrawl_check_batch_status",
  "arguments": {
    "id": "batch_1"
  }
}

4. Map ツール (firecrawl_map)

Web サイトをマッピングして、サイト上のインデックスされたすべての URL を発見します。

最適な用途:

  • スクレイピング対象を決定する前に Web サイト上の URL を発見する
  • Web サイトの特定のセクションを見つける

推奨されない用途:

  • 必要な特定の URL がすでにわかっている場合 (scrape または batch_scrape を使用)
  • ページのコンテンツが必要な場合 (マッピング後に scrape を使用)

よくある間違い:

  • URL 発見に map の代わりに crawl を使用する

プロンプト例:

"example.com 上のすべての URL をリストアップして"

使用例:

{
  "name": "firecrawl_map",
  "arguments": {
    "url": "https://example.com"
  }
}

戻り値:

  • サイトで見つかった URL の配列

5. Search ツール (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に関する最新の研究論文を探してください。"

5b. 検索フィードバックツール (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。

5c. 汎用フィードバックツール (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。

6. クロールツール (firecrawl_crawl)

Webサイトで非同期クロールジョブを開始し、すべてのページからコンテンツを抽出します。

最適な用途:

  • 包括的なカバレッジが必要な場合に、関連する複数のページからコンテンツを抽出する。

推奨されない用途:

  • 単一ページからのコンテンツ抽出(スクレイプを使用)
  • トークン制限が懸念される場合(map + batch_scrapeを使用)
  • 高速な結果が必要な場合(クロールは遅くなる可能性があります)

警告: クロールのレスポンスは非常に大きくなり、トークン制限を超える可能性があります。クロールの深さとページ数を制限するか、map + batch_scrapeを使用してより適切に制御してください。

よくある間違い:

  • limitまたはmaxDepthを高く設定しすぎる(トークンオーバーフローを引き起こす)
  • 単一ページにクロールを使用する(代わりにスクレイプを使用)

プロンプト例:

"example.com/blogの最初の2階層からすべてのブログ投稿を取得してください。"

使用例:

{
  "name": "firecrawl_crawl",
  "arguments": {
    "url": "https://example.com/blog/*",
    "maxDepth": 2,
    "limit": 100,
    "allowExternalLinks": false,
    "deduplicateSimilarURLs": true
  }
}

戻り値:

  • レスポンスには、ステータス確認用のオペレーションIDが含まれます:
{
  "content": [
    {
      "type": "text",
      "text": "Started crawl for: https://example.com/* with job ID: 550e8400-e29b-41d4-a716-446655440000. Use firecrawl_check_crawl_status to check progress."
    }
  ],
  "isError": false
}

7. クロールステータス確認 (firecrawl_check_crawl_status)

クロールジョブのステータスを確認します。

{
  "name": "firecrawl_check_crawl_status",
  "arguments": {
    "id": "550e8400-e29b-41d4-a716-446655440000"
  }
}

戻り値:

  • レスポンスには、クロールジョブのステータスが含まれます:

8. 抽出ツール (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
}

9. エージェントツール (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 を使用します。

10. エージェントステータス確認 (firecrawl_agent_status)

エージェントジョブのステータスを確認し、完了時に結果を取得します。エージェントの開始後に結果をポーリングするために使用します。

ポーリングパターン: エージェントのリサーチには、複雑なクエリでは数分かかることがあります。ステータスが「completed」または「failed」になるまで、定期的に(例:10〜30秒ごとに)このエンドポイントをポーリングします。

{
  "name": "firecrawl_agent_status",
  "arguments": {
    "id": "550e8400-e29b-41d4-a716-446655440000"
  }
}

可能なステータス:

  • processing: エージェントはまだリサーチ中です - 後で再度確認してください
  • completed: リサーチが完了しました - レスポンスに抽出されたデータが含まれます
  • failed: エラーが発生しました

11. 監視ツール (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_checks: チェックの一覧表示(オプションでステータスでフィルタリング)。
  • firecrawl_monitor_check: diffsnapshotjudgment.meaningfuljudgment.meaningfulChanges を含むページレベルの結果を取得。

ログシステム

サーバーには包括的なログが含まれます:

  • 操作のステータスと進行状況
  • パフォーマンスメトリクス
  • クレジット使用量の監視
  • レート制限の追跡
  • エラー状態

ログメッセージの例:

[INFO] Firecrawl MCP Server initialized successfully
[INFO] Starting scrape for URL: https://example.com
[INFO] Batch operation queued with ID: batch_1
[WARNING] Credit usage has reached warning threshold
[ERROR] Rate limit exceeded, retrying in 2s...

エラー処理

サーバーは堅牢なエラー処理を提供します:

  • 一時的なエラーに対する自動再試行
  • バックオフ付きのレート制限処理
  • 詳細なエラーメッセージ
  • クレジット使用量の警告
  • ネットワークの回復力

エラーレスポンスの例:

{
  "content": [
    {
      "type": "text",
      "text": "Error: Rate limit exceeded. Retrying in 2 seconds..."
    }
  ],
  "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ファイルを参照してください