Firecrawl MCP
公式強力なウェブスクレイピングと検索機能をCursorやClaudeのようなLLMクライアントに追加します。
Firecrawl MCPで何ができますか?
- ウェブで情報を検索する — どのサイトに答えがあるかわからない場合に、
firecrawl_searchを使ってウェブ全体から関連ページを見つけます。 - 既知のURLを構造化データにスクレイピングする — JSONスキーマを指定して
firecrawl_scrapeを呼び出し、1ページから必要なフィールドだけを抽出します。 - サイト上のすべてのURLを発見する — スクレイピングする前に、
firecrawl_mapを実行してインデックスされたページを一覧表示します。 - 自律的なマルチソース調査を実行する —
firecrawl_agentジョブを開始し、firecrawl_agent_statusをポーリングして、複雑なクロスサイトデータ収集を行います。 - 動的ページと対話する —
firecrawl_interactを使用して、ページ上でクリック、入力、ナビゲーションを行い、結果の状態を返します。 - ローカルドキュメントを解析する — PDF、Wordファイル、スプレッドシートを
firecrawl_parseに送信して、クリーンなマークダウンまたは構造化出力を取得します。
ドキュメント
Firecrawl MCP Server
Firecrawl を MCP 対応 AI エージェントに提供する Model Context Protocol (MCP) サーバーです。クリーンでエージェントがすぐに利用できるコンテキストを得るために、ライブ Web の検索、スクレイピング、操作を行います。
初期実装を提供してくれた @vrknetha、@knacklabs に感謝します!
機能
- Web を検索し、ページ全体のコンテンツを取得
- 任意の URL をスクレイピングしてクリーンで構造化されたデータを取得
- ページとの対話 — クリック、ナビゲーション、操作
- 自律エージェントによる詳細な調査
- 自動リトライとレート制限
- クラウドおよびセルフホストのサポート
- SSE サポート
MCP.so のプレイグラウンドで当社の MCP サーバー または Klavis AI で試してみてください。
インストール
ホスト型 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 呼び出しを使用するか、最初に map + scrape で URL を検出するか、ページ全体のコンテンツには 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
}
}
使用例 (ブランディング形式 - ブランドアイデンティティの抽出):
{
"name": "firecrawl_scrape",
"arguments": {
"url": "https://example.com",
"formats": ["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)
クロールジョブを開始し、終了状態に達するまでポーリングし、最終的なクロールステータス/データを返します。
最適な用途:
- 包括的なカバレッジが必要な場合に、複数の関連ページからコンテンツを抽出する。
推奨されない用途:
- 単一ページからのコンテンツ抽出(スクレイプを使用)
- トークン制限が懸念される場合(より厳密な制御のために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をポーリングし、進行状況を確認する - ステータスが「完了」になると、レスポンスに抽出されたデータが含まれる
最適な用途:
- 正確な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: 単一モニターの取得。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 - 詳細はLICENSEファイルを参照してください