Firecrawl MCP
ทางการเพิ่มความสามารถในการขูดข้อมูลเว็บและการค้นหาอันทรงพลังให้กับไคลเอนต์ LLM เช่น Cursor และ Claude
คุณทำอะไรได้บ้างด้วย Firecrawl MCP?
- ดึงข้อมูลจาก URL ที่รู้อยู่แล้ว — สั่งให้ผู้ช่วยดึงหน้าเว็บเดียวออกมาเป็น Markdown ที่สะอาดหรือ JSON แบบมีโครงสร้างตามสคีมาที่คุณกำหนดผ่าน
firecrawl_scrape - ค้นหา URL ของเว็บไซต์ — ให้มันแสดงรายการ URL ที่ถูกจัดดัชนีบนเว็บไซต์ด้วย
firecrawl_mapก่อนตัดสินใจว่าจะดึงหน้าไหน - ค้นหาเว็บ — รับผลลัพธ์ที่จัดอันดับสำหรับคำค้นด้วย
firecrawl_searchและเลือกดึงเนื้อหาเต็มของหน้าสำหรับผลลัพธ์บางรายการได้ - ครอวล์หลายหน้า — ดึงเนื้อหาทั่วทั้งเว็บไซต์ด้วย
firecrawl_crawlโดยจำกัดขอบเขตด้วยlimit,includePaths/excludePathsหรือmaxDiscoveryDepth - ควบคุมเบราว์เซอร์ — คลิก พิมพ์ กรอกฟอร์ม หรือนำทางในหน้าแบบไดนามิกด้วย
firecrawl_interactและทำเซสชันต่อเนื่องผ่านscrapeId - ตรวจสอบการใช้เครดิต — ถามว่าเหลือเครดิต Firecrawl เท่าไรหรือใช้ไปกับอะไรด้วย
firecrawl_credit_usage
เอกสาร
Firecrawl MCP Server
เซิร์ฟเวอร์ Model Context Protocol (MCP) ที่นำ Firecrawl ซึ่งเป็น Context API สำหรับ AI agent มาใช้กับไคลเอนต์ที่รองรับ MCP: ค้นหา, scrape และโต้ตอบกับเว็บแบบเรียลไทม์ แล้วรับผลลัพธ์กลับมาเป็น Markdown หรือข้อมูลแบบมีโครงสร้างที่สะอาด
ขอขอบคุณอย่างยิ่งแก่ @vrknetha, @knacklabs สำหรับการพัฒนาเริ่มต้น!
คุณสมบัติ
- ค้นหาเว็บ พร้อมตัวเลือกให้ดึงเนื้อหาเต็มของแต่ละผลลัพธ์
- ค้นหาในดัชนีสำหรับแหล่งข้อมูลนักพัฒนา (GitHub issues, merged pull requests, README และ docs), แหล่งข้อมูลรัฐบาลสหรัฐฯ และบทความทางวิทยาศาสตร์ (PubMed, bioRxiv, medRxiv, arXiv)
- Scrape URL ใดก็ได้ให้เป็น Markdown หรือ JSON แบบมีโครงสร้างที่สะอาด
- แยกวิเคราะห์ PDF และเอกสาร
- Crawl ไซต์เพื่อดึงเนื้อหาจากหลายหน้า หรือ map เพื่อค้นหา URL ของไซต์
- โต้ตอบกับหน้าเว็บในเบราว์เซอร์จริง: คลิก พิมพ์ กรอกฟอร์ม และนำทางในหน้าแบบไดนามิก
- รันงาน Agent สำหรับการวิจัยจากหลายแหล่งที่ส่งคืนข้อมูลแบบมีโครงสร้าง
- ติดตามหน้าเว็บและรับการแจ้งเตือนเมื่อเนื้อหาเปลี่ยนแปลง
- ตรวจสอบการใช้เครดิต Firecrawl ในปัจจุบันและย้อนหลัง
- ลองใหม่โดยอัตโนมัติและจำกัดอัตราการเรียก
- รองรับทั้งระบบคลาวด์และ self-hosted
- รองรับ SSE
ลองเล่นกับ MCP Server ของเราบน playground ของ MCP.so หรือบน Klavis AI
เมื่อใดควรใช้เซิร์ฟเวอร์นี้
- ใช้
firecrawl_scrapeเมื่อคุณมี URL ที่รู้อยู่แล้วและต้องการเนื้อหาเป็น markdown หรือเป็น JSON ที่ตรงกับ schema ที่คุณกำหนด - ใช้
firecrawl_mapเมื่อคุณต้องการค้นหา URL บนไซต์โดยไม่ดึงเนื้อหาของ URL เหล่านั้น - ใช้
firecrawl_crawlเมื่อคุณต้องการเนื้อหาจากหลายหน้าภายในไซต์; ตั้งค่าlimit,includePaths/excludePathsหรือmaxDiscoveryDepthเพื่อจำกัดขอบเขต - ใช้
firecrawl_searchเมื่อคุณเริ่มจากคำค้นหาแทนที่จะเป็น URL และต้องการผลลัพธ์เว็บที่จัดอันดับแล้ว ผลลัพธ์จะมีข้อความตัดตอน; ดึงหน้าเต็มด้วยfirecrawl_scrapeบน URL ที่คุณต้องการscrapeOptionsจะดึงหน้าเว็บของทุกผลลัพธ์ในการเรียกครั้งเดียวและคิดค่าบริการแต่ละรายการเป็น scrape ดังนั้นควรใช้เฉพาะเมื่อต้องการข้อความเต็มของผลลัพธ์เพียงไม่กี่รายการ (endpoint สำหรับค้นหาเท่านั้นจะไม่ดึงเนื้อหาเลย) - ใช้
firecrawl_interactเมื่อหน้าเว็บต้องมีการคลิก พิมพ์ หรือนำทางก่อนที่คุณจะอ่านได้: ส่งurlสำหรับหน้าใหม่ หรือscrapeIdเพื่อทำต่อบนหน้าที่คุณ scrape ไว้แล้ว - ใช้เครื่องมือ
firecrawl_monitor_*เมื่อหน้าเดิมต้องถูกตรวจสอบตามกำหนดเวลาซ้ำ ๆ พร้อม diff และการแจ้งเตือนการเปลี่ยนแปลง แทนที่จะดึงเพียงครั้งเดียว - ใช้
firecrawl_credit_usageเพื่อตรวจสอบเครดิตคงเหลือหรือเครดิตที่ใช้ไป แยกตามเดือนหรือวัน และอาจแยกตาม endpoint หรือ API key - พิจารณาใช้วิธีอื่นเมื่อคุณต้องคงเซสชันเบราว์เซอร์ไว้เปิดตลอดหลายขั้นตอนของคุณเอง พร้อมตรรกะการลองใหม่และการสิ้นสุดของคุณเอง: การเรียก
firecrawl_interactแต่ละครั้งจะรันpromptหรือcodeหนึ่งรอบจนเสร็จแล้วคืนการควบคุม เซสชันสามารถคงอยู่ข้ามการเรียกได้ผ่านscrapeIdและสิ้นสุดด้วยfirecrawl_interact_stopแต่คุณไม่สามารถขับเคลื่อนแบบโต้ตอบทีละขั้นจากฝั่งไคลเอนต์ภายในหนึ่งการเรียกได้
เซิร์ฟเวอร์นี้แสดงเครื่องมือ 27 รายการเมื่อโปรไฟล์เต็มลงทะเบียนด้วยการตั้งค่าเริ่มต้น (รวมเครื่องมือ feedback และไม่ได้รันในโหมด local-keyless) การตั้งค่า FIRECRAWL_NO_SEARCH_FEEDBACK=1 และ/หรือ FIRECRAWL_NO_ENDPOINT_FEEDBACK=1 จะลบเครื่องมือ feedback ที่เกี่ยวข้องออกและลดจำนวนนี้ลง เช่นเดียวกับการเริ่มต้นแบบ local keyless สำหรับไคลเอนต์ที่มีข้อจำกัดจำนวนช่องเครื่องมือ: endpoint แบบ keyless ที่โฮสต์ไว้ (https://mcp.firecrawl.dev/v2/mcp, ไม่ต้องใช้ API key) เปิดให้ใช้เพียง 3 รายการ (firecrawl_scrape, firecrawl_search, firecrawl_parse) และ endpoint สำหรับค้นหาเท่านั้น โดยเฉพาะ (https://mcp.firecrawl.dev/v2/mcp-search) เปิดให้ใช้ชุดเครื่องมือคงที่ 9 รายการ (search, developer, government และ research search พร้อมการค้นหาแคตตาล็อกและการเรียกใช้ Alexandria)
การติดตั้ง
Hosted MCP (ระดับฟรีแบบ keyless)
เชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลที่โฮสต์ไว้ได้โดยไม่ต้องตั้งค่า:
https://mcp.firecrawl.dev/v2/mcp
ในระดับฟรีแบบ keyless นั้น scrape, search และ parse ใช้งานได้โดยไม่ต้องใช้ API key (มีข้อจำกัดอัตราการเรียก) เครื่องมืออื่น ๆ เช่น crawl, map และ agent ยังคงต้องใช้ key
ควรใช้ OAuth หรือ API key ทุกครั้งที่ผู้ใช้สามารถสมัครได้ เพราะจะปลดล็อกชุดเครื่องมือเต็มและขีดจำกัดที่สูงขึ้น
สำหรับการเชื่อมต่อบัญชีแบบโต้ตอบ ให้กำหนดค่าไคลเอนต์ MCP ของคุณให้ใช้ URL ของเซิร์ฟเวอร์นี้ นี่คือ endpoint ของ MCP ไม่ใช่หน้าเว็บในเบราว์เซอร์; ใช้ขั้นตอนการเชื่อมต่อบัญชีของไคลเอนต์ และอย่าเพิ่มรายการเซิร์ฟเวอร์ Firecrawl รายการที่สองเมื่อเชื่อมต่อใหม่:
https://mcp.firecrawl.dev/v2/mcp-oauth
สำหรับการเชื่อมต่อด้วย API key (เช่น การผสานรวมแบบไม่ต้องมีผู้ดูแล) ให้คง URL ของเซิร์ฟเวอร์เป็น:
https://mcp.firecrawl.dev/v2/mcp
จากนั้นกำหนดค่าการตั้งค่า header หรือ secret ที่ปลอดภัยของไคลเอนต์ด้วย:
Authorization: Bearer <FIRECRAWL_API_KEY>
ห้ามใส่ API key ใน URL ของเซิร์ฟเวอร์ ห้ามใส่ API key ในแชทของ agent ให้กำหนดค่าโดยตรงในไคลเอนต์หรือตัวจัดการ secret ดูคู่มือการตั้งค่า MCP แบบโฮสต์ และคู่มือการเริ่มต้นใช้งานสำหรับ agent สำหรับคำแนะนำเฉพาะไคลเอนต์
การตั้งชื่อการผสานรวมของคุณ
การผสานรวมที่เชื่อมต่อผ่าน HTTP สามารถตั้งชื่อตัวเองได้ด้วย header X-Firecrawl-Origin ตัวอย่างเช่น X-Firecrawl-Origin: my-agent เซิร์ฟเวอร์จะรายงานชื่อนี้ไปยัง Firecrawl เป็น origin ของคำขอ mcp-my-agent@<server version> แทนชื่อไคลเอนต์หรือ User-Agent ที่จะรายงานตามปกติ ใช้ตัวอักษร ตัวเลข และขีดกลาง: อักขระอื่นแต่ละช่วงจะกลายเป็นขีดกลางหนึ่งตัว ขีดกลางที่นำหน้าและต่อท้ายจะถูกตัดออก และชื่อจะถูกตัดที่ 48 ตัวอักษร ผลลัพธ์ของเครื่องมือไม่ได้รับผลกระทบ มีเพียง origin ที่ส่งไปยัง Firecrawl API (และส่งต่อไปยัง beforeKeylessRequest ของ embedder) ที่เปลี่ยนไป
Endpoint สำหรับค้นหาเท่านั้น
พื้นผิวการค้นหาที่มีขอบเขตคงที่ก็ถูกโฮสต์ไว้ที่:
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 ของ endpoint นี้จะไม่ดึงเนื้อหาหน้าเว็บใด ๆ
การรันด้วย 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 server: คู่มือการกำหนดค่า Cursor MCP Server
การกำหนดค่า Firecrawl MCP ใน Cursor v0.48.6
- เปิด 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" } } } }
การกำหนดค่า Firecrawl MCP ใน Cursor v0.45.6
- เปิด 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 server เพื่อดูเครื่องมือใหม่ Composer Agent จะใช้ Firecrawl MCP โดยอัตโนมัติเมื่อเหมาะสม แต่คุณสามารถร้องขอได้อย่างชัดเจนโดยอธิบายสิ่งที่คุณต้องการจากเว็บ เข้าถึง Composer ผ่าน Command+L (Mac) เลือก "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 หรือ :: คำขอที่ header Host ระบุ host อื่น หรือที่ header Origin ระบุไซต์อื่น จะได้รับ 403 และ header CORS จะสะท้อน origin ที่อนุญาตแทน * คำขอ GET และ HEAD ไปยัง /health จะได้รับการตอบไม่ว่า host ใด เพื่อให้ health check ยังทำงานได้ และเซิร์ฟเวอร์จะบันทึกบรรทัดที่ระบุ FIRECRAWL_MCP_ALLOWED_HOSTS สำหรับทุกคำขอที่ปฏิเสธ สิ่งนี้ป้องกันไม่ให้หน้าเว็บที่คุณเยี่ยมชมเรียกเซิร์ฟเวอร์ในเครื่องผ่าน DNS rebinding หรือคำขอข้าม origin และใช้ FIRECRAWL_API_KEY ของเซิร์ฟเวอร์
หากต้องการเข้าถึงเซิร์ฟเวอร์ภายใต้ชื่อหรือที่อยู่อื่น เช่น hostname ที่อยู่หลัง reverse proxy หรือ LAN IP ให้ระบุไว้ใน FIRECRAWL_MCP_ALLOWED_HOSTS (คั่นด้วยจุลภาค; พอร์ตจะถูกละเว้น) รายการเดียวกันนี้กำหนดว่า origin ของเบราว์เซอร์ใดสามารถเรียกเซิร์ฟเวอร์ได้ reverse proxy บนเครื่องเดียวกันสามารถใช้ที่อยู่ bind เริ่มต้นได้:
env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY \
FIRECRAWL_MCP_ALLOWED_HOSTS=mcp.home.lan npx -y firecrawl-mcp
ไคลเอนต์บนเครื่องอื่นยังต้องให้เซิร์ฟเวอร์ฟังบนที่อยู่ที่ไม่ใช่ loopback ด้วย ดังนั้นให้ตั้งค่า 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=* จะปิดการตรวจสอบและคืนค่า header CORS แบบ wildcard ทำเช่นนี้เฉพาะเมื่อมีบางสิ่งด้านหน้าเซิร์ฟเวอร์ที่ตรวจสอบ host และ origin ด้วยตัวเองเท่านั้น
การรันด้วย 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 เท่านั้น; อย่าเปิดเผยให้กว้างกว่านี้เว้นแต่ไคลเอนต์ต้องส่ง key ของตัวเอง ตั้งค่า FIRECRAWL_API_URL เพื่อใช้ Firecrawl API แบบ self-hosted คอนเทนเนอร์รันในฐานะผู้ใช้ node ที่ไม่มีสิทธิ์พิเศษ เซิร์ฟเวอร์ตอบเฉพาะ localhost, 127.0.0.1 และ [::1] ใน header Host และ Origin ดังนั้นการแมป -p 127.0.0.1:3000:3000 จึงใช้งานได้ตามเดิม; หากต้องการเข้าถึงภายใต้ชื่ออื่น ให้ตั้งค่า -e FIRECRAWL_MCP_ALLOWED_HOSTS=<host> (ดู Streamable HTTP โหมดโลคอล)
การรันบน VS Code
สำหรับการติดตั้งในคลิกเดียว ให้คลิกปุ่มติดตั้งปุ่มใดปุ่มหนึ่งด้านล่าง...
สำหรับการติดตั้งด้วยตนเอง ให้เพิ่มบล็อก JSON ต่อไปนี้ลงในไฟล์ User Settings (JSON) ของคุณใน VS Code คุณสามารถทำได้โดยกด 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}"
}
}
}
}
การกำหนดค่า
ตัวแปรสภาพแวดล้อม
จำเป็นสำหรับ Cloud API
FIRECRAWL_API_KEY: Firecrawl API key ของคุณ- จำเป็นเมื่อใช้ cloud API (ค่าเริ่มต้น)
- ไม่บังคับเมื่อใช้ instance แบบ self-hosted ที่มี
FIRECRAWL_API_URL
FIRECRAWL_API_URL(ไม่บังคับ): endpoint ของ API แบบกำหนดเองสำหรับ instance แบบ self-hosted- ตัวอย่าง:
https://firecrawl.your-domain.com - หากไม่ระบุ จะใช้ cloud API (ต้องใช้ API key)
- ตัวอย่าง:
FIRECRAWL_INTEGRATION(ไม่บังคับ): แท็กการผสานรวมสำหรับแอปที่เปิดเซิร์ฟเวอร์นี้ เช่น ส่วนขยายของเอดิเตอร์- ส่งเป็นฟิลด์
integrationของคำขอ scrape, batch scrape, crawl, map, search, extract, agent, parse, interact และ feedback - ใช้ค่าที่ขึ้นต้นด้วย
_ตัวอย่างเช่น_zed
- ส่งเป็นฟิลด์
โหมด HTTP โลคอล
FIRECRAWL_MCP_ALLOWED_HOSTS(ไม่บังคับ): ชื่อโฮสต์หรือที่อยู่เพิ่มเติมที่เซิร์ฟเวอร์ตอบกลับด้วยHTTP_STREAMABLE_SERVER=trueหรือSSE_LOCAL=trueคั่นด้วยเครื่องหมายจุลภาคlocalhost,127.0.0.1,[::1]และHOSTที่ไม่ใช่ไวลด์การ์ดได้รับอนุญาตเสมอ พอร์ตจะถูกละเว้น- คำขอที่ส่วนหัว
HostหรือOriginระบุโฮสต์อื่นใดจะได้รับ403ยกเว้นคำขอGETและHEADไปยัง/health *ปิดการตรวจสอบนี้ ไม่ใช้ร่วมกับCLOUD_SERVICE=trueซึ่งตอบกลับทุกโฮสต์
MCP OAuth (โทเค็นการเข้าถึงแบบ Bearer)
Firecrawl ออก โทเค็นการเข้าถึง OAuth (fco_…) ผ่านเซิร์ฟเวอร์การอนุญาตบน firecrawl.dev เซิร์ฟเวอร์ MCP นี้จะส่งต่อข้อมูลรับรองใดก็ตามที่มันresolveได้ไปยัง Firecrawl API เป็น Authorization: Bearer …
- ทรานสปอร์ตแบบ HTTP stream (
CLOUD_SERVICE=true,HTTP_STREAMABLE_SERVER=trueหรือSSE_LOCAL=true): ไคลเอนต์ควรส่งAuthorization: Bearer <fco_access_token>ในคำขอ MCP โทเค็น Bearer ของ OAuth มีลำดับความสำคัญเหนือx-firecrawl-api-key/x-api-keyเมื่อมีทั้งสองอย่าง - stdio: ใช้
FIRECRAWL_OAUTH_TOKENสำหรับโทเค็นการเข้าถึงแบบคงที่ หรือใช้FIRECRAWL_API_KEYต่อไปสำหรับคีย์ API
ใช้ โทเค็นการเข้าถึง (fco_…) เท่านั้น โทเค็นรีเฟรช (fcr_…) ต้องแลกเปลี่ยนที่ปลายทางโทเค็น ไม่ใช่ส่งไปยัง API การ scrape/search
CLOUD_SERVICE=true
CLOUD_SERVICE=true ให้บริการเครื่องมือผ่าน streamable 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 ที่รู้จัก: เรียก scrape สำหรับแต่ละ URL หากคุณต้องการการดำเนินการ API แบบกลุ่มเพียงครั้งเดียวโดยเฉพาะ ให้ใช้ปลายทาง batch ของ Firecrawl API นอก MCP
- หากคุณต้องการค้นหา URL บนเว็บไซต์: ใช้ map
- หากคุณต้องการค้นหาข้อมูลบนเว็บ: ใช้ search
- หากคุณมีคำถามด้านการเขียนโปรแกรม (ไลบรารี สัญญา API ข้อความแสดงข้อผิดพลาด บั๊กที่รู้จัก): ใช้ developer search
- หากคุณมีคำถามด้านกฎหมายหรือกฎระเบียบ (กฎหมาย ข้อบังคับ ประมวลกฎหมาย คำพิพากษาของศาล หรือสิ่งพิมพ์อื่นของรัฐบาลสหรัฐฯ): ใช้ Firecrawl Government Index
- หากคุณต้องการบทความทางวิทยาศาสตร์ (ชีวการแพทย์ วิทยาศาสตร์ชีวภาพ คลินิก หรือวรรณกรรม arXiv): ใช้ research tools ซึ่งค้นหาบทคัดย่อและข้อความเต็มของบทความ
searchกับcategories: ["research"]เป็นสิ่งที่แตกต่างกัน: ตัวกรองเว็บไซต์เหนือผลลัพธ์เว็บทั่วไป - หากคุณต้องการการวิจัยหลายแหล่งที่ส่งคืนข้อมูลที่มีโครงสร้าง ไม่รู้ URL หรือคำตอบครอบคลุมหลายเว็บไซต์ (เอนทิตีพร้อมฟิลด์ รายการ ชุดข้อมูล): ใช้ agent
- หากคุณต้องการวิเคราะห์ทั้งเว็บไซต์หรือส่วนหนึ่ง: ใช้ crawl (พร้อมขีดจำกัด!)
- หากคุณต้องการระบบอัตโนมัติของเบราว์เซอร์แบบโต้ตอบ (คลิก พิมพ์ นำทาง): ใช้ interact กับ URL สำหรับหน้าใหม่ หรือ scrape + interact เมื่อคุณ scrape หน้าไปแล้วหรือต้องการควบคุมการ scrape ที่แน่นหนากว่า
- หากคุณต้องการข้อมูลจากผู้ให้บริการที่อยู่ในแคตตาล็อก (Alexandria): ค้นหาด้วย
sources: ["alexandria"]ตรวจสอบสัญญาที่เลือกด้วย find_tools และดำเนินการด้วย scrapealexandria
ตารางอ้างอิงด่วน
| เครื่องมือ | เหมาะที่สุดสำหรับ | ส่งคืน |
|---|---|---|
| scrape | เนื้อหาหน้าเดียว | JSON (แนะนำ) หรือ markdown |
| interact | โต้ตอบกับ URL หรือหน้าที่ scrape แล้ว | ผลลัพธ์การดำเนินการ + scrapeId สำหรับโหมด URL |
| map | ค้นหา URL บนเว็บไซต์ | URL[] |
| crawl | การดึงข้อมูลหลายหน้า (พร้อมขีดจำกัด) | สถานะ/ข้อมูล crawl สุดท้ายหลังการ polling ภายใน |
| parse | ไฟล์และ ref การอัปโหลดที่โฮสต์ | markdown, JSON หรือเอาต์พุตเอกสาร |
| search | ค้นหาเว็บสำหรับข้อมูล | results[] |
| find_tools | การเรียกดูแคตตาล็อก Alexandria และการค้นหา URL | ผู้ให้บริการ สัญญาเครื่องมือ และการนำทาง nextTool |
| developer | คำถามด้านการเขียนโปรแกรมจากแหล่งนักพัฒนา | results[] พร้อมข้อความ |
| gov | กฎหมายหลักและเอกสารกำกับดูแลของสหรัฐฯ | results[] พร้อมตัวอย่างข้อความ |
| agent | การวิจัยหลายแหล่ง เว็บไซต์ที่ไม่รู้จักหรือมีหลายแห่ง | JSON (ข้อมูลที่มีโครงสร้าง) |
| monitor | การตรวจสอบหน้าเป็นระยะ | เมทาดาทาและ diff ของ monitor/check |
| research | การวิจัยบทความและที่เก็บ GitHub | ผลการวิจัยและการจับคู่ repo |
คู่มือการเลือกรูปแบบ
เมื่อใช้ scrape ให้เลือกรูปแบบที่เหมาะสม:
- รูปแบบ JSON (แนะนำสำหรับกรณีส่วนใหญ่): ใช้เมื่อคุณต้องการข้อมูลเฉพาะจากหน้า กำหนดสคีมาตามสิ่งที่คุณต้องการดึงออกมา ซึ่งช่วยให้การตอบกลับมีขนาดเล็กและหลีกเลี่ยงการล้นของหน้าต่างบริบท
- รูปแบบ Markdown (ใช้อย่างระมัดระวัง): ใช้เฉพาะเมื่อคุณต้องการเนื้อหาทั้งหน้าจริงๆ เช่น การอ่านบทความทั้งหมดเพื่อสรุปหรือวิเคราะห์โครงสร้างหน้า
เครื่องมือที่ใช้ได้
1. เครื่องมือ Scrape (firecrawl_scrape)
Scrape เนื้อหาจาก URL เดียวพร้อมตัวเลือกขั้นสูง
เหมาะที่สุดสำหรับ:
- การดึงเนื้อหาหน้าเดียว เมื่อคุณรู้แน่ชัดว่าหน้าใดมีข้อมูล
ไม่แนะนำสำหรับ:
- การดึงเนื้อหาจากหลายหน้า (ใช้การเรียก scrape ซ้ำสำหรับ URL ที่รู้จัก หรือ map + scrape เพื่อค้นหา URL ก่อน หรือ crawl สำหรับเนื้อหาทั้งหน้า)
- เมื่อคุณไม่แน่ใจว่าหน้าใดมีข้อมูล (ใช้ search)
ข้อผิดพลาดที่พบบ่อย:
- การส่งรายการ URL ไปยังการเรียก scrape ครั้งเดียว เรียก scrape ครั้งละหนึ่ง URL ใน MCP หากคุณต้องการการดำเนินการ API แบบกลุ่มเพียงครั้งเดียวโดยเฉพาะ ให้ใช้ปลายทาง batch ของ Firecrawl API นอก MCP
- การใช้รูปแบบ 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, โปรไฟล์แบรนด์ หรือรูปแบบอื่นตามที่ระบุ
2. เครื่องมือ Map (firecrawl_map)
Map เว็บไซต์เพื่อค้นหา URL ทั้งหมดที่จัดทำดัชนีบนเว็บไซต์
เหมาะที่สุดสำหรับ:
- การค้นหา URL บนเว็บไซต์ก่อนตัดสินใจว่าจะ scrape อะไร
- การค้นหาส่วนเฉพาะของเว็บไซต์
ไม่แนะนำสำหรับ:
- เมื่อคุณรู้อยู่แล้วว่าต้องการ URL ใด (ใช้ scrape)
- เมื่อคุณต้องการเนื้อหาของหน้า (ใช้ scrape หลังการ map)
ข้อผิดพลาดที่พบบ่อย:
- การใช้ crawl เพื่อค้นหา URL แทนที่จะใช้ map
ตัวอย่างพรอมต์:
"แสดงรายการ URL ทั้งหมดบน example.com"
ตัวอย่างการใช้งาน:
{
"name": "firecrawl_map",
"arguments": {
"url": "https://example.com"
}
}
ส่งคืน:
- อาร์เรย์ของ URL ที่พบบนเว็บไซต์
3. เครื่องมือ Search (firecrawl_search)
ค้นหาเว็บและเลือกดึงเนื้อหาจากผลการค้นหา
เหมาะที่สุดสำหรับ:
- การค้นหาข้อมูลเฉพาะข้ามหลายเว็บไซต์ เมื่อคุณไม่รู้ว่าเว็บไซต์ใดมีข้อมูล
- เมื่อคุณต้องการเนื้อหาที่เกี่ยวข้องที่สุดสำหรับคำค้น
ไม่แนะนำสำหรับ:
- เมื่อคุณรู้อยู่แล้วว่าจะ scrape เว็บไซต์ใด (ใช้ 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 ดังนั้นสำหรับคำถามส่วนใหญ่ให้ใช้ข้อความตัดตอนและ firecrawl_scrape เฉพาะ URL ที่คุณต้องการ
ตั้งค่า 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) พร้อมเนื้อหาที่ scrape แล้ว (ไม่บังคับ) และฟิลด์idทุกผลลัพธ์มีsourceและpositionที่เริ่มต้นที่ 1 โดยนับจาก 1 ภายในกลุ่มของตัวเอง — คัดลอกคู่นี้ไปยังvaluableResultsของfirecrawl_search_feedbackโดยตรงแทนการนับองค์ประกอบอาร์เรย์ ส่งidนั้นไปยังfirecrawl_search_feedbackหลังจากที่คุณใช้ผลลัพธ์แล้วเพื่อคืนเครดิต 1 เครดิต (การค้นหามีค่าใช้จ่าย 2) และปรับปรุงคุณภาพการค้นหา
ตัวอย่างพรอมต์:
"เปรียบเทียบนโยบายเงินช่วยเหลือการทำงานระยะไกลระหว่างบริษัทเทคโนโลยี"
3b. เครื่องมือ Search Feedback (firecrawl_search_feedback)
ส่งข้อเสนอแนะแบบมีโครงสร้างเกี่ยวกับผลลัพธ์ firecrawl_search ก่อนหน้า ข้อเสนอแนะแรกต่อรหัสการค้นหาแต่ละครั้งจะคืนเครดิต 1 เครดิตและปรับปรุงคุณภาพการค้นหาของ Firecrawl เป็นแบบ idempotent ต่อรหัสการค้นหา
เรียกสิ่งนี้หลังทุกการค้นหาที่คุณใช้จริง (หรือที่ไม่ได้ช่วย) ข้อเสนอแนะที่ไม่ดี/บางส่วนพร้อม missingContent มีคุณค่าเท่ากับข้อเสนอแนะที่ดี
เลือกไม่ใช้: ตั้งค่า FIRECRAWL_NO_SEARCH_FEEDBACK=1 (หรือ FIRECRAWL_DISABLE_SEARCH_FEEDBACK=1) ในสภาพแวดล้อมเมื่อเริ่มเซิร์ฟเวอร์ MCP เครื่องมือ firecrawl_search_feedback จะไม่ถูกลงทะเบียน ดังนั้นเอเจนต์จึงไม่สามารถเรียกได้ ผู้ดูแลทีมยังสามารถปิดข้อเสนอแนะฝั่งเซิร์ฟเวอร์ได้ ในกรณีนั้นเครื่องมือจะถูกลงทะเบียนแต่จะส่งคืน feedbackErrorCode: "TEAM_OPTED_OUT" เสมอ
ฟิลด์ที่สำคัญที่สุด: missingContent เป็นอาร์เรย์ของเนื้อหาเฉพาะเจาะจงที่เอเจนต์คาดว่าจะพบแต่ไม่พบ โดยหนึ่งรายการต่อหนึ่งหัวข้อที่ขาดหาย รายการเหล่านี้ถูกรวบรวมข้ามทีมและบอกเราว่าควรจัดทำดัชนีอะไรต่อไป สำหรับผลลัพธ์ที่มีประโยชน์ ให้ใช้ valuableResults พร้อมกับคู่ source/position ที่ประทับบนแต่ละผลลัพธ์ — ผลลัพธ์จะถูกจัดกลุ่มและแต่ละกลุ่มมีหมายเลขเริ่มจาก 1 อย่างอิสระ ดังนั้นจึงต้องใช้ทั้งสองค่า ระบุผลลัพธ์ที่มีประโยชน์ ทุก รายการ (ผลลัพธ์ที่ไม่ได้ระบุจะถือว่าไม่มีประโยชน์) และสงวน valuableSources ไว้สำหรับ URL ที่มีประโยชน์ซึ่งไม่ได้อยู่ในผลลัพธ์ที่ส่งคืน
เพดานการคืนเครดิตต่อวัน (ต่อทีม ต่อวัน UTC ค่าเริ่มต้น 100 เครดิต) เมื่อ creditsRefundedToday ของทีมถึง dailyRefundCap แล้ว การส่งข้อมูลเพิ่มเติมจะยังคงบันทึกฟีดแบ็กแต่จะไม่คืนเครดิตอีกต่อไป การตอบกลับจะตั้งค่า dailyCapReached: true เอเจนต์ควรหยุดเรียกเครื่องมือนี้สำหรับวัน 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'"
}
}
ส่งคืน:
- JSON
{ success, feedbackId, creditsRefunded, alreadySubmitted? }
3c. เครื่องมือฟีดแบ็กทั่วไป (firecrawl_feedback)
ส่งฟีดแบ็กแบบมีโครงสร้างสำหรับงาน endpoint v2 ที่เสร็จสิ้นแล้วผ่าน /v2/feedback
ใช้เครื่องมือนี้สำหรับฟีดแบ็กระดับ endpoint บนงาน scrape, parse, map หรือ search
สำหรับคุณภาพของผลการค้นหาโดยเฉพาะ ควรใช้
firecrawl_search_feedback เนื่องจากมีคำแนะนำเฉพาะสำหรับการค้นหา
เขียนฟีดแบ็กให้กระชับ: ใช้รหัสปัญหา แท็ก บันทึกสั้น ๆ URL หมายเลขหน้า และออบเจ็กต์ metadata ขนาดเล็ก อย่ารวมเอาต์พุตการ scrape/parse ดิบ
การเลือกไม่เข้าร่วม: ตั้งค่า FIRECRAWL_NO_ENDPOINT_FEEDBACK=1 (หรือ FIRECRAWL_DISABLE_ENDPOINT_FEEDBACK=1) ในสภาพแวดล้อมเมื่อเริ่ม MCP server เครื่องมือ 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"
}
}
}
ส่งคืน:
- JSON
{ success, feedbackId, creditsRefunded, creditsRefundedToday?, dailyRefundCap?, dailyCapReached?, websiteCapReached?, alreadySubmitted?, warning? }
4. เครื่องมือ Crawl (firecrawl_crawl)
เริ่มงาน crawl, poll จนกว่าจะถึงสถานะสิ้นสุด และส่งคืนสถานะ/ข้อมูล crawl สุดท้าย
เหมาะที่สุดสำหรับ:
- การดึงเนื้อหาจากหลายหน้าที่เกี่ยวข้องกัน เมื่อคุณต้องการความครอบคลุมที่ครบถ้วน
ไม่แนะนำสำหรับ:
- การดึงเนื้อหาจากหน้าเดียว (ใช้ scrape)
- เมื่อมีข้อจำกัดด้านโทเค็น (ใช้ map + scrape เพื่อควบคุมได้แน่นขึ้น)
- เมื่อคุณต้องการผลลัพธ์ที่รวดเร็ว (การ crawl อาจช้า)
คำเตือน: การตอบกลับของ crawl อาจมีขนาดใหญ่มากและอาจเกินขีดจำกัดโทเค็น จำกัดความลึกของ crawl และจำนวนหน้า หรือใช้ map + scrape เพื่อควบคุมได้แน่นขึ้น
ข้อผิดพลาดที่พบบ่อย:
- ตั้งค่า limit หรือ maxDiscoveryDepth สูงเกินไป (ทำให้โทเค็นล้น)
- ใช้ crawl สำหรับหน้าเดียว (ใช้ scrape แทน)
ตัวอย่างพรอมต์:
"ดึงโพสต์บล็อกทั้งหมดจากสองระดับแรกของ example.com/blog"
ตัวอย่างการใช้งาน:
{
"name": "firecrawl_crawl",
"arguments": {
"url": "https://example.com/blog/*",
"maxDiscoveryDepth": 2,
"limit": 100,
"allowExternalLinks": false,
"deduplicateSimilarURLs": true
}
}
ส่งคืน:
- สถานะและข้อมูล crawl สุดท้ายหลังการ poll ภายใน รวมถึง
id,status,completed,total,creditsUsed,expiresAt,nextและdataใช้idที่ส่งคืนพร้อมกับfirecrawl_check_crawl_statusหากคุณต้องการตรวจสอบงานอีกครั้งในภายหลัง
5. ตรวจสอบสถานะ Crawl (firecrawl_check_crawl_status)
ตรวจสอบสถานะและผลลัพธ์ของงาน crawl ที่มีอยู่ตาม ID
{
"name": "firecrawl_check_crawl_status",
"arguments": {
"id": "550e8400-e29b-41d4-a716-446655440000"
}
}
ส่งคืน:
- การตอบกลับรวมถึงสถานะของงาน crawl:
6. เครื่องมือ Parse (firecrawl_parse)
แยกวิเคราะห์ไฟล์ในเครื่องหรือข้อมูลอ้างอิงการอัปโหลดที่โฮสต์ด้วย endpoint /v2/parse ของ Firecrawl
เหมาะที่สุดสำหรับ: PDF, เอกสาร Word, สเปรดชีต, ไฟล์ HTML และเอกสารอื่น ๆ ที่ต้องการเอาต์พุต markdown หรือ JSON แบบมีโครงสร้าง endpoint ที่โฮสต์ใช้ขั้นตอนการอัปโหลดสองขั้นตอน การอ่านไฟล์โดยตรงในเครื่องต้องใช้ FIRECRAWL_API_URL ที่โฮสต์เอง
ไม่แนะนำสำหรับ: URL ระยะไกล (ใช้ scrape), หลายไฟล์ในการเรียกครั้งเดียว (เรียก parse ครั้งละหนึ่งไฟล์) หรือการกระทำเฉพาะเบราว์เซอร์ เช่น การจับภาพหน้าจอและการคลิก
endpoint ที่โฮสต์: ไม่สามารถอ่านระบบไฟล์ของคุณได้ เรียก firecrawl_parse พร้อมกับ filePath เพื่อรับคำสั่งอัปโหลดอายุสั้นและ nextToolCall อัปโหลดไฟล์ในเครื่อง จากนั้นเรียก firecrawl_parse อีกครั้งพร้อมกับ uploadRef ที่ส่งคืน ขั้นตอนการอัปโหลดต้องใช้การยืนยันตัวตนของ Firecrawl หรือระดับ keyless ในโหมด npx firecrawl-mcp ภายในเครื่อง การแยกวิเคราะห์ไฟล์โดยตรงในปัจจุบันต้องใช้ FIRECRAWL_API_URL ที่ชี้ไปยัง Firecrawl API ที่โฮสต์เอง เซิร์ฟเวอร์ภายในเครื่องที่มีเพียง API key ของคลาวด์ไม่สามารถอ่านและอัปโหลดไฟล์ผ่านเครื่องมือนี้ได้
ตัวอย่างการใช้งาน:
{
"name": "firecrawl_parse",
"arguments": {
"filePath": "/absolute/path/to/document.pdf",
"formats": ["markdown"],
"parsers": ["pdf"],
"zeroDataRetention": true
}
}
ส่งคืน: เนื้อหาเอกสารที่แยกวิเคราะห์แล้วหรือคำแนะนำการอัปโหลดที่โฮสต์พร้อม nextToolCall
7. ข้อมูลแบบมีโครงสร้างด้วย Scrape JSON
สำหรับข้อมูลแบบมีโครงสร้างจากหน้าที่รู้จัก ให้เรียก firecrawl_scrape ครั้งละหนึ่ง URL พร้อมกับ formats: ["json"] ใส่พรอมต์การสกัดและ 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)
เอเจนต์วิจัยเว็บแบบอัตโนมัติที่ส่งคืนข้อมูลแบบมีโครงสร้างเมื่อคุณไม่รู้จัก URL หรือคำตอบครอบคลุมหลายไซต์ อธิบายฟิลด์ที่คุณต้องการ ส่ง JSON schema และ seed URL ได้ตามต้องการ แล้วเอเจนต์จะค้นหา นำทาง อ่านหน้า และส่งคืน JSON ที่ประกอบขึ้นจากหลายแหล่ง ใช้สำหรับเอนทิตีพร้อมฟิลด์ ใช้สำหรับรายการและชุดข้อมูล และใช้สำหรับหน้าที่ต้องนำทางเพื่อเข้าถึงข้อมูล สำหรับ URL เดียวที่รู้จัก ให้ใช้ firecrawl_scrape พร้อมรูปแบบ JSON แทน
วิธีการทำงาน:
เอเจนต์ทำการค้นหาเว็บ ตามลิงก์ อ่านหน้า และรวบรวมข้อมูลโดยอัตโนมัติ การทำงานนี้เป็นแบบ อะซิงโครนัส — จะส่งคืน job ID ทันที และคุณ poll firecrawl_agent_status เพื่อตรวจสอบเมื่อเสร็จสิ้นและดึงผลลัพธ์
เวิร์กโฟลว์แบบอะซิงโครนัส:
- เรียก
firecrawl_agentพร้อมพรอมต์/schema ของคุณ → ส่งคืน job ID - ทำงานอื่นในขณะที่เอเจนต์วิจัย (อาจใช้เวลาหลายนาทีสำหรับคำถามที่ซับซ้อน)
- Poll
firecrawl_agent_statusพร้อม job ID เพื่อตรวจสอบความคืบหน้า - เมื่อสถานะเป็น "completed" การตอบกลับจะรวมข้อมูลที่สกัดได้
เหมาะที่สุดสำหรับ:
- งานวิจัยที่ซับซ้อนซึ่งคุณไม่รู้จัก URL ที่แน่นอน
- การรวบรวมข้อมูลจากหลายแหล่ง
- การค้นหาข้อมูลที่กระจัดกระจายทั่วเว็บ
- งานที่คุณสามารถทำงานอื่นได้ในขณะรอผลลัพธ์
ไม่แนะนำสำหรับ:
- การ scrape หน้าเดียวแบบง่ายเมื่อคุณรู้จัก URL (ใช้ scrape พร้อมรูปแบบ JSON — เร็วกว่าและถูกกว่า)
อาร์กิวเมนต์:
prompt: คำอธิบายด้วยภาษาธรรมชาติของข้อมูลที่คุณต้องการ (จำเป็น, สูงสุด 10,000 อักขระ)urls: อาร์เรย์ URL ที่เป็นทางเลือกเพื่อให้เอเจนต์เน้นไปที่หน้าเฉพาะschema: JSON schema ที่เป็นทางเลือกสำหรับเอาต์พุตแบบมีโครงสร้างeffort: ทางเลือก งบประมาณการให้เหตุผล"low","medium"หรือ"high"สำหรับงานของเอเจนต์maxCredits: จำนวนเต็มบวกที่เป็นทางเลือก ขีดจำกัดการใช้จ่ายเป็นเครดิตสำหรับการรันนี้ API มีค่าเริ่มต้นที่ 2,500 เมื่อไม่ระบุ และจำกัดคำขอฟรีที่ 2,500strictConstrainToURLs: บูลีนที่เป็นทางเลือก หากเป็นtrueเอเจนต์จะเยี่ยมชมเฉพาะ URL ในurlsเท่านั้นthreadId: ทางเลือก ดำเนินเธรดที่มีอยู่ต่อ:threadIdจากผลลัพธ์firecrawl_agentหรือfirecrawl_agent_statusก่อนหน้า ละเว้นเพื่อเริ่มเธรดใหม่ ในการติดตามผล การตั้งค่าmode,urls,schemaและexchangeที่ละเว้นจะสืบทอดจากรอบก่อนหน้าmode: ทางเลือก"extract"(ค่าเริ่มต้น) ส่งคืนผลลัพธ์แบบมีโครงสร้างที่สมบูรณ์ทุกรอบ"chat"อนุญาตให้การติดตามผลที่ไม่ขอข้อมูลใหม่ได้รับการตอบกลับสั้น ๆ ในmessageแทนการรันใหม่exchange.requireApprovalจำเป็นต้องใช้ค่านี้exchange: ทางเลือก การตั้งค่าผู้ให้บริการ Alexandria สำหรับรอบนี้ ส่งต่อตามที่เป็นไปยังPOST /v2/agent:enabled,toolkits(สูงสุด 5 provider slug),maxCalls(1 ถึง 30),requireApproval(การเรียกแบบชำระเงินจะสิ้นสุดรอบด้วยpendingApproval; ต้องมีmode: "chat"ในการเรียกเดียวกัน แม้ในการติดตามผล)onTermsRequired: สิ่งที่ต้องทำเมื่อผู้ให้บริการ 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 และข้อกำหนดของผู้ให้บริการ ตัวบอก terms/accept ใด ๆ ในเพย์โหลด API นั้นไม่สามารถใช้ได้ผ่าน MCP หากต้องการใช้ผู้ให้บริการ:
- แสดงข้อกำหนดให้ผู้ใช้เห็น (
terms/showถึงfirecrawl_scrapeพร้อมกับalexandria) - แนะนำให้ผู้ดูแลองค์กรยอมรับข้อกำหนดที่ URL ของผู้ให้บริการ หรือที่ การตั้งค่าแหล่งข้อมูล การร้องขอข้อมูลไม่ใช่การยินยอม
- รอให้ผู้ดูแลยืนยันการยอมรับในแดชบอร์ด
- ดำเนินเธรดเดิมต่อ: เรียก
firecrawl_agentพร้อมกับthreadIdและexchange.approve: { "approvalId": "..." }เดิม การทำเช่นนี้จะดำเนินการวิจัยต่อและไม่ได้ยอมรับข้อกำหนด
หากผู้ใช้ตอบว่าไม่ ให้เรียก firecrawl_agent พร้อมกับ threadId และ exchange.decline: { "approvalId": "..." } เดิมแทน
ตัวอย่างพรอมต์:
"ค้นหาผู้ก่อตั้ง Firecrawl และภูมิหลังของพวกเขา"
ตัวอย่างการใช้งาน (เริ่มเอเจนต์ แล้ว poll หาผลลัพธ์):
{
"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" }
}
}
}
}
}
}
}
จากนั้น poll ด้วย firecrawl_agent_status โดยใช้ job ID ที่ส่งคืน
ตัวอย่างการใช้งาน (พร้อม URL — เอเจนต์เน้นไปที่หน้าเฉพาะ):
{
"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" } }
}
}
ส่งคืน:
- Job ID สำหรับตรวจสอบสถานะ พร้อมกับ
threadIdและthreadTurnใช้firecrawl_agent_statusเพื่อ poll หาผลลัพธ์
9. ตรวจสอบสถานะ Agent (firecrawl_agent_status)
ตรวจสอบสถานะของงานเอเจนต์และดึงผลลัพธ์เมื่อเสร็จสิ้น ใช้เครื่องมือนี้เพื่อ poll หาผลลัพธ์หลังจากเริ่มเอเจนต์
รูปแบบการ poll: การวิจัยของเอเจนต์อาจใช้เวลาหลายนาทีสำหรับคำถามที่ซับซ้อน ให้ poll endpoint นี้เป็นระยะ (เช่น ทุก 10-30 วินาที) จนกว่าสถานะจะเป็น "completed" หรือ "failed"
{
"name": "firecrawl_agent_status",
"arguments": {
"id": "550e8400-e29b-41d4-a716-446655440000"
}
}
สถานะที่เป็นไปได้:
processing: เอเจนต์ยังคงวิจัยอยู่ — กลับมาตรวจสอบในภายหลังcompleted: การวิจัยเสร็จสิ้น — การตอบกลับรวมข้อมูลที่สกัดได้failed: เกิดข้อผิดพลาด
10. เครื่องมือ Interact (firecrawl_interact)
โต้ตอบกับ URL ใหม่หรือกับหน้าที่เปิดอยู่แล้วโดย firecrawl_scrape
เหมาะที่สุดสำหรับ: การคลิก การพิมพ์ การนำทาง และการสกัดสถานะจากหน้าแบบไดนามิกโดยไม่ต้องคืนเครื่องมือเบราว์เซอร์ที่เลิกใช้แล้ว
ตัวเลือกการใช้งาน:
- ส่ง
urlเพื่อ scrape และเปิดหน้าเพื่อโต้ตอบในการเรียก MCP ครั้งเดียว - ส่ง
scrapeIdเพื่อโต้ตอบกับหน้าที่ scrape แล้วอย่างต่อเนื่อง - หากต้องการบันทึกสถานะเบราว์เซอร์ (คุกกี้, 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. เครื่องมือ Stop Interact (firecrawl_interact_stop)
หยุดเซสชัน interact สำหรับหน้าที่ scrape แล้วเมื่อคุณโต้ตอบเสร็จสิ้น
{
"name": "firecrawl_interact_stop",
"arguments": {
"scrapeId": "scrape-id-here"
}
}
12. เครื่องมือวิจัย (firecrawl_research_*)
ค้นหาและตรวจสอบบทความและที่เก็บ GitHub ผ่านเครื่องมือ research MCP
ครอบคลุม: บทคัดย่อและข้อความเต็มของบทความในวรรณกรรมด้านชีวการแพทย์ วิทยาศาสตร์ชีวภาพ และคลินิก (PubMed, bioRxiv, medRxiv) ควบคู่กับ arXiv และแหล่งวิทยาศาสตร์อื่น ๆ
เครื่องมือวิจัยที่มีให้ใช้:
firecrawl_research_search_papers: ค้นหาเมทาดาทาและบทคัดย่อของบทความด้วยคำค้นภาษาธรรมชาติ พร้อมตัวกรองผู้แต่ง หมวดหมู่ และวันที่แบบไม่บังคับfirecrawl_research_inspect_paper: ดึงเมทาดาทามาตรฐานสำหรับรหัสบทความหนึ่งรายการ (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 ของหน้าเว็บจะเปิดเผย isMeaningful และ judgment ในเหตุการณ์ monitor.page
เขียนเป้าหมายเป็นคำแนะนำตัวตรวจสอบสั้น ๆ 2-3 ประโยค ระบุว่าอะไรควรกระตุ้นการแจ้งเตือน รักษาขอบเขตที่ผู้ใช้กำหนดไว้ และรวมการยกเว้นเฉพาะเจตนาเมื่อเห็นได้ชัดจากคำขอเท่านั้น สัญญาณรบกวนทั่วไป เช่น ช่องว่าง การเปลี่ยนแปลงเฉพาะรูปแบบ รหัสคำขอ พารามิเตอร์ติดตาม เมทาดาทาทั่วไป และส่วนประกอบหน้าเว็บที่ไม่เกี่ยวข้อง ได้รับการจัดการโดยตัวตัดสินแล้ว ดังนั้นอย่าพูดซ้ำในทุกเป้าหมาย หากผู้ใช้คลุมเครือ ให้คงเป้าหมายไว้กว้าง หากผู้ใช้ขอการตรวจสอบแบบกว้างหรือ "การเปลี่ยนแปลงใด ๆ" ให้รักษาสิ่งนั้นไว้ หากผู้ใช้บอกว่าไม่สนใจสิ่งใด ให้ระบุอย่างชัดเจน
{
"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"
}
}
คำขอสร้างขั้นสูง:
ส่ง body เมื่อคุณต้องการเป้าหมายการรวบรวมข้อมูล การติดตามการเปลี่ยนแปลงแบบ JSON การเก็บรักษาแบบกำหนดเอง หรือการควบคุม judgeEnabled อย่างชัดเจน
{
"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และnotificationfirecrawl_monitor_run: กระตุ้นการตรวจสอบทันทีfirecrawl_monitor_delete: ลบตัวตรวจสอบ (เป็นการทำลาย; เรียกใช้เฉพาะเมื่อผู้ใช้ตั้งใจจะลบ)firecrawl_monitor_checks: แสดงรายการการตรวจสอบ พร้อมตัวกรองตามสถานะแบบไม่บังคับfirecrawl_monitor_check: ดึงผลลัพธ์ระดับหน้าเว็บ รวมถึงdiff,snapshot,judgment.meaningfulและjudgment.meaningfulChanges
14. เครื่องมือค้นหาสำหรับนักพัฒนา (firecrawl_developer_search)
ค้นหาดัชนีที่สร้างขึ้นสำหรับเอเจนต์เขียนโค้ด ดัชนีครอบคลุม GitHub issues, pull request ที่ผสานแล้ว, README ของที่เก็บโค้ด และเอกสารประกอบโค้ด
เหมาะที่สุดสำหรับ: คำถามด้านการเขียนโปรแกรม: พฤติกรรมของโค้ด ไลบรารีหรือเฟรมเวิร์ก สัญญา API ข้อความแสดงข้อผิดพลาด หรือบั๊กที่ทราบแล้ว
อาร์กิวเมนต์:
{
"name": "firecrawl_developer_search",
"arguments": {
"query": "how do I configure retries",
"k": 10,
"skills": "only"
}
}
query(จำเป็น): คำถามหรือวลีค้นหาของนักพัฒนาk: จำนวนผลลัพธ์ที่จัดอันดับ ค่าเริ่มต้นคือ 10 และค่าสูงสุดคือ 100skills: ตั้งเป็น"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 และค่าสูงสุดคือ 100jurisdiction: เก็บเฉพาะหน้าเว็บของเขตอำนาจเดียว:"us"สำหรับรัฐบาลกลาง หรือ"us-"พร้อมรหัสรัฐหรือดินแดนสองตัวอักษร เช่น"us-ca"หรือ"us-dc"court: เก็บเฉพาะหน้าเว็บที่ติดป้ายสำหรับศาลเดียว ตามรหัสศาลของ CourtListener เช่น"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-generalcites: เก็บเฉพาะหน้าเว็บที่อ้างอิงกฎหมายหรือคดีหนึ่งรายการ ในรูปแบบการอ้างอิงที่พิมพ์ เช่น"42 U.S.C. § 1983"หรือ"5 U.S. 137"หรือรหัสการอ้างอิง เช่น"us:usc:42:1983"domain: เก็บเฉพาะหน้าเว็บจากไซต์เดียว เช่น"irs.gov"
ตัวกรองเป็นแบบไม่บังคับและรวมกันได้: ผลลัพธ์ต้องตรงกับทุกตัวกรองที่ตั้งไว้ ตัวกรองเก็บเฉพาะหน้าเว็บที่ดัชนีได้ติดป้ายไว้ ดังนั้นการค้นหาที่มีตัวกรองอาจไม่รวมหน้าเว็บที่เกี่ยวข้อง และการไม่มีผลลัพธ์ไม่ได้หมายความว่าไม่มีอยู่จริง ป้ายศาลจะสมบูรณ์ที่สุดสำหรับศาลของรัฐบาลกลางและคอลเลกชันคำพิพากษา
คืนค่า: ผลลัพธ์ที่จัดอันดับ แต่ละผลลัพธ์มีตำแหน่ง ชื่อเรื่อง URL และส่วนตัดตอนที่ตรงกัน เอนด์พอยต์แบบค้นหาเท่านั้นเปิดเผยเครื่องมือนี้ด้วย
firecrawl_search ร่วมกับ categories: ["gov"] ค้นหาแหล่งเดียวกันและคืนค่าผลลัพธ์ที่พบใน data.web พร้อม category: "gov" หมวดหมู่ gov ไม่รับตัวกรองเหล่านี้และไม่สามารถรวมกับหมวดหมู่อื่นได้
15. เครื่องมือ Alexandria
Firecrawl Alexandria เป็นแคตตาล็อกของผู้ให้บริการข้อมูลที่เข้าถึงได้ผ่าน Firecrawl API ด้วยคีย์ Firecrawl API บนทีมที่มีสิทธิ์เข้าถึง Alexandria เซสชันแบบไม่มีคีย์ (โฮสต์หรือโลคอล) จะได้รับ 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 ของรายการโดยเรียก name ของมันด้วย arguments; nextTool ของหน้าจะเลื่อนการแบ่งหน้า อ็อบเจกต์ next ที่มีอยู่ยังคงเป็นการเรียกค้นพบ Alexandria ที่ใช้ได้ผ่าน firecrawl_scrape การค้นพบไม่มีค่าใช้จ่ายเครดิตและไม่เคยเรียกใช้เครื่องมือของผู้ให้บริการ อ่านสัญญาเต็มที่เลือกไว้ก่อนดำเนินการ
ตัวควบคุมเหล่านี้ต้องมีการติดตั้ง 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) หรือ error พร้อม code; แบตช์จะไม่ล้มเหลวทั้งหมดเนื่องจากข้อผิดพลาดของผู้ให้บริการ และ data.creditsCost คือยอดรวมที่เรียกเก็บสำหรับคำขอ เนื้อหาข้อผิดพลาดของ Alexandria (403 เมื่อไม่มีสิทธิ์เข้าถึง Alexandria และสถานะการเรียกเก็บเงิน 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เครดิตคงเหลือสามารถเกินเครดิตของแผนได้เมื่อทีมมีการเติมเงินหรือการให้เครดิต- ส่ง
{ "view": "historical" }สำหรับช่วงเดือนตามปฏิทินที่มีstartDate,endDateและcreditsUsedการส่ง{ "byApiKey": true }จะเลือกมุมมองย้อนหลังและแบ่งช่วงตาม API key ด้วย แต่ละแถวจะรวมapiKeyด้วย การส่ง{ "byEndpoint": true }แทนจะแบ่งช่วงตาม endpoint ที่ใช้เครดิต (scrape, search, crawl, map, agent, ...) แต่ละแถวจะรวมendpointด้วย ส่ง{ "bin": "day" }สำหรับหนึ่งช่วงต่อวัน UTC แทนที่จะเป็นต่อเดือนตามปฏิทิน อย่ารวมbyApiKeyกับbyEndpointหรือรวมสิ่งใดสิ่งหนึ่งเหล่านี้กับ{ "view": "current" }ค่าendDateของช่วงล่าสุดอาจเป็น null ได้ หาก Firecrawl API ยังไม่มีการแบ่งตาม endpoint หรือช่วงรายวัน ผลลัพธ์จะมีnoticeและตัวเลขรายเดือน
การใช้งานแบบโปรแกรม (ไม่เสถียร)
แพ็กเกจยังมีจุดเข้าใช้งานแบบไลบรารีสำหรับฝังเซิร์ฟเวอร์ในรันไทม์อื่นด้วย API นี้ ไม่เสถียร: API ตัวเลือก และชนิดข้อมูลอาจเปลี่ยนแปลงได้ในทุกการออกรุ่น รวมถึงรุ่น minor และ patch ดังนั้นควรปักหมุดเวอร์ชันให้แน่นอน
npm install --save-exact firecrawl-mcp zod
ตัวอย่างกำหนดพารามิเตอร์ของเครื่องมือด้วย zod ดังนั้นโปรเจกต์ที่ฝังจะติดตั้งเป็น dependency ของตัวเอง
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 จะถูกปฏิเสธ ใช้ 0.0.0.0 หรือ :: เพื่อรับการเชื่อมต่อจากเครื่องอื่นเฉพาะเมื่ออยู่หลังการควบคุมการเข้าถึงเครือข่ายหรือการตรวจสอบ unstable_hooks.authenticate เท่านั้น: หากไม่มี ผู้เรียกทุกรายที่เข้าถึงพอร์ตได้จะได้รับบริการด้วย apiKey ที่กำหนดไว้
ไลบรารีจะไม่ตรวจสอบ Host หรือ Origin เว้นแต่จะถูกขอ และส่วนหัว CORS ของมันอนุญาตทุก origin เซิร์ฟเวอร์ที่เข้าถึงได้จากเบราว์เซอร์บนเครื่องเดียวกันควรส่ง httpStream.allowedHosts (เช่น ['localhost', '127.0.0.1', '[::1]']): คำขอที่ส่วนหัว Host หรือ Origin ระบุโฮสต์อื่นจะได้รับ 403 (ยกเว้น GET และ HEAD บนเส้นทาง health) และส่วนหัว CORS จะสะท้อน origin ที่อนุญาต โหมด HTTP ภายในเครื่องของ command line จะตั้งค่ารายการนี้
ตัวเลือกสะท้อนตัวแปรสภาพแวดล้อมของ 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
การมีส่วนร่วม
- Fork repository
- สร้าง branch สำหรับฟีเจอร์ของคุณ
- รันการทดสอบ:
npm test - ส่ง pull request
ขอบคุณผู้มีส่วนร่วม
ขอบคุณ @vrknetha, @cawstudios สำหรับการใช้งานเริ่มต้น!
ขอบคุณ MCP.so และ Klavis AI สำหรับการโฮสต์ และ @gstarwd, @xiangkaiz และ @zihaolin96 สำหรับการผสานรวมเซิร์ฟเวอร์ของเรา
สัญญาอนุญาต
MIT License - ดูไฟล์ LICENSE สำหรับรายละเอียด
ข้อมูลแบบมีโครงสร้างและผลลัพธ์ขนาดใหญ่
การค้นหาแบบมีสิทธิ์เริ่มต้นจะใช้ผลลัพธ์เว็บ เครื่องมือ semantic ของ Alexandria และการจับคู่โดเมน เริ่มจากคำถามจริง ใช้ firecrawl_find_tools สำหรับการค้นหาเครื่องมือ semantic โดยตรง สัญญาที่เลือก หรือการเรียกดูแบบก้าวหน้า: หมวดหมู่ → ผู้ให้บริการ → เครื่องมือแบบกะทัดรัด → สัญญาที่เลือก ดำเนินการเครื่องมือผ่าน firecrawl_scrape; การ scrape URL ทั่วไปและการค้นหาจะไม่ดำเนินการเครื่องมือของผู้ให้บริการโดยอัตโนมัติ
สำหรับสัญญาที่เลือก ควรใช้ expand: ["options", "response"] และขอตัวอย่างเฉพาะเมื่อรูปแบบอินพุตไม่ชัดเจน ตรวจสอบความสามารถที่เกี่ยวข้องร่วมกันและนำสัญญาที่ส่งคืนกลับมาใช้ซ้ำ
สำหรับผลลัพธ์ของ workflow ที่อาจมีขนาดใหญ่ ให้ระบุและรักษา requestId ระดับบนสุดก่อนการดำเนินการ ID นั้นจะยังคงใช้ได้แม้ไคลเอนต์จะปฏิเสธการตอบกลับ การ scrape URL ปกติจะใช้ scrape ID ที่ส่งคืนแทน
สำหรับผลลัพธ์ workflow หรือการ scrape ปกติที่เก็บรักษาไว้ขนาดใหญ่ ให้เรียก firecrawl_scrape ด้วย:
{
"alexandria": {
"provider": "firecrawl",
"capability": "bash",
"options": {
"requestId": "<source-request-or-scrape-id>",
"command": "ls -lh"
}
}
}
อ่าน stdout, stderr, exitCode และ workspaceId ใน data.alexandria[0].data ดำเนินการต่อด้วย options: {workspaceId, command} เพื่อตรวจสอบ response.json โดยใช้ jq หรือ document.md โดยใช้คำสั่งข้อความแบบจำกัดสำหรับการ scrape ปกติ รักษาผลลัพธ์ให้เลือกเฉพาะ การโหลดแหล่งข้อมูลต้องเป็นการเรียกแบบเดี่ยว; source ID ที่ซ้อนอยู่แตกต่างจาก execution request ID ระดับบนสุด เวิร์กสเปซจะหมดอายุหลังจากไม่มีการใช้งานห้านาที และไม่ใช่ทุกผลลัพธ์ที่จะถูกเก็บรักษาไว้ (รวมถึง ZDR และเพย์โหลด workflow ของผู้ให้บริการ API) ไม่รองรับ search ID
สำหรับแหล่งข้อมูล workflow response.json จะรักษาซอง API ไว้: เลือก .data.alexandria[].data จากนั้นเลือก response.key ของสัญญาที่เลือกเมื่อไม่ว่าง รวมจำนวนและ projection ที่เกี่ยวข้องไว้ในคำสั่ง Bash เดียวเมื่อทราบรูปแบบนั้น แทนที่จะตรวจสอบคีย์ซ้ำ ๆ
การตอบกลับการดำเนินการ Alexandria ที่สำเร็จซึ่งมีขนาดเกิน 20,000 โทเค็นโดยประมาณ (ไบต์ UTF-8 ที่ serialize แล้วหารด้วยสี่) จะส่งคืน handoff ขนาดเล็กหลังจาก remote Bash ยืนยันว่าทั้งชุดเข้าถึงได้ ปฏิบัติตาม nextTool เพื่อตรวจสอบข้อมูลที่เก็บรักษาไว้ การดำเนินการนี้เพิ่มการเรียก Bash หนึ่งครั้งและเริ่มเวิร์กสเปซที่มี TTL ไม่มีการใช้งานห้านาที เพย์โหลดทั้งหมดจะถูกเก็บรักษาไว้ หากการยืนยันล้มเหลว การตอบกลับเดิมจะยังคงอยู่แบบอินไลน์ การค้นหา การ scrape URL ปกติ การตอบกลับข้อผิดพลาด และการเรียกยูทิลิตี้ Firecrawl จะไม่เปลี่ยนแปลง งบประมาณการส่งมอบนี้ไม่ได้วัดบริบทที่เหลืออยู่ของไคลเอนต์ และไม่มีการเพิ่มแคชผลลัพธ์ภายในโปรเซส เมื่อมีเครื่องมือระบบไฟล์ภายในเครื่อง การบันทึกเอาต์พุต CLI และอ่านส่วนที่เลือกก็เป็นอีกทางเลือกหนึ่ง
ลำดับการค้นพบของ CLI สอดคล้องกับการเรียก MCP เหล่านี้:
| เจตนา | เครื่องมือ | อาร์กิวเมนต์ |
|---|---|---|
| เครื่องมือเว็บ + semantic + โดเมน | firecrawl_search | {"query":"<user question>"} |
| เฉพาะเครื่องมือ semantic | 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>"}}} |
Find Tools และการดำเนินการมีให้ใช้งานทั้งบนพื้นผิวแบบเต็มและพื้นผิวการค้นหา นำสัญญาที่สมบูรณ์จากการค้นหากลับมาใช้ซ้ำเมื่อมีอยู่ แทนที่จะเรียกค้นพบอีกครั้ง ปฏิบัติตามการนำทาง 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 ที่เป็นทางเลือกคือเป้าหมายพื้นฐานของเซสชัน: สิ่งที่ agent หรือผู้ใช้พยายามทำในที่สุด นอกเหนือจากเว็บไซต์เดียวใน requestedWebsite
การดำเนินการนี้ใช้ POST /v2/feedback แบบมีสิทธิ์ โดยไม่มี job ID ต้องมาถึงภายใน 20 นาทีหลังจากการค้นหา การค้นพบ หรือการดำเนินการ Alexandria ล่าสุดของทีม ข้อเสนอแนะที่มาช้าจะถูกปฏิเสธด้วย 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 หรือการเริ่มต้นแบบไม่มีคีย์)