SerpApi MCP

ทางการ

เซิร์ฟเวอร์ SerpApi MCP สำหรับผลลัพธ์จาก Google และเครื่องมือค้นหาอื่นๆ

คุณทำอะไรได้บ้างด้วย SerpApi MCP?

  • ค้นหาหลายเอนจิน — ค้นหาผ่าน Google, Bing, YouTube, eBay และเอนจินอื่น ๆ ได้ด้วยการเรียก search เพียงครั้งเดียว พร้อมเลือกเอนจินและตำแหน่งที่ตั้ง
  • เอาต์พุตแบบ Markdown หรือแบบกระชับ — ขอผลลัพธ์เป็น Markdown หรือ JSON แบบกระชับ เพื่อลดการใช้โทเคนเมื่อมีการตอบกลับขนาดใหญ่หรือซ้อนกันหลายระดับ
  • ดึงข้อมูลจากหน้าเว็บ — ใช้ extract เพื่ออ่านหน้าเว็บเดียว แสดงแผนผัง URL ของเว็บไซต์ หรือรวบรวมข้อมูลจากหลายหน้าภายใต้ขีดจำกัดจำนวนหน้า
  • มุมมองผลลัพธ์แบบโต้ตอบ — เลือกใช้ search_table หรือ search_dashboard เพื่อแสดงผลลัพธ์เป็นตารางที่จัดเรียงได้หรือแดชบอร์ดในโฮสต์ที่รองรับ

เอกสาร

SerpApi MCP Server

การติดตั้งใช้งานเซิร์ฟเวอร์ Model Context Protocol (MCP) ที่ผสานการทำงานกับ SerpApi เพื่อค้นหาผลลัพธ์จากเครื่องมือค้นหาและดึงข้อมูลได้อย่างครอบคลุม

Python 3.13+ MIT License Install in VS Code Install in Cursor

ฟีเจอร์

  • ค้นหาหลายเครื่องมือ: Google, Bing, Yahoo, DuckDuckGo, YouTube, eBay และอื่น ๆ
  • ทรัพยากรของเครื่องมือค้นหา: มีสคีมาพารามิเตอร์แยกตามเครื่องมือผ่านทรัพยากร MCP (ดูเครื่องมือ Search)
  • ข้อมูลสภาพอากาศแบบเรียลไทม์: ข้อมูลสภาพอากาศตามตำแหน่งที่ตั้งพร้อมพยากรณ์อากาศผ่านคำค้นหา
  • ข้อมูลตลาดหุ้น: ข้อมูลการเงินของบริษัทและข้อมูลตลาดผ่านการผสานการค้นหา
  • ประมวลผลผลลัพธ์แบบไดนามิก: ตรวจจับและจัดรูปแบบผลลัพธ์ประเภทต่าง ๆ โดยอัตโนมัติ
  • โหมดการตอบกลับที่ยืดหยุ่น: การตอบกลับ JSON แบบเต็มหรือแบบกระชับ
  • การตอบกลับ JSON (ค่าเริ่มต้น): เอาต์พุต JSON แบบมีโครงสร้าง ทั้งโหมดเต็มและโหมดกระชับ
  • การตอบกลับ Markdown: ลดการใช้โทเค็นโดยเฉลี่ย 50% และมากกว่า 90% สำหรับ API ที่มี JSON ซ้อนกันซับซ้อน
  • UI แบบโต้ตอบ (MCP Apps): เครื่องมือ search_table และ search_dashboard ที่เลือกใช้ได้ ซึ่งแสดงผลลัพธ์เป็น UI แบบโต้ตอบในโฮสต์ที่รองรับ
  • ส่วนขยาย Claude Desktop: ติดตั้งในเครื่องได้ด้วยคลิกเดียวจาก MCP Bundle (.mcpb) ดูรายละเอียดด้านล่าง

เริ่มต้นอย่างรวดเร็ว

SerpApi MCP Server ให้บริการในรูปแบบโฮสต์ที่ mcp.serpapi.com หากต้องการเชื่อมต่อ คุณต้องระบุคีย์ API ดูคีย์ API ได้ที่ แดชบอร์ด SerpApi

คุณสามารถกำหนดค่า Claude Desktop ให้ใช้เซิร์ฟเวอร์ที่โฮสต์ไว้ได้ดังนี้:

{
  "mcpServers": {
    "serpapi": {
      "type": "http",
      "url": "https://mcp.serpapi.com/YOUR_SERPAPI_API_KEY/mcp"
    }
  }
}

นอกจากนี้ คุณยังเพิ่มเซิร์ฟเวอร์ที่โฮสต์ไว้ในไคลเอ็นต์ MCP เหล่านี้ได้ด้วย:

OpenClaw

openclaw mcp add serpapi --url https://mcp.serpapi.com/YOUR_SERPAPI_API_KEY/mcp --transport streamable-http

Claude Code

claude mcp add --transport http serpapi https://mcp.serpapi.com/mcp --header "Authorization: Bearer YOUR_SERPAPI_API_KEY"

Hermes

hermes mcp add serpapi --url https://mcp.serpapi.com/YOUR_SERPAPI_API_KEY/mcp

Codex (อ่านคีย์จาก SERPAPI_API_KEY ใน shell ของคุณ)

codex mcp add serpapi --url https://mcp.serpapi.com/mcp --bearer-token-env-var SERPAPI_API_KEY

โฮสต์ด้วยตนเอง

git clone https://github.com/serpapi/serpapi-mcp.git
cd serpapi-mcp
uv sync && uv run src/server.py

กำหนดค่า Claude Desktop:

{
  "mcpServers": {
    "serpapi": {
      "type": "http",
      "url": "http://localhost:8000/YOUR_SERPAPI_API_KEY/mcp"
    }
  }
}

รับคีย์ API ได้ที่: serpapi.com/manage-api-key

ส่วนขยาย Claude Desktop (MCP bundle)

หากต้องการติดตั้งในเครื่องด้วยคลิกเดียว ให้ดาวน์โหลด bundle .mcpb จาก รุ่นล่าสุด แล้วเปิดด้วย Claude Desktop (หรือลากไปวางบน Settings → Extensions) ระหว่างติดตั้ง Claude Desktop จะขอคีย์ API ของ SerpApi บันทึกคีย์เป็นการตั้งค่าที่มีความละเอียดอ่อน และเรียกใช้เซิร์ฟเวอร์ในเครื่องผ่าน stdio โดยจะติดตั้ง Python และ dependencies ด้วย uv ในระหว่างการติดตั้ง bundle เดียวกันนี้ใช้ได้กับ macOS, Windows และ Linux

จุดเริ่มต้น stdio เดียวกันนี้ใช้ได้กับโฮสต์ MCP ในเครื่องทุกตัวที่เปิดเซิร์ฟเวอร์เป็น subprocess:

{
  "mcpServers": {
    "serpapi": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/serpapi-mcp", "--frozen", "--no-dev", "src/stdio.py"],
      "env": { "SERPAPI_API_KEY": "YOUR_SERPAPI_API_KEY" }
    }
  }
}

การยืนยันตัวตน

รองรับสองวิธี:

  • ใช้ส่วนหัว: Authorization: Bearer YOUR_API_KEY (แนะนำ: คีย์จะไม่ปรากฏใน URL และบันทึก)
  • ใช้พาธ: /YOUR_API_KEY/mcp สำหรับไคลเอ็นต์ที่ตั้งค่าส่วนหัวไม่ได้

ตัวอย่าง:

# Header-based
curl "https://mcp.serpapi.com/mcp" -H "Authorization: Bearer your_key" -d '...'

# Path-based
curl "https://mcp.serpapi.com/your_key/mcp" -d '...'

ไม่จำเป็นต้องใช้คีย์เพื่อเชื่อมต่อ แสดงรายการเครื่องมือ หรืออ่านทรัพยากร แต่ search และเครื่องมือ App ต้องใช้คีย์ และจะแสดงข้อผิดพลาดหากไม่มีคีย์

เครื่องมือ Search

เซิร์ฟเวอร์ MCP มีเครื่องมือค้นหาหลักหนึ่งรายการ ซึ่งรองรับเครื่องมือค้นหาและประเภทผลลัพธ์ทั้งหมดของ SerpApi ดูพารามิเตอร์ทั้งหมดได้ที่ เอกสารอ้างอิง SerpApi API นอกจากนี้ยังเปิดเผยสคีมาพารามิเตอร์ของเครื่องมือค้นหาเป็นทรัพยากร MCP ด้วย ได้แก่ serpapi://engines (ดัชนี) และ serpapi://engines/<engine> ไคลเอ็นต์ที่รองรับ การเติมอาร์กิวเมนต์ให้สมบูรณ์ สามารถขอคำแนะนำชื่อเครื่องมือค้นหาสำหรับ serpapi://engines/{engine_name} ได้ ตัวอย่างเช่น คำนำหน้า google_f จะแนะนำตัวระบุเครื่องมือค้นหาที่ตรงกัน วิธีนี้จะเติมพารามิเตอร์ URI ของทรัพยากรให้สมบูรณ์ ไม่ใช่คำค้นหาทั่วไป

พารามิเตอร์ที่ระบุได้จะแตกต่างกันไปตามเครื่องมือ API แต่ละรายการ ตัวอย่างพารามิเตอร์มีดังนี้:

  • params.q (จำเป็น): คำค้นหา
  • params.engine: เครื่องมือค้นหา (ค่าเริ่มต้น: "google_light")
  • params.location: ตัวกรองทางภูมิศาสตร์
  • params.output: รูปแบบการตอบกลับ; ไม่ระบุเพื่อใช้ JSON (ค่าเริ่มต้น) หรือกำหนดเป็น "md" เพื่อใช้ Markdown
  • mode: โหมดการตอบกลับ; "compact" จะนำข้อมูลเมตาออกจาก JSON ส่วน Markdown จะส่งกลับโดยไม่เปลี่ยนแปลง
  • ...ดูพารามิเตอร์อื่น ๆ ได้ที่ เอกสารอ้างอิง SerpApi API

ตัวอย่าง:

{"name": "search", "arguments": {"params": {"q": "coffee shops", "location": "Austin, TX"}}}
{"name": "search", "arguments": {"params": {"q": "weather in London"}}}
{"name": "search", "arguments": {"params": {"q": "AAPL stock"}}}
{"name": "search", "arguments": {"params": {"q": "news"}, "mode": "compact"}}
{"name": "search", "arguments": {"params": {"q": "detailed search"}, "mode": "complete"}}
{"name": "search", "arguments": {"params": {"q": "news", "output": "md"}}}
{"name": "search", "arguments": {"params": {"engine": "amazon", "k": "mechanical keyboards", "amazon_domain": "amazon.com", "output": "md"}}}
{"name": "search", "arguments": {"params": {"engine": "google_scholar", "q": "retrieval augmented generation"}}}
{"name": "search", "arguments": {"params": {"engine": "youtube", "search_query": "how to make espresso"}}}
{"name": "search", "arguments": {"params": {"engine": "apple_app_store", "term": "habit tracker"}}}
{"name": "search", "arguments": {"params": {"engine": "ebay", "_nkw": "vintage mechanical keyboard"}}}

เครื่องมือค้นหาที่รองรับ: Google, Bing, Yahoo, DuckDuckGo, YouTube, eBay และอื่น ๆ (ดู serpapi://engines)

ประเภทผลลัพธ์: กล่องคำตอบ ผลการค้นหาทั่วไป ข่าว รูปภาพ และสินค้า — ตรวจจับและจัดรูปแบบโดยอัตโนมัติ

การตอบกลับจากการค้นหาจะคงสตริง MCP structuredContent.result เดิมไว้ และใส่สตริงเดียวกันนี้ในเนื้อหาข้อความ สำหรับเอาต์พุต JSON result จะมี JSON ที่แปลงเป็นสตริงแล้ว โดยไคลเอ็นต์เดิมยังคงแยกวิเคราะห์ได้ด้วย JSON.parse(response.structuredContent.result) สำหรับเอาต์พุต Markdown จะมี Markdown ที่ไม่เปลี่ยนแปลง ข้อผิดพลาดและการยกเลิกใช้ wrapper เดียวกัน ความล้มเหลวในการดำเนินการค้นหาจะกำหนดค่า isError: true; ไคลเอ็นต์ที่ใช้ call_tool() ระดับสูงของ FastMCP ควรจัดการ ToolError หรือใช้ call_tool_mcp() เพื่อตรวจสอบแฟล็กผลลัพธ์ ดู ผลลัพธ์ของเครื่องมือ MCP

search ใช้แค็ตตาล็อกเครื่องมือค้นหาและกฎเฉพาะของแต่ละเครื่องมือเพื่อระบุพารามิเตอร์ที่ขาดหายไป ไคลเอ็นต์ที่รองรับ MCP 2026-07-28 จะได้รับแบบฟอร์มก่อนเริ่มการค้นหา คำตอบที่ยอมรับจะได้รับการตรวจสอบความถูกต้อง หากปฏิเสธหรือยกเลิก ระบบจะไม่ค้นหา ไคลเอ็นต์รุ่นเก่าและไคลเอ็นต์ที่ไม่มีการขอข้อมูลผ่านแบบฟอร์มจะได้รับข้อผิดพลาดที่ระบุพารามิเตอร์ที่ขาดหายไป เพื่อให้เอเจนต์สอบถามต่อในการสนทนา ดู คำขอข้อมูลนำเข้าของ MCP

  • Google Flights: ตัวระบุจุดออกเดินทางและจุดหมายปลายทาง วันที่ออกเดินทาง และวันที่เดินทางกลับสำหรับการเดินทางไป-กลับ ระบบจะตรวจสอบวันที่และตัวระบุสนามบิน การค้นหาโดยใช้โทเค็น การเดินทางหลายเมือง และ selected_flights_json ยังคงทำงานตามเดิม
  • Google Hotels: จุดหมายปลายทางหรือคำค้นหาโรงแรม วันที่เช็กอิน และวันที่เช็กเอาต์ วันที่เช็กเอาต์ต้องอยู่หลังวันที่เช็กอิน จำนวนผู้เข้าพักและตัวกรองเสริมอื่น ๆ จะใช้ค่าที่ผู้เรียกส่งมาหรือค่าเริ่มต้นของ API
  • Google Maps Directions: ที่อยู่ต้นทางและปลายทางที่ขาดหายไป พิกัดหรือรหัสข้อมูลสถานที่ที่ระบุไว้แล้วจะถือว่าครบถ้วนสำหรับปลายทางที่เกี่ยวข้อง
  • เครื่องมืออื่น ๆ ในแค็ตตาล็อกจะใช้ฟิลด์ที่จำเป็นของตน เช่น search_query ของ YouTube, find_loc ของ Yelp และ k ของ Amazon กฎของเครื่องมือจะคำนึงถึงค่าเริ่มต้นและทางเลือกที่ทราบ รวมถึงโหนดหมวดหมู่ของ Amazon หมวดหมู่ของ eBay และการค้นหาการอ้างอิงของ Google Scholar

หากคำตอบทำให้มีข้อกำหนดเพิ่มเติม เครื่องมือจะแสดงฟิลด์ที่ยังขาดให้เอเจนต์ระบุในการเรียกครั้งใหม่ แบบฟอร์มรองรับฟิลด์ชนิดสตริง ตัวเลข บูลีน และตัวเลือกเดียว ส่วนฟิลด์ซับซ้อนที่ไม่รองรับจะแสดงข้อผิดพลาดเกี่ยวกับพารามิเตอร์ที่ขาดหายไป เครื่องมือค้นหาที่ไม่รู้จักจะส่งต่อไปยัง SerpApi

เครื่องมือ Extract

เครื่องมือ extract อ่านหน้าเว็บและส่งคืนเนื้อหาเป็น JSON หรือ Markdown แบบมีโครงสร้าง คุณสามารถดึงข้อมูลจากหน้าเดียว ค้นหา URL ของเว็บไซต์ หรือรวบรวมข้อมูลจากหลายหน้า ดูพารามิเตอร์ทั้งหมดได้ที่ เอกสารอ้างอิง Extract API หรือในทรัพยากร serpapi://engines/extract

พารามิเตอร์บางส่วนที่ระบุได้:

  • params.url (จำเป็น): URL ของหน้าหรือเว็บไซต์
  • params.mode: โหมดการดึงข้อมูล; "scrape" (ค่าเริ่มต้น) อ่านหน้าเดียว, "map" ค้นหา URL และ "crawl" ดึงข้อมูลจากหลายหน้า
  • params.include_markdown: รวมเนื้อหาของหน้าในรูปแบบ Markdown; ค่าเริ่มต้นคือ true สำหรับ scrape และ crawl หรือกำหนดเป็น false เพื่อปิดใช้งาน
  • params.output: รูปแบบการตอบกลับ; ค่าเริ่มต้นคือ "json" ในโหมดเต็ม และ "md" ในโหมดกระชับ กำหนดค่าอย่างชัดเจนเพื่อแทนที่รูปแบบเริ่มต้น
  • params.max_pages: จำนวนหน้าสูงสุดที่จะ crawl รวมหน้าเริ่มต้น (ค่าเริ่มต้น: 10, สูงสุด: 100)
  • params.json_restrictor: เลือกฟิลด์ที่จะส่งคืน เช่น "markdown,error"
  • mode: โหมดการตอบกลับ; "complete" (ค่าเริ่มต้น) ส่งคืนการตอบกลับทั้งหมด ส่วน "compact" ใช้ Markdown แบบ native เป็นค่าเริ่มต้น เมื่อระบุ params.output="json" อย่างชัดเจน การดึงข้อมูลหน้าเดียวแบบกระชับจะคงฟิลด์ระดับบนสุด markdown ไว้เมื่อมี และเก็บข้อผิดพลาดจาก API ไว้ การตอบกลับที่ไม่มี Markdown รวมถึงผลลัพธ์ที่เปลี่ยนเส้นทางไปยังเครื่องมือค้นหาอื่น จะเก็บข้อมูลไว้โดยนำข้อมูลเมตาออก ค่า params.json_restrictor ที่ระบุอย่างชัดเจนและ params.include_markdown=false จะมีลำดับความสำคัญเหนือกว่าเมื่อใช้ JSON สำหรับ map และ crawl นั้น JSON แบบกระชับจะนำข้อมูลเมตาออก เอาต์พุต Markdown จะส่งกลับโดยไม่เปลี่ยนแปลง

ตัวอย่าง:

{"name": "extract", "arguments": {"params": {"url": "https://example.com"}}}
{"name": "extract", "arguments": {"params": {"url": "https://example.com"}, "mode": "compact"}}
{"name": "extract", "arguments": {"params": {"url": "https://example.com", "output": "md"}}}
{"name": "extract", "arguments": {"params": {"url": "https://example.com", "mode": "map"}}}
{"name": "extract", "arguments": {"params": {"url": "https://example.com", "mode": "crawl", "max_pages": 2}}}

หากต้องการเนื้อหาของหน้าเดียวในรูปแบบ Markdown แบบ native ให้ใช้ mode="compact" เพิ่ม params.output="json" เพื่อรับ JSON ที่มีฟิลด์ markdown แทน JSON แบบเต็มจะมีฟิลด์นี้เป็นค่าเริ่มต้น ส่วน JSON จาก crawl จะมีฟิลด์นี้ในแต่ละรายการ pages การกำหนด params.output="json" และ params.include_markdown=false จะคงฟิลด์แบบมีโครงสร้างที่เหลือไว้โดยไม่มี Markdown

การ crawl จะใช้เครดิตการค้นหาหนึ่งเครดิตต่อหน้าที่ดึงข้อมูลสำเร็จในการร้องขอที่ไม่มีข้อมูลแคช ใช้ params.max_pages เพื่อจำกัดจำนวนหน้าที่ดึงข้อมูล

UI แบบโต้ตอบ (MCP apps)

เครื่องมือ search จะส่งคืน JSON เป็นค่าเริ่มต้น สำหรับโฮสต์ที่รองรับ ส่วนขยาย MCP Apps (SEP-1865) จะมีเครื่องมือที่เลือกใช้ได้สองรายการ ซึ่งแสดงผลลัพธ์เป็น UI แบบโต้ตอบในบทสนทนาโดยตรง ทำให้ JSON SERP จำนวนมากไม่เข้าสู่หน้าต่างบริบทของโมเดล:

  • search_table: ผลการค้นหาทั่วไปในรูปแบบตารางที่จัดเรียงและค้นหาได้
  • search_dashboard: เมตริกสรุป แผนภูมิแจกแจงตามแหล่งที่มา และตารางผลลัพธ์พร้อมแผงรายละเอียดที่ขยายได้เมื่อคลิก

ทั้งสองรายการรับ params แบบเดียวกับ search โฮสต์ที่ไม่รองรับ MCP Apps จะเพิกเฉยต่อเครื่องมือเหล่านี้

การแก้ไขปัญหา

  • "Missing API key": ใส่คีย์ในพาธ URL /{YOUR_KEY}/mcp หรือส่วนหัว Bearer YOUR_KEY
  • "Invalid key": ตรวจสอบที่ serpapi.com/dashboard
  • "Rate limit exceeded": รอสักครู่หรืออัปเกรดแพ็กเกจ SerpApi
  • "No results": ลองใช้คำค้นหาหรือเครื่องมือค้นหาอื่น

นโยบายความเป็นส่วนตัว

  • ส่ง: เฉพาะพารามิเตอร์ที่โฮสต์ MCP ส่งให้กับการเรียกใช้เครื่องมือ เซิร์ฟเวอร์จะไม่เห็นส่วนที่เหลือของบทสนทนา หรือไฟล์ หน่วยความจำ หรือประวัติบนโฮสต์
  • ส่งต่อ: การค้นหาแต่ละครั้งจะส่งไปยัง serpapi.com พร้อมคีย์ API ของคุณ และส่งผลลัพธ์กลับมาโดยไม่เปลี่ยนแปลง ดู นโยบายความเป็นส่วนตัวของ SerpApi เพื่อดูวิธีที่ SerpApi จัดการการค้นหาและบัญชี
  • เก็บรักษา: mcp.serpapi.com บันทึกเมตริกคำขอ (เมธอด รหัสสถานะ ระยะเวลา) และไม่จัดเก็บคำค้นหาหรือผลลัพธ์ คีย์ในพาธ URL อาจปรากฏในบันทึกคำขอ จึงแนะนำให้ใช้ส่วนหัว
  • bundle ในเครื่อง: ส่วนขยาย Claude Desktop ทำงานบนเครื่องของคุณ เก็บคีย์ไว้ในการตั้งค่าของ Claude Desktop และเรียก serpapi.com โดยตรง ไม่มีข้อมูลใดผ่าน mcp.serpapi.com
  • ติดต่อ: privacy@serpapi.com หรือเปิด issue

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

ดู CONTRIBUTING.md สำหรับการตั้งค่าสภาพแวดล้อมการพัฒนา คำสั่งรีเฟรชสคีมา การทดสอบ การสร้าง Docker และ MCP Bundle รวมถึงการเผยแพร่รุ่น

ใบอนุญาต

MIT License — ดูรายละเอียดในไฟล์ LICENSE