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 伺服器

一個模型上下文協定 (MCP) 伺服器,將 Firecrawl 帶給相容 MCP 的 AI 代理 — 搜尋、擷取並與即時網路互動,以取得乾淨、可供代理使用的上下文。

非常感謝 @vrknetha@knacklabs 的初始實作!

功能特色

  • 搜尋網路並取得完整頁面內容
  • 將任何網址擷取為乾淨、結構化的資料
  • 與頁面互動 — 點擊、導覽和操作
  • 使用自主代理進行深度研究
  • 自動重試和速率限制
  • 支援雲端和自託管
  • 支援 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 伺服器文件代理入門指南 以取得設定詳細資訊。

僅限搜尋端點

一個唯讀、僅限搜尋的介面也託管於:

https://mcp.firecrawl.dev/v2/mcp-search

它公開一組固定的六個唯讀工具:firecrawl_search 和五個 firecrawl_research_* 工具。它不執行頁面內容擷取,並擁有自己的 OAuth 身分;上述的完整端點保持不變。請參閱 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 以上 如需最新的設定說明,請參閱 Cursor 官方文件中有關設定 MCP 伺服器的部分: Cursor MCP 伺服器設定指南

在 Cursor v0.48.6 中設定 Firecrawl MCP

  1. 開啟 Cursor 設定
  2. 前往「功能」>「MCP 伺服器」
  3. 點擊「+ 新增全域 MCP 伺服器」
  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. 前往「功能」>「MCP 伺服器」
  3. 點擊「+ 新增 MCP 伺服器」
  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,但您可以透過描述您的網頁擷取需求來明確要求它。透過 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"
      }
    }
  }
}

使用可串流 HTTP 本機模式執行

若要在本機使用可串流 HTTP 而非預設的 stdio 傳輸來執行伺服器:

env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp

使用網址: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

如需手動安裝,請將以下 JSON 區塊新增到 VS Code 中的使用者設定 (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=trueSSE_LOCAL=true):用戶端應在 MCP 請求中傳送 Authorization: Bearer <fco_access_token>。當兩者都存在時,OAuth bearer 權杖的優先順序高於 x-firecrawl-api-key / x-api-key
  • stdio: 使用 FIRECRAWL_OAUTH_TOKEN 作為靜態存取權杖,或繼續使用 FIRECRAWL_API_KEY 作為 API 金鑰。

僅使用存取權杖 (fco_…)。重新整理權杖 (fcr_…) 必須在權杖端點交換,不能傳遞到擷取/搜尋 API。

僅限搜尋介面(託管)

在託管模式 (CLOUD_SERVICE=true) 下,第二個同處理序執行個體會提供僅限搜尋端點。此捆綁服務具有固定的部署合約:nginx 將 /v2/mcp-search 路由到本機連接埠 3001 上的執行個體,且 OAuth 受保護資源識別碼為 https://mcp.firecrawl.dev/v2/mcp-search

FIRECRAWL_MCP_SEARCH_ENABLED(預設 true)是支援的運作切換開關;將其設定為 false 可防止搜尋執行個體啟動。Node 處理程序也接受 FIRECRAWL_MCP_SEARCH_PORTFIRECRAWL_MCP_SEARCH_ENDPOINTFIRECRAWL_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"
      }
    }
  }
}

如何選擇工具

使用此指南為您的任務選擇正確的工具:

  • 如果您知道確切的網址: 使用 scrape(搭配 JSON 格式以取得結構化資料)
  • 如果您有多個已知網址: 為每個網址呼叫 scrape。如果您特別需要一個批量 API 操作,請在 MCP 之外使用 Firecrawl API 批次端點。
  • 如果您需要探索網站上的網址: 使用 map
  • 如果您想搜尋網路資訊: 使用 search
  • 如果您需要跨多個未知來源的複雜研究: 使用 agent
  • 如果您想分析整個網站或區段: 使用 crawl(有限制!)
  • 如果您需要互動式瀏覽器自動化(點擊、輸入、導覽):使用 interact 搭配網址以取得新頁面,或當您已擷取頁面或需要更嚴格的擷取控制時,使用 scrape + interact

快速參考表

工具最適合回傳內容
scrape單一頁面內容JSON(首選)或 markdown
interact與網址或已擷取頁面互動執行結果 + 網址模式的 scrapeId
map探索網站上的網址URL[]
crawl多頁面擷取(有限制)內部輪詢後的最終爬取狀態/資料
parse檔案和託管上傳參考markdown、JSON 或文件輸出
extract從網址進行結構化擷取JSON 結構化資料
search網路搜尋資訊results[]
agent複雜的多來源研究JSON(結構化資料)
monitor定期頁面檢查監視/檢查中繼資料和差異
research論文和 GitHub 儲存庫研究研究結果和儲存庫匹配

格式選擇指南

使用 scrape 時,請選擇正確的格式:

  • JSON 格式(建議用於大多數情況): 當您需要頁面中的特定資料時使用。根據您需要擷取的內容定義結構描述。這可保持回應精簡,並避免上下文視窗溢位。
  • Markdown 格式(謹慎使用): 僅當您確實需要完整頁面內容時使用,例如閱讀整篇文章以進行摘要或分析頁面結構。

可用工具

1. 擷取工具 (firecrawl_scrape)

使用進階選項從單一網址擷取內容。

最適合:

  • 單一頁面內容擷取,當您確切知道哪個頁面包含資訊時。

不建議用於:

  • 從多個頁面擷取內容(對於已知網址,使用重複的 scrape 呼叫;或先使用 map + scrape 探索網址;或使用 crawl 取得完整頁面內容)
  • 當您不確定哪個頁面包含資訊時(使用 search)

常見錯誤:

  • 將網址清單傳遞給一個 scrape 呼叫。在 MCP 中,每個網址呼叫一次 scrape。如果您特別需要一個批量 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)

繪製網站地圖以探索網站上所有已索引的網址。

最適合:

  • 在決定要擷取什麼之前,先探索網站上的網址
  • 尋找網站的特定區段

不建議用於:

  • 當您已經知道需要哪個特定網址時(使用 scrape)
  • 當您需要頁面內容時(在 mapping 後使用 scrape)

常見錯誤:

  • 使用 crawl 來探索網址,而不是使用 map

提示範例:

"列出 example.com 上的所有網址。"

使用範例:

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

回傳:

  • 在網站上找到的網址陣列

3. 搜尋工具 (firecrawl_search)

搜尋網路,並可選擇從搜尋結果中擷取內容。

最適合:

  • 跨多個網站尋找特定資訊,當您不知道哪個網站有資訊時。
  • 當您需要查詢最相關的內容時

不建議用於:

  • 當您已經知道要擷取哪個網站時(使用 scrape)
  • 當您需要單一網站的全面覆蓋時(使用 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。這是一個陣列,包含代理程式預期找到但未發現的特定內容片段。每個缺少的主題一個條目——這些資料會跨團隊彙總,告訴我們接下來該索引什麼內容。

每日退款上限(每個團隊,每個 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 端點作業傳送結構化回饋。 將此用於 scrapeparsemapsearch 作業的端點層級回饋。 針對搜尋結果品質,建議優先使用 firecrawl_search_feedback,因為它包含搜尋專屬的指引。

保持回饋簡潔:使用問題代碼、標籤、簡短筆記、網址、頁碼 和小型中繼資料物件。請勿包含原始的擷取/解析輸出。

選擇退出: 在啟動 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)

啟動一個爬取作業,持續輪詢直到達到最終狀態,然後回傳最終的爬取狀態/資料。

最適合用於:

  • 當您需要全面覆蓋時,從多個相關頁面擷取內容。

不建議用於:

  • 從單一頁面擷取內容(請使用 scrape)
  • 當權杖限制是個問題時(請使用 map + scrape 以獲得更嚴謹的控制)
  • 當您需要快速結果時(爬取可能很慢)

警告: 爬取回應可能非常龐大,且可能超出權杖限制。請限制爬取深度和頁面數量,或使用 map + scrape 以獲得更嚴謹的控制。

常見錯誤:

  • 將 limit 或 maxDiscoveryDepth 設定得太高(導致權杖溢位)
  • 對單一頁面使用爬取(請改用 scrape)

提示範例:

"從 example.com/blog 的前兩個層級取得所有部落格文章。"

使用範例:

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

回傳:

  • 內部輪詢後的最終爬取狀態和資料,包括 idstatuscompletedtotalcreditsUsedexpiresAtnextdata。如果您稍後需要重新檢查作業,請使用回傳的 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 端點解析本機檔案或託管上傳參考。

最適合用於: PDF、Word 文件、試算表、HTML 檔案,以及其他需要 Markdown 或結構化 JSON 輸出的文件。託管 MCP 支援兩步驟的上傳參考流程;本機直接檔案讀取則需要自行託管的 FIRECRAWL_API_URL

不建議用於: 遠端網址(請使用 scrape)、在單次呼叫中處理多個檔案(請對每個檔案呼叫一次 parse),或僅限瀏覽器的操作,例如螢幕截圖和點擊。

託管 MCP 流程: 託管 MCP 無法直接讀取呼叫者的檔案系統。請使用 filePath 呼叫 firecrawl_parse 以接收一個短暫有效的上傳指令和 nextToolCall,在本機上傳檔案,然後使用回傳的 uploadRef 再次呼叫 firecrawl_parse。鑄造託管上傳網址需要 Firecrawl 驗證或符合無金鑰資格。在本機 npx firecrawl-mcp 模式下,直接檔案解析目前需要 FIRECRAWL_API_URL 指向自行託管的 Firecrawl API;僅有雲端 API 金鑰的純本機伺服器無法透過此工具讀取和上傳檔案。

使用範例:

{
  "name": "firecrawl_parse",
  "arguments": {
    "filePath": "/absolute/path/to/document.pdf",
    "formats": ["markdown"],
    "parsers": ["pdf"],
    "zeroDataRetention": true
  }
}

回傳: 已解析的文件內容,或帶有 nextToolCall 的託管上傳指示。

7. 擷取工具 (firecrawl_extract)

使用 LLM 功能從網頁擷取結構化資訊。支援雲端 AI 和自行託管的 LLM 擷取。

最適合用於:

  • 擷取特定的結構化資料,例如價格、名稱、詳細資訊。

不建議用於:

  • 當您需要頁面的完整內容時(請使用 scrape)
  • 當您不是在尋找特定的結構化資料時

參數:

  • urls:要從中擷取資訊的網址陣列
  • prompt:用於 LLM 擷取的自訂提示
  • systemPrompt:用於引導 LLM 的系統提示
  • schema:用於結構化資料擷取的 JSON schema
  • allowExternalLinks:允許從外部連結擷取
  • enableWebSearch:啟用網路搜尋以獲取額外脈絡
  • 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
  }
}

回傳:

  • 根據您的 schema 定義的已擷取結構化資料
{
  "content": [
    {
      "type": "text",
      "text": {
        "name": "Example Product",
        "price": 99.99,
        "description": "This is an example product description"
      }
    }
  ],
  "isError": false
}

8. 代理工具 (firecrawl_agent)

自主網路研究代理。這是一個獨立的 AI 代理層,它會根據您的查詢,獨立瀏覽網際網路、搜尋資訊、瀏覽頁面並擷取結構化資料。

運作方式:

代理會自主執行網路搜尋、追蹤連結、閱讀頁面並收集資料。這會非同步執行——它會立即回傳一個作業 ID,而您需要輪詢 firecrawl_agent_status 來檢查何時完成並擷取結果。

非同步工作流程:

  1. 使用您的提示/schema 呼叫 firecrawl_agent → 回傳作業 ID
  2. 在代理進行研究時執行其他工作(複雜查詢可能需要數分鐘)
  3. 使用作業 ID 輪詢 firecrawl_agent_status 以檢查進度
  4. 當狀態為「已完成」時,回應會包含已擷取的資料

最適合用於:

  • 當您不知道確切網址時的複雜研究任務
  • 多來源資料收集
  • 尋找散落在網路上的資訊
  • 在等待結果時可以執行其他工作的任務

不建議用於:

  • 當您知道網址時的簡單單頁擷取(請使用帶有 JSON 格式的 scrape——更快且更便宜)

參數:

  • prompt:您想要資料的自然語言描述(必要,最多 10,000 個字元)
  • urls:可選的網址陣列,用於將代理聚焦在特定頁面上
  • schema:用於結構化輸出的可選 JSON schema

提示範例:

"找出 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 進行輪詢。

使用範例(附帶網址——代理聚焦於特定頁面):

{
  "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)

與一個全新的網址互動,或與先前由 firecrawl_scrape 開啟的頁面互動。

最適合用於: 點擊、輸入、導覽,以及從動態頁面擷取狀態,而無需還原已棄用的瀏覽器工具。

使用選項:

  • 傳遞 url 以在單一 MCP 呼叫中擷取並開啟頁面進行互動。
  • 傳遞 scrapeId 以繼續與現有的已擷取頁面互動。
  • 精確傳遞 urlscrapeId 其中之一,再加上 promptcode

使用範例:

{
  "name": "firecrawl_interact",
  "arguments": {
    "url": "https://example.com",
    "prompt": "Click the pricing link and summarize the visible plans"
  }
}

回傳: 互動結果,以及對於網址模式,衍生的 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:檢查單一論文。
  • firecrawl_research_related_papers:尋找相關論文。
  • firecrawl_research_read_paper:閱讀論文內容。
  • firecrawl_research_search_github:搜尋 GitHub 儲存庫。

最適合用於: 文獻回顧、論文查詢和儲存庫探索工作流程,其中代理需要一個聚焦的研究介面,而非一般的網路爬蟲。

13. 監控工具 (firecrawl_monitor_*)

建立並管理週期性頁面監控器。監控器會執行排定的擷取或爬取,將每次結果與上次保留的快照進行比對,並可透過 webhook 或電子郵件發送通知。

最適合用於:

  • 長期監控一個或少數幾個頁面
  • 使用淺顯易懂的英文目標,對有意義的變更發出警示
  • 追蹤檢查歷史記錄和頁面層級的差異

建議的建立模式:

使用 pagepages 加上 goal。MCP 伺服器會以 30 分鐘的排程建立監控請求,而 API 會自動啟用有意義變更的判斷。

當設定了 goal 時,有意義變更的判斷會自動執行。頁面 webhook 會在 monitor.page 事件上公開 isMeaningfuljudgment

將目標撰寫為簡潔的 2-3 句監控指示。說明什麼情況應觸發警示,保留使用者給出的任何範圍,並僅在請求中明確指出時才加入意圖特定的排除項目。諸如空白字元、僅格式變更、請求 ID、追蹤參數、通用中繼資料和不相關的頁面 chrome 等通用雜訊,已由判斷器處理,因此請勿在每個目標中重複提及。如果使用者描述模糊,請保持目標廣泛;如果他們要求廣泛監控或「任何變更」,請保留該意圖。如果使用者表示他們不關心某些事情,請明確包含該排除項目。

{
  "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:更新欄位,包括 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

錯誤處理

伺服器提供強健的錯誤處理:

  • API 速率限制錯誤會回報給 MCP 客戶端
  • 詳細的錯誤訊息
  • 網路復原能力

錯誤回應範例:

{
  "content": [
    {
      "type": "text",
      "text": "Error: Rate limit exceeded"
    }
  ],
  "isError": true
}

開發

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test

貢獻方式

  1. Fork 此儲存庫
  2. 建立您的功能分支
  3. 執行測試:npm test
  4. 提交 Pull Request

感謝貢獻者

感謝 @vrknetha@cawstudios 的初始實作!

感謝 MCP.so 和 Klavis AI 的託管,以及 @gstarwd@xiangkaiz@zihaolin96 整合我們的伺服器。

授權

MIT 授權 - 詳情請見 LICENSE 檔案