Firecrawl
公式Firecrawlを使用してウェブデータを抽出する
Firecrawl MCPで何ができますか?
- 既知のURLから構造化データをスクレイピング — AIに、
firecrawl_scrapeとJSONスキーマを使用して、ページから特定のフィールド(例:名前、価格)を抽出するよう依頼します。 - ウェブを検索して情報を取得 — AIに、
firecrawl_searchを使用してウェブ全体から関連ページを検索させ、必要に応じて結果から全文コンテンツをスクレイピングするよう依頼します。 - ウェブサイトをマッピングしてURLを発見 — AIに、
firecrawl_mapを使用してドメイン上のインデックス化されたすべてのURLをリストアップさせ、どのページをスクレイピングするかを決定するよう依頼します。 - 自律的なマルチソース調査を実行 — AIに、
firecrawl_agentジョブを開始させ、独立してブラウジングとデータ収集を行い、その後firecrawl_agent_statusで結果をポーリングするよう依頼します。 - 動的ページと対話 — AIに、
firecrawl_interactを使用して、URLまたは既存のスクレイピングセッション上でクリック、入力、またはナビゲーションを行うよう依頼します。
ドキュメント
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 サーバードキュメント および エージェントオンボーディングガイド を参照してください。
検索専用エンドポイント
読み取り専用の検索専用サーフェスも以下でホストされています。
https://mcp.firecrawl.dev/v2/mcp-search
これは、firecrawl_search と 5 つの firecrawl_research_* ツールという、6 つの読み取り専用ツールの固定セットを公開します。ページコンテンツの取得は行わず、独自の OAuth ID を持ちます。上記のフルエンドポイントは変更されません。完全な契約については docs/search-profile.md を参照してください。
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 に渡さないでください。
検索専用サーフェス (ホスト型)
ホストモード (CLOUD_SERVICE=true) では、2 番目のインプロセスインスタンスが 検索専用エンドポイント を提供します。バンドルされたサービスには固定のデプロイ契約があります。nginx は /v2/mcp-search をローカルポート 3001 のインスタンスにルーティングし、OAuth 保護リソース識別子は https://mcp.firecrawl.dev/v2/mcp-search です。
FIRECRAWL_MCP_SEARCH_ENABLED (デフォルト true) はサポートされている運用トグルです。検索インスタンスの起動を防ぐには false に設定します。Node プロセスは、分離テスト用に FIRECRAWL_MCP_SEARCH_PORT、FIRECRAWL_MCP_SEARCH_ENDPOINT、FIRECRAWL_MCP_SEARCH_RESOURCE_URL も受け入れます。これらのオーバーライドは、バンドルされた nginx ルートや認可サーバーの許可リストを再構成するものではなく、ホスト型デプロイメントで単独で使用してはなりません。
検索インスタンスは、すべてのリクエスト (tools/list を含む) に認証を要求し、オーディエンスが自身のリソースと一致しない OAuth トークンを拒否します。
設定例
クラウド 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. Scrape ツール (firecrawl_scrape)
単一の URL からコンテンツをスクレイピングします。高度なオプション付き。
最適な用途:
- 単一ページのコンテンツ抽出。どのページに情報が含まれているか正確にわかっている場合。
推奨されない用途:
- 複数ページからのコンテンツ抽出 (既知の URL には繰り返し scrape を呼び出すか、URL を最初に検出するには map + scrape、または全ページコンテンツには crawl を使用)
- どのページに情報が含まれているか不明な場合 (search を使用)
よくある間違い:
- 1 回の scrape 呼び出しに URL のリストを渡す。MCP では URL ごとに 1 回 scrape を呼び出します。特に 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
}
}
使用例 (branding 形式 - ブランドアイデンティティの抽出):
{
"name": "firecrawl_scrape",
"arguments": {
"url": "https://example.com",
"formats": ["branding"]
}
}
Branding 形式: デザイン分析やスタイルの複製のために、包括的なブランドアイデンティティ (色、フォント、タイポグラフィ、スペーシング、ロゴ、UI コンポーネント) を抽出します。
プライバシー: redactPII: true を設定すると、個人を特定できる情報が編集されたコンテンツが返されます。
戻り値:
- JSON 構造化データ、markdown、ブランディングプロファイル、または指定されたその他の形式。
2. Map ツール (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. Search ツール (firecrawl_search)
Web を検索し、オプションで検索結果からコンテンツを抽出します。
最適な用途:
- どの Web サイトに情報があるかわからない場合に、複数の Web サイトにわたって特定の情報を見つける。
- クエリに最も関連性の高いコンテンツが必要な場合
推奨されない用途:
- スクレイピングする Web サイトが既にわかっている場合 (scrape を使用)
- 単一の Web サイトを包括的にカバーする必要がある場合 (map または crawl を使用)
よくある間違い:
- 自由形式の質問に crawl や map を使用する (代わりに search を使用)
使用例:
{
"name": "firecrawl_search",
"arguments": {
"query": "latest AI research papers 2023",
"highlights": true,
"limit": 5,
"lang": "en",
"country": "us",
"scrapeOptions": {
"formats": ["markdown"],
"onlyMainContent": true,
"redactPII": true
}
}
}
highlights を true に設定するとクエリに関連するハイライトを要求し、false に設定すると元の検索スニペットを保持します。省略するとAPIのデフォルト動作が使用されます。
戻り値:
- 検索結果の配列(オプションでスクレイピングされたコンテンツを含む)、および
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)
クロールジョブを開始し、終了状態に達するまでポーリングし、最終的なクロールステータス/データを返します。
最適な用途:
- 複数の関連ページからコンテンツを抽出し、包括的なカバレッジが必要な場合。
推奨されない用途:
- 単一ページからのコンテンツ抽出(スクレイプを使用)
- トークン制限が懸念される場合(より厳密な制御のためにマップ+スクレイプを使用)
- 高速な結果が必要な場合(クロールは遅くなる可能性があります)
警告: クロールのレスポンスは非常に大きくなる可能性があり、トークン制限を超える場合があります。クロールの深さとページ数を制限するか、より厳密な制御のためにマップ+スクレイプを使用してください。
よくある間違い:
- 制限または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をポーリングし、進行状況を確認する - ステータスが「完了」になると、レスポンスに抽出されたデータが含まれます
最適な用途:
- 正確な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)
エージェントジョブのステータスを確認し、完了時に結果を取得します。エージェントの開始後に結果をポーリングするために使用します。
ポーリングパターン: エージェントの調査には、複雑なクエリの場合、数分かかることがあります。ステータスが「完了」または「失敗」になるまで、定期的に(例: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
エラーハンドリング
サーバーは堅牢なエラーハンドリングを提供します:
- APIレート制限エラーをMCPクライアントに通知
- 詳細なエラーメッセージ
- ネットワーク耐性
エラーレスポンスの例:
{
"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ファイルを参照