Firecrawl MCP
官方為Cursor和Claude等LLM客戶端添加強大的網頁抓取和搜索功能。
你可以用 Firecrawl MCP 做什麼?
- 擷取已知 URL — 請你的助理透過
firecrawl_scrape將單一頁面抓取成乾淨的 Markdown,或符合你提供之結構描述的結構化 JSON。 - 探索網站 URL — 讓它先用
firecrawl_map列出網站上已建立索引的 URL,再決定要擷取哪些頁面。 - 搜尋網路 — 透過
firecrawl_search取得查詢的排名結果,並可選擇為部分結果擷取完整頁面內容。 - 爬取多個頁面 — 使用
firecrawl_crawl擷取整個網站的內容,並以limit、includePaths/excludePaths或maxDiscoveryDepth加以限制。 - 操作瀏覽器 — 透過
firecrawl_interact點擊、輸入、填寫表單或瀏覽動態頁面,並以scrapeId延續工作階段。 - 檢查額度用量 — 透過
firecrawl_credit_usage詢問還剩多少 Firecrawl 額度,或額度花在哪些用途上。
文件
Firecrawl MCP Server
一個 Model Context Protocol (MCP) 伺服器,將 Firecrawl(為 AI 代理打造的 context API)帶給相容於 MCP 的用戶端:搜尋、擷取並與即時網路互動,並取回乾淨的 Markdown 或結構化資料。
非常感謝 @vrknetha、@knacklabs 的初始實作!
功能
- 搜尋網路,可選擇為每筆結果取得完整頁面內容
- 搜尋開發者來源(GitHub issues、已合併的 pull request、README 與文件)、美國政府來源,以及科學論文(PubMed、bioRxiv、medRxiv、arXiv)的索引
- 將任何 URL 擷取為乾淨的 Markdown 或結構化 JSON
- 解析 PDF 與文件
- 爬取網站以取得多個頁面的內容,或對其進行對應以探索其 URL
- 在真實瀏覽器中與頁面互動:點擊、輸入、填寫表單,並瀏覽動態頁面
- 執行 Agent 作業以進行多來源研究並回傳結構化資料
- 監控頁面並在其內容變更時收到通知
- 檢查目前與歷史的 Firecrawl 額度使用量
- 自動重試與速率限制
- 支援雲端與自架
- 支援 SSE
何時使用此伺服器
- 當你有已知的 URL,並想以 markdown 或符合你所提供 schema 的 JSON 取得其內容時,使用
firecrawl_scrape。 - 當你需要探索網站上的 URL 而不擷取其內容時,使用
firecrawl_map。 - 當你需要網站下多個頁面的內容時,使用
firecrawl_crawl;設定limit、includePaths/excludePaths或maxDiscoveryDepth來限制範圍。 - 當你從查詢而非 URL 開始,並想要依相關性排序的網路結果時,使用
firecrawl_search。結果會附帶摘要;對你需要的 URL 使用firecrawl_scrape取得完整頁面。scrapeOptions會在同一次呼叫中擷取每筆結果的頁面,並將每一筆都計為一次 scrape,因此請保留給少數結果的完整文字使用(僅搜尋的端點永遠不會擷取內容)。 - 當頁面需要點擊、輸入或導覽動作才能閱讀時,使用
firecrawl_interact:傳入url以取得全新頁面,或傳入scrapeId以在你已擷取的頁面上繼續。 - 當同一頁面需要依固定排程反覆檢查,並取得差異與變更警示,而非只擷取一次時,使用
firecrawl_monitor_*工具。 - 使用
firecrawl_credit_usage檢查剩餘額度或額度花費在何處,可依月份或日期,並可選擇依端點或 API key 細分。 - 當你需要在你自己的多個步驟之間保持瀏覽器工作階段開啟,並使用你自己的重試與終止邏輯時,請考慮其他方案:每次
firecrawl_interact呼叫都會執行一輪prompt或code至完成並交還控制權。工作階段可透過scrapeId跨呼叫持續存在,並以firecrawl_interact_stop結束,但你無法在單次呼叫中從用戶端逐步互動式地驅動它。
當完整設定檔以預設設定註冊時(包含回饋工具,且未以本機無金鑰模式執行),此伺服器會列出 27 個工具。設定 FIRECRAWL_NO_SEARCH_FEEDBACK=1 和/或 FIRECRAWL_NO_ENDPOINT_FEEDBACK=1 會移除對應的回饋工具並減少此數量,本機無金鑰啟動亦然。對於有工具槽位限制的用戶端:託管的無金鑰端點(https://mcp.firecrawl.dev/v2/mcp,無 API key)僅提供 3 個(firecrawl_scrape、firecrawl_search、firecrawl_parse),而專用的僅搜尋端點(https://mcp.firecrawl.dev/v2/mcp-search)提供固定的 9 個工具(search、developer、government 與 research search,加上 Alexandria 目錄查詢與執行)。
安裝
託管 MCP(無金鑰免費方案)
無需任何設定即可連線至遠端託管伺服器:
https://mcp.firecrawl.dev/v2/mcp
在無金鑰免費方案中,scrape、search 與 parse 無需 API key 即可運作(有速率限制)。其他工具如 crawl、map 與 agent 仍需要金鑰。
只要使用者能註冊,就優先使用 OAuth 或 API key。這可解鎖完整工具集與更高的限制。
若要進行互動式帳號連線,請設定你的 MCP 用戶端使用此伺服器 URL。這是 MCP 端點,不是瀏覽器頁面;請使用用戶端的帳號連線流程,並在重新連線時不要新增第二個 Firecrawl 伺服器項目:
https://mcp.firecrawl.dev/v2/mcp-oauth
若要使用 API key 連線(例如無人值守的整合),請將伺服器 URL 保持為:
https://mcp.firecrawl.dev/v2/mcp
然後在用戶端的安全標頭或密鑰設定中設定:
Authorization: Bearer <FIRECRAWL_API_KEY>
絕不要將 API key 放入伺服器 URL。絕不要將 API key 放入代理聊天中。請直接在用戶端或密鑰管理員中設定。用戶端專屬的指示請參閱託管 MCP 設定指南與代理上線指南。
為你的整合命名
透過 HTTP 連線的整合可以使用 X-Firecrawl-Origin 標頭為自己命名,例如 X-Firecrawl-Origin: my-agent。伺服器會將其以請求來源 mcp-my-agent@<server version> 回報給 Firecrawl,取代原本會回報的用戶端名稱或 User-Agent。請使用字母、數字與連字號:其他字元的每一段連續字元會變成一個連字號,開頭與結尾的連字號會被移除,名稱會截斷於 48 個字元。工具結果不受影響;只有傳送給 Firecrawl API 的來源(以及傳遞給嵌入器的 beforeKeylessRequest)會改變。
僅搜尋端點
固定範圍的搜尋介面也託管於:
https://mcp.firecrawl.dev/v2/mcp-search
它提供固定的九個工具:firecrawl_search、firecrawl_developer_search、firecrawl_gov_search、四個 firecrawl_research_* 工具,以及兩個 Alexandria 工具 firecrawl_find_tools 與 firecrawl_scrape。其 firecrawl_search 不會擷取任何頁面內容。
使用 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 Server Configuration Guide
在 Cursor v0.48.6 中設定 Firecrawl MCP
- 開啟 Cursor Settings
- 前往 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 Settings
- 前往 Features > MCP Servers
- 點擊「+ Add New MCP Server」
- 輸入以下內容:
- 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 key。如果你還沒有,可以建立帳號並從 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"
}
}
}
}
以本機 Streamable HTTP 模式執行
若要在本機使用 Streamable HTTP 而非預設的 stdio 傳輸來執行伺服器:
env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp
使用 url:http://localhost:3000/mcp
在此模式下,伺服器只會回應發往 localhost、127.0.0.1 或 [::1](任何連接埠)的請求,以及當 HOST 不是 0.0.0.0 或 :: 時發往該位址的請求。若請求的 Host 標頭指定其他主機,或其 Origin 標頭指定其他網站,則會得到 403,而 CORS 標頭會回傳允許的來源而非 *。發往 /health 的 GET 與 HEAD 請求無論主機為何都會被回應,因此健康檢查可持續運作,且伺服器會為每個拒絕的請求記錄一行並註明 FIRECRAWL_MCP_ALLOWED_HOSTS。這可防止你造訪的網頁透過 DNS 重綁定或跨來源請求呼叫本機伺服器並使用其 FIRECRAWL_API_KEY。
若要以其他名稱或位址存取伺服器,例如反向代理後的主機名稱或 LAN IP,請將其列於 FIRECRAWL_MCP_ALLOWED_HOSTS(以逗號分隔;連接埠會被忽略)。同一份清單也決定哪些瀏覽器來源可以呼叫伺服器。同一台機器上的反向代理可以保留預設的綁定位址:
env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY \
FIRECRAWL_MCP_ALLOWED_HOSTS=mcp.home.lan npx -y firecrawl-mcp
其他機器上的用戶端也需要伺服器監聽非回送位址,因此也要設定 HOST。如此一來,每個能連上該連接埠的用戶端都會以伺服器的 FIRECRAWL_API_KEY 提供服務,因此請僅在你信任的網路上這麼做:
env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY HOST=0.0.0.0 \
FIRECRAWL_MCP_ALLOWED_HOSTS=192.168.1.20 npx -y firecrawl-mcp
FIRECRAWL_MCP_ALLOWED_HOSTS=* 會關閉此檢查並還原萬用字元 CORS 標頭。僅當伺服器前方有東西會自行檢查主機與來源時才這麼做。
使用 Docker 執行
ghcr.io/firecrawl/firecrawl-mcp-server 映像檔執行與 npx -y firecrawl-mcp 相同的伺服器。從 main 的每次建置都會標記為 latest、v<package version> 與 sha-<commit sha>。v<package version> 會移至該版本的最新建置,因此當你需要固定映像檔時,請固定 sha-<commit sha>(或一個 digest)。
stdio(預設),適用於將伺服器作為命令啟動的 MCP 用戶端:
docker run -i --rm -e FIRECRAWL_API_KEY=fc-YOUR_API_KEY ghcr.io/firecrawl/firecrawl-mcp-server:latest
{
"mcpServers": {
"firecrawl-mcp": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "FIRECRAWL_API_KEY", "ghcr.io/firecrawl/firecrawl-mcp-server:latest"],
"env": {
"FIRECRAWL_API_KEY": "YOUR_API_KEY"
}
}
}
}
Streamable HTTP,提供於 http://localhost:3000/mcp:
docker run --rm -p 127.0.0.1:3000:3000 \
-e HTTP_STREAMABLE_SERVER=true \
-e FIRECRAWL_API_KEY=fc-YOUR_API_KEY \
ghcr.io/firecrawl/firecrawl-mcp-server:latest
此映像檔會設定 HOST=0.0.0.0 與 PORT=3000;覆寫 PORT(以及 -p 對應)以在其他位置監聽。伺服器會使用容器的 FIRECRAWL_API_KEY 處理未傳送自身憑證的請求,因此範例僅在 127.0.0.1 上發佈連接埠;除非用戶端必須提供自己的金鑰,否則不要更廣泛地暴露它。設定 FIRECRAWL_API_URL 以使用自架的 Firecrawl API。容器以非特權的 node 使用者執行。伺服器在 Host 與 Origin 標頭中只會回應 localhost、127.0.0.1 與 [::1],因此 -p 127.0.0.1:3000:3000 對應可直接運作;若要以其他名稱存取,請設定 -e FIRECRAWL_MCP_ALLOWED_HOSTS=<host>(參見 Streamable HTTP 本機模式)。
在 VS Code 上執行
若要一鍵安裝,請點擊下方的其中一個安裝按鈕...
若要手動安裝,請將以下 JSON 區塊加入 VS Code 中的 User Settings (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 key- 使用雲端 API(預設)時為必需
- 使用搭配
FIRECRAWL_API_URL的自架執行個體時為選用
FIRECRAWL_API_URL(選用):自架執行個體的自訂 API 端點- 範例:
https://firecrawl.your-domain.com - 若未提供,將使用雲端 API(需要 API key)
- 範例:
FIRECRAWL_INTEGRATION(選用):供啟動此伺服器的應用程式(例如編輯器擴充功能)使用的整合標籤- 會作為 scrape、batch scrape、crawl、map、search、extract、agent、parse、interact 與 feedback 請求的
integration欄位傳送 - 請使用以
_開頭的值,例如_zed
- 會作為 scrape、batch scrape、crawl、map、search、extract、agent、parse、interact 與 feedback 請求的
本機 HTTP 模式
FIRECRAWL_MCP_ALLOWED_HOSTS(選填):伺服器以HTTP_STREAMABLE_SERVER=true或SSE_LOCAL=true回應的額外主機名稱或位址,以逗號分隔localhost、127.0.0.1、[::1]以及非萬用字元的HOST一律允許;連接埠會被忽略- 若請求的
Host或Origin標頭指定任何其他主機,會得到403,但對/health的GET與HEAD請求除外 *會關閉此檢查;不與CLOUD_SERVICE=true併用,後者會回應所有主機
MCP OAuth(Bearer 存取權杖)
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 bearer 權杖優先於x-firecrawl-api-key/x-api-key。 - stdio: 使用
FIRECRAWL_OAUTH_TOKEN提供靜態存取權杖,或繼續使用FIRECRAWL_API_KEY提供 API 金鑰。
僅使用存取權杖(fco_…)。重新整理權杖(fcr_…)必須在權杖端點交換,不可傳遞給 scrape/search API。
CLOUD_SERVICE=true
CLOUD_SERVICE=true 透過可串流 HTTP 在 PORT 上提供工具(預設 3000,繫結至 0.0.0.0),並採用更嚴格的預設值:每個請求都必須攜帶憑證(API 金鑰或 OAuth 存取權杖)、scrape 為唯讀(見下方 scrape 工具),且 firecrawl_parse 僅接受上傳。
FASTMCP_ENDPOINT 選擇工具介面:/v2/mcp(預設)為完整工具集、/v2/mcp-oauth 為帳戶介面,或 /v2/mcp-search 為僅搜尋工具(這也需要 FIRECRAWL_MCP_SEARCH_OAUTH_ONLY=true)。使用完整介面時,僅搜尋執行個體也會在連接埠 3001 上啟動;設定 FIRECRAWL_MCP_SEARCH_ENABLED=false 可將其關閉。
設定範例
雲端 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。如果您特別需要單一大量 API 操作,請在 MCP 之外使用 Firecrawl API 批次端點。
- 如果您需要在網站上探索 URL: 使用 map
- 如果您想搜尋網路以取得資訊: 使用 search
- 如果您有程式設計問題(函式庫、API 契約、錯誤訊息、已知錯誤):使用 developer search
- 如果您有法律或法規問題(法規、規章、法典、法院意見或其他美國政府出版品):使用 Firecrawl Government Index
- 如果您需要科學論文(生物醫學、生命科學、臨床或 arXiv 文獻):使用 research tools,其會搜尋論文摘要與全文。搭配
categories: ["research"]的search是另一回事:對一般網路結果套用網站篩選。 - 如果您需要傳回結構化資料的多來源研究、不知道 URL,或答案橫跨多個網站(實體及其欄位、清單、資料集):使用 agent
- 如果您想分析整個網站或區段: 使用 crawl(請設定限制!)
- 如果您需要互動式瀏覽器自動化(點擊、輸入、導覽):使用 interact 搭配 URL 以開啟新頁面,或在您已擷取頁面或需要更精細的 scrape 控制時使用 scrape + interact
- 如果您需要來自已編目提供者(Alexandria)的資料:使用
sources: ["alexandria"]搜尋、以 find_tools 檢視所選契約,並以 scrapealexandria執行
快速參考表
| 工具 | 最適合 | 傳回 |
|---|---|---|
| scrape | 單一頁面內容 | JSON(偏好)或 markdown |
| interact | 與 URL 或已擷取頁面互動 | 執行結果 + URL 模式的 scrapeId |
| map | 探索網站上的 URL | URL[] |
| crawl | 多頁擷取(含限制) | 內部輪詢後的最終 crawl 狀態/資料 |
| parse | 檔案與託管上傳參照 | markdown、JSON 或文件輸出 |
| search | 網路搜尋以取得資訊 | results[] |
| find_tools | Alexandria 目錄瀏覽與 URL 查詢 | 提供者、工具契約與 nextTool 導覽 |
| developer | 針對開發者來源的程式設計問題 | 含段落的 results[] |
| gov | 美國主要法律與法規資料 | 含摘要的 results[] |
| agent | 多來源研究、未知或眾多網站 | JSON(結構化資料) |
| monitor | 週期性頁面檢查 | monitor/check 中繼資料與差異 |
| research | 論文與 GitHub 儲存庫研究 | 研究結果與儲存庫相符項目 |
格式選擇指南
使用 scrape 時,請選擇正確的格式:
- JSON 格式(大多數情況建議使用): 當您需要頁面中的特定資料時使用。根據您需要擷取的內容定義結構描述。這可讓回應保持精簡,並避免內容視窗溢位。
- Markdown 格式(請謹慎使用): 僅在您確實需要完整頁面內容時使用,例如閱讀整篇文章以進行摘要,或分析頁面結構。
可用工具
1. Scrape 工具(firecrawl_scrape)
以進階選項從單一 URL 擷取內容。
最適合:
- 單一頁面內容擷取,當您確切知道哪個頁面包含資訊時。
不建議用於:
- 從多個頁面擷取內容(對已知 URL 使用重複的 scrape 呼叫,或先使用 map + scrape 探索 URL,或使用 crawl 取得完整頁面內容)
- 當您不確定哪個頁面包含資訊時(使用 search)
常見錯誤:
- 將 URL 清單傳遞給單一 scrape 呼叫。在 MCP 中對每個 URL 呼叫一次 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
}
}
使用範例(branding 格式 - 擷取品牌識別):
{
"name": "firecrawl_scrape",
"arguments": {
"url": "https://example.com",
"formats": ["branding"]
}
}
Branding 格式: 擷取完整的品牌識別(色彩、字型、字體排印、間距、標誌、UI 元件),以供設計分析或樣式複製。
隱私: 設定 redactPII: true 以傳回已遮蔽個人可識別資訊的內容。
搭配 CLOUD_SERVICE=true: scrape 為唯讀。它不接受瀏覽器 actions,也無法接受提供者條款。具名的 profile 會載入已儲存的瀏覽器狀態,但不會將變更儲存至其中,而完整端點的 firecrawl_search 也會以相同方式處理 scrapeOptions.profile。若要將瀏覽器狀態儲存至設定檔,請以 firecrawl_interact 開啟頁面(見下文)。組織管理員可在儀表板中接受條款。
傳回:
- JSON 結構化資料、markdown、branding 設定檔或指定的其他格式。
2. Map 工具(firecrawl_map)
對網站進行對應,以探索網站上所有已建立索引的 URL。
最適合:
- 在決定要擷取什麼之前探索網站上的 URL
- 尋找網站的特定區段
不建議用於:
- 當您已知道需要哪個特定 URL 時(使用 scrape)
- 當您需要頁面內容時(先對應再使用 scrape)
常見錯誤:
- 使用 crawl 而非 map 來探索 URL
提示範例:
「列出 example.com 上的所有 URL。」
使用範例:
{
"name": "firecrawl_map",
"arguments": {
"url": "https://example.com"
}
}
傳回:
- 在網站上找到的 URL 陣列
3. Search 工具(firecrawl_search)
搜尋網路,並可選擇從搜尋結果擷取內容。
最適合:
- 跨多個網站尋找特定資訊,當您不知道哪個網站有該資訊時。
- 當您需要查詢最相關的內容時
不建議用於:
- 當您已知道要擷取哪個網站時(使用 scrape)
- 當您需要單一網站的全面涵蓋時(使用 map 或 crawl)
常見錯誤:
- 對開放式問題使用 crawl 或 map(改用 search)
使用範例:
{
"name": "firecrawl_search",
"arguments": {
"query": "remote work stipend policies at tech companies",
"highlights": true,
"limit": 5,
"lang": "en",
"country": "us"
}
}
若要在同一次呼叫中取得幾個結果的全文,請加入 "scrapeOptions": { "formats": ["markdown"], "onlyMainContent": true }。每個擷取的結果都會以一次 scrape 計費,因此對大多數問題,請使用摘錄,並僅對您需要的 URL 使用 firecrawl_scrape。
將 highlights 設為 true 以要求與查詢相關的重點,或設為 false 以保留原始搜尋摘要。省略則使用 API 的預設行為。
加入 "sources": ["alexandria"] 以在 data.tools 中進行語意工具探索,可選擇與 web/news/images 混合。查詢為必填。使用 firecrawl_find_tools 進行情境查閱與漸進式揭露;請參閱 Alexandria Tools。
關於科學論文,請參閱 Research Tools:其會搜尋論文摘要與全文,而此處的 categories: ["research"] 會將一般網路結果篩選為研究相關網站。
傳回:
- 依來源分組的搜尋結果(
data.web、data.images、data.news),可選擇包含已擷取的內容,另加一個id欄位。每個結果都帶有source與從 1 開始編號的position,在其所屬群組內從 1 開始編號 — 請將此配對直接複製到firecrawl_search_feedback的valuableResults,而非計算陣列元素。在您使用結果後,將該id傳遞給firecrawl_search_feedback,以退還 1 點額度(搜尋花費 2 點)並改善搜尋品質。
提示範例:
「比較各科技公司的遠端工作津貼政策。」
3b. Search 意見回饋工具(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。這是一個陣列,包含 agent 預期找到但實際上並未找到的特定內容片段。每個缺少的主題對應一個項目;這些項目會跨團隊彙總,告訴我們接下來該索引什麼。若要獲得有用的結果,請使用 valuableResults,並在每個結果上標記 source/position 配對——結果會分組,且每個群組各自從 1 開始編號,因此兩者都必須提供。請列出每一個有用的結果(未列出的結果會被視為無用),並將 valuableSources 保留給不在回傳結果之中的有用 URL。
每日退款上限(每個團隊、每個 UTC 日,預設 100 點數)。 一旦團隊的 creditsRefundedToday 達到 dailyRefundCap,後續提交仍會記錄回饋,但不再退還點數。回應會設定 dailyCapReached: true。當 agent 看到該旗標時,應在當天剩餘的 UTC 時間內停止呼叫此工具。
使用範例:
{
"name": "firecrawl_search_feedback",
"arguments": {
"searchId": "0193f6c5-1234-7890-abcd-1234567890ab",
"rating": "good",
"valuableResults": [
{ "source": "web", "position": 1 },
{ "source": "web", "position": 3 },
{ "source": "news", "position": 2, "reason": "Broke the pricing change." }
],
"valuableSources": [
{
"url": "https://docs.firecrawl.dev/pricing",
"reason": "Not in the results; found via a result's pricing link. Answered the question."
}
],
"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 工具將不會被註冊,因此 agent 無法呼叫它。
使用範例:
{
"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?, websiteCapReached?, alreadySubmitted?, warning? }JSON。
4. 爬取工具(firecrawl_crawl)
啟動爬取任務、輪詢直到進入終止狀態,並回傳最終的爬取狀態/資料。
最適合:
- 從多個相關頁面擷取內容,且你需要全面的涵蓋範圍時。
不建議用於:
- 從單一頁面擷取內容(請使用 scrape)
- 當 token 上限是考量因素時(請使用 map + scrape 以獲得更精確的控制)
- 當你需要快速取得結果時(爬取可能很慢)
警告: 爬取回應可能非常龐大,並可能超出 token 上限。請限制爬取深度與頁面數量,或使用 map + scrape 以獲得更精確的控制。
常見錯誤:
- 將 limit 或 maxDiscoveryDepth 設得太高(導致 token 溢出)
- 對單一頁面使用 crawl(請改用 scrape)
提示範例:
「取得 example.com/blog 前兩層的所有部落格文章。」
使用範例:
{
"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 端點解析本機檔案或託管的上傳參照。
最適合: 需要 markdown 或結構化 JSON 輸出的 PDF、Word 文件、試算表、HTML 檔案及其他文件。託管端點採用兩步驟上傳流程;本機直接讀取檔案需要自架的 FIRECRAWL_API_URL。
不建議用於: 遠端 URL(請使用 scrape)、在單次呼叫中處理多個檔案(請對每個檔案各呼叫一次 parse),或僅限瀏覽器的動作,例如截圖與點擊。
託管端點: 它無法讀取你的檔案系統。請以 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. 使用 Scrape JSON 取得結構化資料
若要從已知頁面取得結構化資料,請以 formats: ["json"] 對每個 URL 呼叫一次 firecrawl_scrape。將擷取提示與 JSON schema 放入 jsonOptions。
{
"name": "firecrawl_scrape",
"arguments": {
"url": "https://example.com/product",
"formats": ["json"],
"jsonOptions": {
"prompt": "Extract the product name, price, and description.",
"schema": {
"type": "object",
"properties": {
"name": { "type": "string" },
"price": { "type": "number" },
"description": { "type": "string" }
},
"required": ["name", "price"]
}
}
}
}
當 URL 未知,或資料橫跨多個網站時,請使用 firecrawl_agent 進行多來源研究。
8. Agent 工具(firecrawl_agent)
自主網路研究 agent,當你不知道 URL,或答案橫跨多個網站時,會回傳結構化資料。描述你需要的欄位,可選擇性地傳入 JSON schema 與種子 URL,agent 便會搜尋、瀏覽、讀取頁面,並回傳跨來源彙整的 JSON。適用於實體及其欄位、清單與資料集,以及需要瀏覽才能取得資料的頁面。若只有一個已知 URL,請改用 firecrawl_scrape 搭配 JSON 格式。
運作方式:
agent 會執行網路搜尋、追蹤連結、讀取頁面,並自主蒐集資料。此流程以非同步方式執行——它會立即回傳任務 ID,你則輪詢 firecrawl_agent_status 以檢查何時完成並取得結果。
非同步工作流程:
- 以你的提示/schema 呼叫
firecrawl_agent→ 回傳任務 ID - 在 agent 研究期間進行其他工作(複雜查詢可能需要數分鐘)
- 以任務 ID 輪詢
firecrawl_agent_status以檢查進度 - 當狀態為「completed」時,回應會包含擷取到的資料
最適合:
- 你不知道確切 URL 的複雜研究任務
- 多來源資料蒐集
- 尋找散落於網路各處的資訊
- 你可以在等待結果期間進行其他工作的任務
不建議用於:
- 你知道 URL 的簡單單頁擷取(請使用 scrape 搭配 JSON 格式——更快且更便宜)
參數:
prompt:以自然語言描述你想要的資料(必填,最多 10,000 個字元)urls:選用的 URL 陣列,用於讓 agent 聚焦於特定頁面schema:選用的 JSON schema,用於結構化輸出effort:選用。agent 任務的"low"、"medium"或"high"推理預算。maxCredits:選用的正整數。此次執行的點數花費上限。省略時 API 預設為 2,500,並將免費請求上限設為 2,500。strictConstrainToURLs:選用的布林值。若為true,agent 只會造訪urls中的 URL。threadId:選用。接續現有執行緒:來自先前firecrawl_agent或firecrawl_agent_status結果的threadId。省略則開始新的執行緒。在後續追問時,省略的mode、urls、schema與exchange設定會沿用上一輪的值。mode:選用。"extract"(預設)會在每一輪回傳完整的結構化結果。"chat"讓未要求新資料的後續追問能以message取得簡短回覆,而不必重新執行;exchange.requireApproval需要它。exchange:選用。本輪的 Alexandria 供應商設定,會原樣轉送至POST /v2/agent:enabled、toolkits(最多 5 個供應商 slug)、maxCalls(1 到 30)、requireApproval(付費呼叫會以pendingApproval結束該輪;需在同一次呼叫中設定mode: "chat",即使是後續追問也一樣)onTermsRequired:當 agent 會使用的 Alexandria 供應商需要你的團隊尚未接受的資料條款時該怎麼做。受閘門限制的供應商在任何模式下都不會被呼叫。在後續追問時省略,會保留上一輪的值。"skip"(預設):僅以已接受的供應商作答。狀態結果上的exchange.skippedProviders會列出原本有幫助但受閘門限制的供應商。"ask":同上,另附條款pendingApproval與exchange.requiresAction,包含核准 ID 與供應商要求。使用terms/show閱讀條款;由組織管理員在 Firecrawl 儀表板中接受。
approve:{ approvalId, callIds?, always? }表示對上一輪結束時提出的pendingApproval回答同意。callIds與always僅適用於付費呼叫的核准。decline:{ approvalId }表示回答不同意。拒絕條款提案會讓這些供應商在該執行緒剩餘部分中被排除。approve與decline需要threadId,且兩者只能傳送其中一個。
供應商條款(詢問模式): 沒有自動接受模式。當某一輪以條款提案結束時,狀態結果會帶有 pendingApproval(kind: "terms")與 exchange.requiresAction,其中包含 approvalId 與供應商要求。該 API 承載內容中的任何 terms/accept 描述元都無法透過 MCP 取得。若要使用該供應商:
- 向使用者顯示條款(
terms/show至firecrawl_scrape,搭配alexandria)。 - 指示組織管理員在供應商的 URL 或資料來源設定中接受條款。提出資料請求並不代表同意。
- 等待管理員在儀表板中確認接受。
- 接續同一執行緒:以相同的
threadId與exchange.approve: { "approvalId": "..." }呼叫firecrawl_agent。這會恢復研究,並不會接受條款。
若使用者表示不同意,請改以相同的 threadId 與 exchange.decline: { "approvalId": "..." } 呼叫 firecrawl_agent。
提示範例:
「找出 Firecrawl 的創辦人及其背景」
使用範例(啟動 agent,然後輪詢結果):
{
"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——agent 聚焦於特定頁面):
{
"name": "firecrawl_agent",
"arguments": {
"urls": ["https://docs.firecrawl.dev", "https://firecrawl.dev/pricing"],
"prompt": "Compare the features and pricing information from these pages"
}
}
使用範例(在同一執行緒上後續追問):
{
"name": "firecrawl_agent",
"arguments": {
"prompt": "Only keep the startups based in Europe",
"threadId": "0199a1b2-0000-7000-8000-000000000031"
}
}
使用範例(在管理員確認儀表板接受後接續執行緒):
{
"name": "firecrawl_agent",
"arguments": {
"prompt": "The admin confirmed acceptance of the Apollo terms in the dashboard. Continue.",
"threadId": "0199a1b2-0000-7000-8000-000000000031",
"exchange": { "approve": { "approvalId": "0199a1b2-0000-7000-8000-000000000033" } }
}
}
回傳:
- 用於檢查狀態的任務 ID,以及
threadId與threadTurn。使用firecrawl_agent_status輪詢結果。
9. 檢查 Agent 狀態(firecrawl_agent_status)
檢查 agent 任務的狀態,並在完成時取得結果。用於在啟動 agent 後輪詢結果。
輪詢模式: 複雜查詢的 agent 研究可能需要數分鐘。請定期輪詢此端點(例如每 10-30 秒一次),直到狀態為「completed」或「failed」。
{
"name": "firecrawl_agent_status",
"arguments": {
"id": "550e8400-e29b-41d4-a716-446655440000"
}
}
可能的狀態:
processing:agent 仍在研究——請稍後再檢查completed:研究完成——回應包含擷取到的資料failed:發生錯誤
10. 互動工具(firecrawl_interact)
與全新的 URL 互動,或與已由 firecrawl_scrape 開啟的頁面互動。
最適合: 在無需還原已棄用的瀏覽器工具的情況下,對動態頁面進行點擊、輸入、瀏覽及擷取狀態。
使用選項:
- 傳入
url,在單次 MCP 呼叫中擷取並開啟頁面以供互動。 - 傳入
scrapeId,繼續與現有已擷取的頁面互動。 - 若要將瀏覽器狀態(cookies、localStorage)儲存至具名設定檔,請傳入
url搭配scrapeOptions: { "profile": { "name": "my-profile", "saveChanges": true } }。狀態會在firecrawl_interact_stop結束工作階段時儲存。 - 請恰好傳入
url或scrapeId其中之一,再加上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 儲存庫。
涵蓋範圍: 生物醫學、生命科學與臨床文獻(PubMed、bioRxiv、medRxiv)以及 arXiv 和其他科學來源的論文摘要與全文。
可用的研究工具:
firecrawl_research_search_papers:以自然語言查詢搜尋論文中介資料與摘要,可選用作者、類別與日期篩選條件。firecrawl_research_inspect_paper:擷取單一論文 ID(arXiv、PMC、PMID 或 DOI)的標準中介資料。firecrawl_research_related_papers:從一或多篇錨定論文出發,透過引用圖譜向外擴展。firecrawl_research_read_paper:讀取特定論文的全文段落。
最適合: 文獻回顧、論文查詢與儲存庫探索工作流程,適合代理需要專注的研究介面而非一般網頁搜尋的情況。
firecrawl_search 搭配 categories: ["research"] 是另一個不同的介面:它會將一般網頁結果篩選為研究相關網站,並傳回頁面摘要,而非論文記錄。當問題是關於文獻本身時,請使用這些工具,並以同一問題的數種不同表述分別傳入,因為它們會呈現與單一查詢不同的論文。
13. 監控工具(firecrawl_monitor_*)
建立並管理週期性頁面監控。監控會依排程執行擷取或爬取,將每次結果與上次保留的快照進行差異比對,並可透過 webhook 或電子郵件通知。
最適合:
- 長期觀察單一頁面或少數頁面
- 使用白話目標對有意義的變更發出警示
- 追蹤檢查歷史與頁面層級的差異
建議的建立模式:
使用 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。
14. 開發者搜尋工具(firecrawl_developer_search)
搜尋專為程式設計代理建立的索引。該索引涵蓋 GitHub issue、已合併的 pull request、儲存庫 README 與程式碼文件。
最適合: 程式設計問題:程式碼行為、函式庫或框架、API 契約、錯誤訊息或已知錯誤。
引數:
{
"name": "firecrawl_developer_search",
"arguments": {
"query": "how do I configure retries",
"k": 10,
"skills": "only"
}
}
query(必填):開發者問題或搜尋詞。k:排序結果的數量。預設為 10,上限為 100。skills:設為"only"以僅搜尋代理技能檔案。
傳回: 排序後的結果。每筆結果包含 ID、來源類型(issue、pull_request、readme 或 doc)、URL、標題,以及以 markdown 呈現的相符段落。
firecrawl_search 搭配 categories: ["developer"] 會在網頁結果旁搜尋相同索引。當你想要相符段落、skills 篩選,或回應中不含網頁結果時,請改用此工具。僅搜尋端點會同時提供這兩種工具,該處也適用相同的選擇。
14b. 政府索引搜尋工具(firecrawl_gov_search)
搜尋來自美國聯邦、州與地方政府來源的主要法律與法規資料:法規、規章、法典、法院意見書與其他政府出版品。
最適合: 需要具拘束力文本或官方政府來源的法律或法規問題。
引數:
{
"name": "firecrawl_gov_search",
"arguments": {
"query": "excessive force claims against police officers",
"k": 10,
"courtType": "federal-appellate",
"cites": "42 U.S.C. § 1983"
}
}
query(必填):法律或法規問題或搜尋詞。k:排序結果的數量。預設為 10,上限為 100。jurisdiction:僅保留單一司法管轄區的頁面:"us"代表聯邦,或"us-"加上兩個字母的州或領地代碼,例如"us-ca"或"us-dc"。court:僅保留標記為特定法院的頁面,依 CourtListener 法院 ID,例如"scotus"、"ca9"或"nysd"。courtType:僅保留來自單一法院類型的頁面:federal-supreme、federal-appellate、federal-district、federal-bankruptcy、federal-special、military、state-supreme、state-appellate、state-trial、state-special或state-attorney-general。cites:僅保留引用某一法律或案例的頁面,以印刷引用格式如"42 U.S.C. § 1983"或"5 U.S. 137",或引用 ID 如"us:usc:42:1983"表示。domain:僅保留來自單一網站的頁面,例如"irs.gov"。
篩選條件為選用且可組合:結果必須符合所有已設定的篩選條件。篩選只會保留索引已標記的頁面,因此經過篩選的搜尋可能漏掉相關頁面,而沒有結果並不代表不存在。法院標記在聯邦法院與判例法集合中最為完整。
傳回: 排序後的結果。每筆結果包含位置、標題、URL 與相符摘要。僅搜尋端點也會提供此工具。
firecrawl_search 搭配 categories: ["gov"] 會搜尋相同來源,並以 data.web 搭配 category: "gov" 傳回命中結果。gov 類別不接受這些篩選條件,且無法與其他類別合併使用。
15. Alexandria 工具
Firecrawl Alexandria 是可透過 Firecrawl API 存取的資料提供者目錄,需在具備 Alexandria 存取權的團隊中使用 Firecrawl API 金鑰。無金鑰工作階段(託管或本機)會取得 Alexandria requires an API key on a team with Alexandria access;託管的無金鑰工作階段不會列出 Alexandria 探索工具。
語意探索(firecrawl_search):
{
"name": "firecrawl_search",
"arguments": {
"query": "podcast conversations about AI agents",
"sources": ["web", "alexandria"],
"domainTools": true,
"limit": 2
}
}
data.tools 預設為精簡建議,包含提供者、能力與描述。設定 toolDetail: "summary" 可取得中介資料與導覽,或設定 toolDetail: "full" 可取得包含輸入、回應欄位與範例的契約。domainTools: true 會在同一陣列中為查詢提及與結果 URL 加入情境相符項目。檢查 warning 以了解無法使用探索的情況。搜尋需要查詢詞,且不接受目錄遍歷篩選條件。此探索功能在完整與僅搜尋的 MCP 介面上皆可使用。
漸進式揭露(firecrawl_find_tools):
{
"name": "firecrawl_find_tools",
"arguments": {
"providers": ["particle"],
"capabilities": ["podcasts/episodes/search"],
"expand": ["options", "response", "examples"],
"limit": 2
}
}
先不帶引數以取得類別,然後逐步縮小目錄範圍:
| 引數 | 結果 |
|---|---|
{} | 類別與簡短描述 |
{"categories":["podcasts"]} | 該類別中的提供者 |
{"categories":["podcasts"],"providers":["particle"]} | 精簡的工具名稱與描述 |
{"providers":["particle"],"capabilities":["podcasts/episodes/search"]} | 所選項目的完整輸入、限制、回應與範例 |
不需要群組跳轉。明確的 level 支援 categories、providers、groups 或 tools;明確的 expand 會選取契約區段。expand: [] 即使在選取能力時也能讓結果保持精簡。若需要廣泛的完整契約,請明確要求 level: "tools" 與 expand: ["options", "response", "examples"]。URL 可提供情境探索而不需擷取頁面。除非設定 includeCosts: true,否則工具結果會省略各能力的點數價格;後續的 nextTool 引數會保留該設定。
結果位於 data.alexandria[0].data。若要跟隨項目的 nextTool,請以其 arguments 呼叫其 name;頁面的 nextTool 會推進分頁。既有的 next 物件仍可透過 firecrawl_scrape 作為 Alexandria 探索呼叫使用。探索不消耗點數,且絕不會執行提供者工具。執行前請先閱讀所選的完整契約。
這些控制項需要對應的 Alexandria API 部署。
執行(firecrawl_scrape 搭配 alexandria): 傳入 alexandria 而非 url(兩者擇一,且僅能一個;也可提供 requestId 與 timeout)。可接受單一呼叫或最多十個呼叫的陣列。
{
"name": "firecrawl_scrape",
"arguments": {
"alexandria": [
{
"provider": "fred",
"capability": "series/observations",
"options": { "series_id": "CPIAUCSL" }
}
]
}
}
傳回: { success, scrape_id, requestId, data: { alexandria: [...], creditsCost } }。每個項目不是結果(provider、capability、data、records、upstreamStatus),就是帶有 code 的 error;批次不會因提供者錯誤而整體失敗,data.creditsCost 是該請求收取的總點數。Alexandria 錯誤主體(無 Alexandria 存取權的 403,以及 402/409 計費狀態)會以其 code 在頻內轉送。
執行會產生一個 x-request-id,並在成功或失敗時傳回。請以該 requestId 重試完全相同的承載內容;在結果不確定後不要建立新的 ID。API 會檢查可用點數。
若團隊尚未接受某 Alexandria 提供者的條款,該提供者會在執行任何內容前失敗,並傳回 HTTP 403 與以下主體:
{
"success": false,
"code": "THIRD_PARTY_DATA_TERMS_REQUIRED",
"error": "An organization admin must accept the benzinga provider's terms (version 2026-09-12-placeholder) before this request can run. Accept them at https://www.firecrawl.dev/app/alexandria/benzinga",
"requiresAction": {
"type": "accept_terms",
"terms": "benzinga",
"version": "2026-09-12-placeholder",
"url": "https://www.firecrawl.dev/app/alexandria/benzinga"
}
}
工具結果會將其轉送為錯誤,其中 structuredContent 帶有 code、status: 403、requestId、原樣不變的 requiresAction 物件,以及 next_actions(先 human_action_required 再 retry_same_request)。接受條款屬於法律行為,因此須由組織管理員在 Firecrawl 儀表板中接受,而非透過 MCP。請使用傳回的 nextTool 呼叫,透過 firecrawl_scrape 搭配 alexandria: [{provider: "firecrawl", capability: "terms/show", options: {provider: "<provider>"}}] 閱讀協議(與提供者執行分開傳送),並呈現給使用者。接著由組織管理員在 requiresAction.url,或於 https://www.firecrawl.dev/app/settings?tab=data-sources. 接受。firecrawl_scrape 會拒絕其他所有 terms/* 能力,因此不會變更帳戶。請求資料並不構成同意,也不會發生自動接受或不確定的重試。被封鎖的擷取不會收取點數。管理員確認接受後,請以完全相同的承載內容與 requestId 再次呼叫同一工具。
16. 點數用量工具
此工具需要已驗證的 Firecrawl 帳戶,且為唯讀。
firecrawl_credit_usage預設為{ "view": "current" },並回傳remainingCredits、planCredits、billingPeriodStart與billingPeriodEnd。當團隊有加購額度或贈與額度時,剩餘額度可能超過方案額度。- 對於包含
startDate、endDate與creditsUsed的日曆月期間,請傳入{ "view": "historical" }。傳入{ "byApiKey": true }也會選取歷史檢視,並依 API 金鑰拆分期間;此時每一列會包含apiKey。改為傳入{ "byEndpoint": true }則會依使用額度的端點(scrape、search、crawl、map、agent 等)拆分期間;此時每一列會包含endpoint。傳入{ "bin": "day" }可改為每個 UTC 日一個期間,而非每個日曆月一個期間。請勿將byApiKey與byEndpoint合併使用,也不要將其中任一項與{ "view": "current" }合併使用。最新期間的endDate可能為 null。若 Firecrawl API 尚未提供端點拆分或每日期間,結果會帶有notice與每月數據。
程式化使用(不穩定)
此套件也提供函式庫進入點,可將伺服器嵌入另一個執行環境。它不穩定:API、其選項與型別可能在任何版本中變更,包括次要版本與修補版本,因此請固定使用確切版本。
npm install --save-exact firecrawl-mcp zod
此範例使用 zod 定義工具參數,因此嵌入專案會將其安裝為自身的相依套件。
import { createFirecrawlMcpServer } from 'firecrawl-mcp/server';
import { z } from 'zod';
const server = createFirecrawlMcpServer({
transport: 'httpStream',
apiKey: process.env.FIRECRAWL_API_KEY,
unstable_hooks: {
registerExtraTools: (registrar) => {
registrar.addTool({
name: 'my_tool',
description: 'An extra tool served next to the Firecrawl tools.',
parameters: z.object({ text: z.string() }),
execute: async ({ text }) => text,
});
},
},
});
await server.start({
transportType: 'httpStream',
httpStream: { port: 3000, host: '127.0.0.1', endpoint: '/mcp', stateless: true },
});
// MCP endpoint: http://127.0.0.1:3000/mcp
請明確設定 host。若未設定,伺服器會監聽 localhost,而 Node 會將其繫結至單一位址(通常僅為 ::1),因此對 127.0.0.1 的請求會被拒絕。只有在具備網路存取控制或 unstable_hooks.authenticate 檢查的情況下,才使用 0.0.0.0 或 :: 接受來自其他機器的連線:若無此類控制,任何能連上該連接埠的呼叫者都會以設定的 apiKey 提供服務。
除非有要求,否則此函式庫不會檢查 Host 或 Origin,且其 CORS 標頭允許任何來源。若伺服器可從同一台機器上的瀏覽器存取,應傳入 httpStream.allowedHosts(例如 ['localhost', '127.0.0.1', '[::1]']):此時若請求的 Host 或 Origin 標頭指向其他主機,便會得到 403(健康檢查路徑上的 GET 與 HEAD 除外),且 CORS 標頭會回傳允許的來源。命令列會在本地 HTTP 模式下設定此清單。
選項對應 CLI 的環境變數:apiUrl、apiKey、transport、logging、safeMode、fileAccess(local 或 upload)、requireCredential、searchFeedback 與 endpointFeedback。unstable_hooks 接受:
| Hook | 用途 |
|---|---|
authenticate(request) | 為請求解析工作階段;擲出 Response 以拒絕請求。 |
wrapTool(tool) | 裝飾每個已註冊的工具。 |
onToolResult(event) | 觀察每次工具呼叫的開始與結果。 |
instructions | 伺服器指示,或從預設值中選擇的函式。 |
registerExtraTools(registrar, context) | 在內建工具之後新增工具。 |
outboundRequest(session) | 每次 Firecrawl API 請求的憑證與額外標頭。 |
beforeKeylessRequest(session, origin) | 擲出例外以拒絕無金鑰的請求。 |
toolFilter(name) | 將內建工具排除於執行個體之外。 |
configureHttp(app) | 新增 HTTP 路由。 |
oauth.protectedResource | 提供 OAuth 受保護資源中繼資料。 |
此伺服器建構於官方 MCP TypeScript SDK(@modelcontextprotocol/server)之上。請使用從 firecrawl-mcp/server 匯出的型別(Session、ToolDefinition、ToolRegistrar、FirecrawlMcpServerHooks 等),而非 SDK 自身的型別。
此進入點也匯出內建工具所使用的輔助函式,例如 recoveryPayload、normalizeHeader、requestOrigin、isRuntimeUserAgent、initializeClientSlug、searchToolBaseFields、searchOutputSchema 與 structuredCompact,讓額外的工具與 hook 能與內建行為一致。它們同樣不穩定。
記錄系統
此伺服器包含完整的記錄功能:
- 操作狀態與進度
- 效能指標
- 速率限制追蹤
- 錯誤狀況
記錄訊息範例:
[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 檔案
結構化資料與大型結果
已驗證的搜尋預設會使用網頁結果、語意 Alexandria 工具與網域比對。請從實際問題開始。使用 firecrawl_find_tools 進行直接的語意工具查詢、選定的契約,或漸進式瀏覽:類別 → 提供者 → 精簡工具 → 選定契約。透過 firecrawl_scrape 執行工具;一般的 URL 擷取與搜尋絕不會自動執行提供者工具。
對於選定的契約,優先使用 expand: ["options", "response"],且僅在輸入結構不清楚時才請求範例。一併檢視相關能力,並重複使用回傳的契約。
對於可能很大的工作流程結果,請在執行前提供並保留頂層的 requestId。即使用戶端拒絕回應,該 ID 仍會保留。一般 URL 擷取則改用回傳的擷取 ID。
對於大型的保留工作流程或一般擷取結果,請以下列方式呼叫 firecrawl_scrape:
{
"alexandria": {
"provider": "firecrawl",
"capability": "bash",
"options": {
"requestId": "<source-request-or-scrape-id>",
"command": "ls -lh"
}
}
}
在 data.alexandria[0].data 中讀取 stdout、stderr、exitCode 與 workspaceId。接著使用 options: {workspaceId, command} 搭配 jq 檢視 response.json,或針對一般擷取使用有界文字命令搭配 document.md 檢視。請保持輸出精簡。來源載入必須是獨立呼叫;其巢狀來源 ID 與頂層執行請求 ID 不同。工作區在閒置五分鐘後過期,且並非每個結果都會保留(包括 ZDR 與 API 提供者工作流程承載資料)。不支援搜尋 ID。
對於工作流程來源,response.json 會保留 API 封裝:先選取 .data.alexandria[].data,然後在非空時選取所選契約的 response.key。當結構已知時,請在單一 Bash 命令中合併相關計數與投影,而非反覆檢視鍵。
超過 20,000 個估計 token(序列化 UTF-8 位元組除以四)的成功 Alexandria 執行回應,會在遠端 Bash 確認完整批次可存取後回傳一個小型交接。請依照 nextTool 檢視保留的資料。這會增加一次 Bash 呼叫,並啟動一個閒置 TTL 為五分鐘的工作區。完整承載資料會保留。若確認失敗,原始回應會保持內嵌。搜尋、一般 URL 擷取、錯誤回應與 Firecrawl 公用程式呼叫皆不變。此傳遞預算不會衡量用戶端剩餘的上下文;也不會新增程序本機的結果快取。當有本機檔案系統工具可用時,儲存 CLI 輸出並讀取選定區段是另一個選項。
CLI 探索順序對應至下列 MCP 呼叫:
| 意圖 | 工具 | 引數 |
|---|---|---|
| 網頁 + 語意 + 網域工具 | firecrawl_search | {"query":"<user question>"} |
| 僅語意工具 | firecrawl_search | {"query":"<user question>","sources":["alexandria"]} |
| 類別 | firecrawl_find_tools | {} |
| 類別中的提供者 | firecrawl_find_tools | {"categories":["<category-id>"]} |
| 精簡提供者工具 | firecrawl_find_tools | {"providers":["<provider-id>"]} |
| 選定契約 | firecrawl_find_tools | {"providers":["<provider-id>"],"capabilities":["<capability-id>"]} |
| 執行 | firecrawl_scrape | {"alexandria":{"provider":"<provider-id>","capability":"<capability-id>","options":{"<required-field>":"<value>"}}} |
尋找工具與執行在完整介面與搜尋介面上皆可使用。若搜尋結果中存在完整的契約,請重複使用,而非再進行一次探索呼叫。僅在需要更多結果時,才依照回傳的 nextTool 導覽。
Alexandria 工作階段回饋
現有的 firecrawl_feedback 工具接受 endpoint: "alexandria":
{
"endpoint": "alexandria",
"rating": "partial",
"requestedWebsite": {
"url": "https://example.com",
"requestedFunctionality": "Find records and download their attachments"
},
"objective": "Compare contract requirements across agencies before bidding",
"rationale": "Found summaries but could not retrieve attachments"
}
選用的 objective 是工作階段的底層目標:代理或其使用者最終試圖達成的事,而不只是 requestedWebsite 中的單一網站。
這會使用已驗證的 POST /v2/feedback,且不帶作業 ID。它必須在團隊最近一次 Alexandria 搜尋、探索或執行後的 20 分鐘內送達;較晚的回饋會以 FEEDBACK_WINDOW_EXPIRED 拒絕。符合資格的回饋可退還 1 點額度,但受每日上限限制:每個網站 10 點額度,每個團隊 100 點額度(UTC 日)。超過任一上限後,回饋仍會記錄但不退款,且回應會設定 websiteCapReached 或 dailyCapReached。選用的 providerFeedback 與 capabilityFeedback 陣列描述涵蓋範圍缺口與執行問題;工具結構描述會列出支援的問題值。new_capability_request 需要 requestedFunctionality;missing_capability(提供者存在但缺少該能力)則不需要。現有的回饋退出與驗證控制仍適用。
符合資格的 Alexandria 執行與探索結果會包含 feedbackTool 指標,其中帶有工具名稱與引數骨架。對於 Firecrawl 內部呼叫(例如 bash),以及當 firecrawl_feedback 未註冊時(FIRECRAWL_NO_ENDPOINT_FEEDBACK 或無金鑰啟動),則會省略此指標。