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

  1. เปิด Cursor Settings
  2. ไปที่ Features > MCP Servers
  3. คลิก "+ Add new global MCP server"
  4. ป้อนโค้ดต่อไปนี้:
    {
      "mcpServers": {
        "firecrawl-mcp": {
          "command": "npx",
          "args": ["-y", "firecrawl-mcp"],
          "env": {
            "FIRECRAWL_API_KEY": "YOUR-API-KEY"
          }
        }
      }
    }
    

การกำหนดค่า Firecrawl MCP ใน Cursor v0.45.6

  1. เปิด Cursor Settings
  2. ไปที่ Features > MCP Servers
  3. คลิก "+ Add New MCP Server"
  4. ป้อนข้อมูลต่อไปนี้:
    • 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

สำหรับการติดตั้งในคลิกเดียว ให้คลิกปุ่มติดตั้งปุ่มใดปุ่มหนึ่งด้านล่าง...

Install with NPX in VS Code Install with NPX in VS Code Insiders

สำหรับการติดตั้งด้วยตนเอง ให้เพิ่มบล็อก 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 และดำเนินการด้วย scrape alexandria

ตารางอ้างอิงด่วน

เครื่องมือเหมาะที่สุดสำหรับส่งคืน
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 เพื่อตรวจสอบเมื่อเสร็จสิ้นและดึงผลลัพธ์

เวิร์กโฟลว์แบบอะซิงโครนัส:

  1. เรียก firecrawl_agent พร้อมพรอมต์/schema ของคุณ → ส่งคืน job ID
  2. ทำงานอื่นในขณะที่เอเจนต์วิจัย (อาจใช้เวลาหลายนาทีสำหรับคำถามที่ซับซ้อน)
  3. Poll firecrawl_agent_status พร้อม job ID เพื่อตรวจสอบความคืบหน้า
  4. เมื่อสถานะเป็น "completed" การตอบกลับจะรวมข้อมูลที่สกัดได้

เหมาะที่สุดสำหรับ:

  • งานวิจัยที่ซับซ้อนซึ่งคุณไม่รู้จัก URL ที่แน่นอน
  • การรวบรวมข้อมูลจากหลายแหล่ง
  • การค้นหาข้อมูลที่กระจัดกระจายทั่วเว็บ
  • งานที่คุณสามารถทำงานอื่นได้ในขณะรอผลลัพธ์

ไม่แนะนำสำหรับ:

  • การ scrape หน้าเดียวแบบง่ายเมื่อคุณรู้จัก URL (ใช้ scrape พร้อมรูปแบบ JSON — เร็วกว่าและถูกกว่า)

อาร์กิวเมนต์:

  • prompt: คำอธิบายด้วยภาษาธรรมชาติของข้อมูลที่คุณต้องการ (จำเป็น, สูงสุด 10,000 อักขระ)
  • urls: อาร์เรย์ URL ที่เป็นทางเลือกเพื่อให้เอเจนต์เน้นไปที่หน้าเฉพาะ
  • schema: JSON schema ที่เป็นทางเลือกสำหรับเอาต์พุตแบบมีโครงสร้าง
  • effort: ทางเลือก งบประมาณการให้เหตุผล "low", "medium" หรือ "high" สำหรับงานของเอเจนต์
  • maxCredits: จำนวนเต็มบวกที่เป็นทางเลือก ขีดจำกัดการใช้จ่ายเป็นเครดิตสำหรับการรันนี้ API มีค่าเริ่มต้นที่ 2,500 เมื่อไม่ระบุ และจำกัดคำขอฟรีที่ 2,500
  • strictConstrainToURLs: บูลีนที่เป็นทางเลือก หากเป็น 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 หากต้องการใช้ผู้ให้บริการ:

  1. แสดงข้อกำหนดให้ผู้ใช้เห็น (terms/show ถึง firecrawl_scrape พร้อมกับ alexandria)
  2. แนะนำให้ผู้ดูแลองค์กรยอมรับข้อกำหนดที่ URL ของผู้ให้บริการ หรือที่ การตั้งค่าแหล่งข้อมูล การร้องขอข้อมูลไม่ใช่การยินยอม
  3. รอให้ผู้ดูแลยืนยันการยอมรับในแดชบอร์ด
  4. ดำเนินเธรดเดิมต่อ: เรียก 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 และ notification
  • firecrawl_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 และค่าสูงสุดคือ 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 เช่น "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" หรือรหัสการอ้างอิง เช่น "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

การมีส่วนร่วม

  1. Fork repository
  2. สร้าง branch สำหรับฟีเจอร์ของคุณ
  3. รันการทดสอบ: npm test
  4. ส่ง 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>"}
เฉพาะเครื่องมือ semanticfirecrawl_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 หรือการเริ่มต้นแบบไม่มีคีย์)