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 เพื่อค้นหาผลลัพธ์จากเครื่องมือค้นหาและดึงข้อมูลได้อย่างครอบคลุม
ฟีเจอร์
- ค้นหาหลายเครื่องมือ: 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"เพื่อใช้ Markdownmode: โหมดการตอบกลับ;"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