← Discover MCPs and Agents
t
AgentOtherGitHub

tavily-mcp-agent

Links

README

From the repo.

Tavily MCP Agent สำหรับ Google ADK

ระบบค้นหาและวิเคราะห์ข่าวที่ใช้ Google ADK (Agent Development Kit) ร่วมกับ Tavily MCP (Model Context Protocol) เพื่อรวบรวมข้อมูลข่าวจากหลายเว็บไซต์อย่างครบถ้วนและแม่นยำ

เครื่องมือที่ใช้พัฒนา

เครื่องมือที่ใช้ในการพัฒนา

ระบบพัฒนาโดยใช้เครื่องมือต่างๆ ดังแสดงในภาพ ประกอบด้วย Google ADK, Tavily MCP, Gemini API และเครื่องมืออื่นๆ ที่จำเป็นสำหรับการทำงานของ Agent

ความสามารถหลัก

การค้นหาแบบหลายเครื่องมือ

  • tavily-search: ค้นหาบทความและเนื้อหาที่เกี่ยวข้อง
  • tavily-extract: ดึงเนื้อหาฉบับเต็มจาก URL ที่กำหนด
  • tavily-map: สำรวจโครงสร้างและหน้าต่างๆ ของเว็บไซต์
  • tavily-crawl: รวบรวมข้อมูลอย่างละเอียดและครอบคลุม

ฟีเจอร์พิเศษ

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

รองรับภาษาไทยและภาษาอังกฤษ

  • รองรับคำค้นหาภาษาไทยและภาษาอังกฤษ
  • สามารถระบุเว็บไซต์เป้าหมายได้ (เช่น thairath.co.th, bbc.com/thai)
  • ปรับแต่งสำหรับการค้นหาข่าวโดยเฉพาะ
  • แสดงแหล่งที่มาของข้อมูลอย่างชัดเจน

ความต้องการของระบบ (Prerequisites)

ก่อนเริ่มใช้งาน ต้องติดตั้งโปรแกรมต่อไปนี้ให้ครบก่อน ตามลำดับ:

โปรแกรมเวอร์ชันขั้นต่ำใช้ทำอะไรคำสั่งตรวจสอบ
Python3.10+ (แนะนำ 3.12+)รัน Google ADK และตัว agentpython --version
pipมากับ Pythonติดตั้ง Python packagespython -m pip --version
Node.js + npmNode 18+รัน Tavily MCP server ผ่าน npxnode --version และ npx --version
Gitใดก็ได้clone โปรเจกต์git --version

สำคัญ: Tavily MCP server ถูกเรียกผ่าน npx tavily-mcp@latest ขณะ agent ทำงาน ดังนั้น ต้องมี Node.js/npx ในเครื่องเสมอ ไม่งั้น agent จะค้นหาไม่ได้

วิธีติดตั้งโปรแกรมที่จำเป็น

1. Python — ดาวน์โหลดจาก https://www.python.org/downloads/

  • ตอนติดตั้งบน Windows ให้ติ๊ก ☑ "Add Python to PATH"

2. Node.js (มาพร้อม npm/npx) — ดาวน์โหลด LTS จาก https://nodejs.org

  • ตรวจสอบหลังติดตั้ง: npx --version ต้องขึ้นเลขเวอร์ชัน

3. Git — ดาวน์โหลดจาก https://git-scm.com/downloads

ตรวจสอบว่าครบทุกตัวก่อนไปต่อ:

python --version   # เช่น Python 3.12.x
npx --version      # เช่น 11.x.x
git --version      # เช่น git version 2.x

การติดตั้ง

1. Clone Repository

git clone https://github.com/spped2000/tavily-mcp-agent.git
cd tavily-mcp-agent

2. สร้างและเปิดใช้ Virtual Environment

แนะนำให้ใช้ virtual environment เพื่อแยก dependencies ออกจาก Python หลัก

Windows (PowerShell):

python -m venv .venv
.venv\Scripts\Activate.ps1

ถ้าเจอ error เรื่อง execution policy ให้รัน: Set-ExecutionPolicy -Scope CurrentUser RemoteSigned ครั้งเดียว

Windows (Command Prompt):

python -m venv .venv
.venv\Scripts\activate.bat

macOS/Linux:

python3 -m venv .venv
source .venv/bin/activate

เมื่อ activate สำเร็จจะเห็น (.venv) นำหน้า prompt

3. ติดตั้ง Dependencies

pip install google-adk

แพ็กเกจ google-adk จะติดตั้ง dependencies ที่จำเป็นให้ครบ (รวมถึง google-genai และ mcp)

ตรวจสอบว่าติดตั้งสำเร็จ:

adk --version      # เช่น adk, version 1.23.0

หมายเหตุ: ไม่ต้องติดตั้ง Tavily MCP server เองล่วงหน้า เพราะ npx -y tavily-mcp@latest จะดาวน์โหลดและรันให้อัตโนมัติครั้งแรกที่ใช้งาน (ครั้งแรกอาจใช้เวลาสักครู่)

4. ตั้งค่า Environment Variables (API Keys)

โปรเจกต์นี้ต้องใช้ API key 2 ตัว คือ Tavily (สำหรับค้นหา) และ Google Gemini (สำหรับ LLM)

สร้างไฟล์ชื่อ .env ไว้ใน โฟลเดอร์ my_agent/ (ADK โหลด .env จากโฟลเดอร์ของ agent):

# Tavily API key (สำหรับเครื่องมือค้นหา)
TAVILY_API_KEY=your_tavily_api_key_here

# Google Gemini API key (สำหรับโมเดล LLM)
GOOGLE_API_KEY=your_google_api_key_here

# ใช้ Gemini API โดยตรง (ไม่ใช่ Vertex AI)
GOOGLE_GENAI_USE_VERTEXAI=FALSE

สำคัญ: ต้องมีครบทั้ง 3 บรรทัด หากขาด GOOGLE_API_KEY ตัว agent จะเรียกโมเดลไม่ได้ และหากขาด TAVILY_API_KEY ตัว MCP server จะ start ไม่ขึ้น

วิธีขอ Tavily API key:

  1. เข้าไปที่ https://tavily.com แล้วสมัครสมาชิก
  2. ไปที่หน้า dashboard
  3. คัดลอก API key (ขึ้นต้นด้วย tvly-...)

วิธีขอ Google Gemini API key (ฟรี):

  1. เข้าไปที่ https://aistudio.google.com/app/apikey
  2. ล็อกอินด้วยบัญชี Google
  3. กด "Create API key" แล้วคัดลอกค่า (ขึ้นต้นด้วย AIza...)

⚠️ ไฟล์ .env ถูกใส่ไว้ใน .gitignore แล้ว อย่า commit API key ขึ้น repository เด็ดขาด

5. ตรวจสอบก่อนรันจริง

ตรวจว่า agent โหลดได้และ key ครบ:

python -c "from my_agent import agent; print('OK:', agent.root_agent.name, '|', agent.root_agent.model)"

ถ้าได้ผลลัพธ์ OK: tavily_agent | gemini-2.5-flash แปลว่าพร้อมใช้งาน

โครงสร้างโปรเจ็กต์

tavily-mcp-agent/
├── my_agent/
│   ├── __init__.py
│   ├── agent.py          # ไฟล์กำหนดค่าหลัก (model, instructions, tools)
│   └── .env              # API keys (สร้างเอง — ไม่ถูก commit)
├── .gitignore           # กฎการ ignore ไฟล์ใน git
└── README.md            # ไฟล์นี้

กลยุทธ์การทำงาน

ระบบใช้กลยุทธ์หลายขั้นตอนเพื่อให้ได้ข้อมูลที่ครบถ้วนและแม่นยำที่สุด:

ขั้นที่ 1: การค้นหาแบบขนาน

  • ค้นหาแต่ละเว็บไซต์พร้อมกัน
  • ใช้พารามิเตอร์ที่เหมาะสม: include_answer, include_raw_content, max_results: 10
  • กำหนด search_depth: "advanced" เพื่อผลลัพธ์ที่ละเอียด
  • สำหรับข่าว: ใช้ topic: "news" และ time_range: "week"

ขั้นที่ 2: การดึงเนื้อหาเต็ม

  • เลือกบทความสำคัญจากแต่ละเว็บไซต์
  • ใช้ tavily-extract เพื่อดึงเนื้อหาฉบับเต็ม
  • ไม่พึ่งพาเพียงส่วนย่อยจากผลการค้นหา
  • รับประกันความแม่นยำและบริบทที่สมบูรณ์

ขั้นที่ 3: การสำรวจโครงสร้าง (ทางเลือก)

  • สำหรับการค้นหาที่ต้องการความครอบคลุม
  • ใช้ tavily-map เพื่อค้นหาหน้าข่าวทั้งหมด
  • สำรวจโครงสร้างเว็บไซต์อย่างชาญฉลาด

ขั้นที่ 4: การรวบรวมข้อมูลแบบละเอียด (ทางเลือก)

  • สำหรับคำขอที่ต้องการข้อมูลครบถ้วนมาก
  • ใช้ tavily-crawl เพื่อรวบรวมข้อมูลอย่างเป็นระบบ
  • มีการค้นพบหน้าที่เกี่ยวข้องอย่างชาญฉลาด

การใช้งาน

เริ่มต้นระบบ

adk web

เปิดเบราว์เซอร์ไปที่ URL ที่แสดง (โดยปกติคือ http://localhost:8000)

ตัวอย่างคำถาม

การค้นหาพื้นฐาน:

ค้นหาข่าวล่าสุดเกี่ยวกับปัญญาประดิษฐ์

การค้นหาภาษาไทย:

สรุปข่าวน้ำท่วมประเทศไทยล่าสุด

การค้นหาจากหลายเว็บไซต์ (แนะนำสำหรับผลลัพธ์ที่ดีที่สุด):

สรุปข่าวน้ำท่วมประเทศไทยล่าสุด จาก https://www.thairath.co.th/ และ https://www.bbc.com/thai

ระบบจะ:

  1. แยกชื่อโดเมน: ["thairath.co.th", "bbc.com"]
  2. ค้นหาทั้งสองเว็บไซต์แบบขนาน
  3. ดึงเนื้อหาเต็มจากบทความสำคัญ
  4. เปรียบเทียบและสังเคราะห์ข้อมูล
  5. แสดงผลลัพธ์ที่จัดกลุ่มตามแหล่งที่มา

การวิเคราะห์แบบครอบคลุม:

ค้นหาข้อมูลทั้งหมดเกี่ยวกับการเปลี่ยนแปลงสภาพภูมิอากาศจาก bbc.com

ระบบอาจใช้:

  • tavily-search เพื่อหาบทความที่เกี่ยวข้อง
  • tavily-map เพื่อค้นหาหน้าที่เกี่ยวข้องทั้งหมด
  • tavily-extract เพื่อดึงเนื้อหาเต็ม
  • tavily-crawl เพื่อสำรวจอย่างละเอียด (ถ้าจำเป็น)

รูปแบบการตอบ

ระบบจะแสดงผลลัพธ์ในรูปแบบที่จัดระเบียบ:

[สรุปภาพรวม - สังเคราะห์ข้อมูลจากทุกแหล่ง]

## ข้อมูลจากแหล่งต่างๆ

### จาก thairath.co.th:
1. **[ชื่อบทความ]**
   - URL: https://thairath.co.th/article/...
   - วันที่: [วันที่]
   - สาระสำคัญ: [ประเด็นสำคัญ]
   - รายละเอียด: [รายละเอียดที่ดึงมา]

2. **[ชื่อบทความ 2]**
   - ...

### จาก bbc.com/thai:
1. **[ชื่อบทความ]**
   - URL: https://bbc.com/thai/article/...
   - วันที่: [วันที่]
   - สาระสำคัญ: [ประเด็นสำคัญ]
   - รายละเอียด: [รายละเอียดที่ดึงมา]

## สรุปรวม
[การวิเคราะห์เปรียบเทียบ รูปแบบ และข้อค้นพบสำคัญ]

## ลิงก์ทั้งหมด
[รายการ URL ทั้งหมดที่จัดกลุ่มตามแหล่งที่มา]

เครื่องมือและพารามิเตอร์

ระบบมีเครื่องมือทั้งหมด 4 ตัวจาก Tavily MCP:

1. tavily-search

ค้นหาบทความและเนื้อหาที่เกี่ยวข้อง

พารามิเตอร์สำคัญ:

พารามิเตอร์ประเภทคำอธิบายค่าเริ่มต้น
querystringคำค้นหา (จำเป็น)จากผู้ใช้
search_depthstring"basic" หรือ "advanced""advanced"
topicstring"general" หรือ "news""news" (สำหรับข่าว)
include_answerbooleanรวมสรุปจาก AItrue
include_raw_contentbooleanรวมเนื้อหาต้นฉบับtrue
max_resultsnumberจำนวนผลลัพธ์สูงสุด (5-20)10
include_domainsarrayระบุเว็บไซต์เฉพาะดึงอัตโนมัติ
time_rangestring"day", "week", "month", "year""week" (สำหรับข่าว)

2. tavily-extract

ดึงเนื้อหาฉบับเต็มจาก URL เฉพาะ

พารามิเตอร์:

  • urls: รายการ URL ที่ต้องการดึงข้อมูล
  • extract_text: true (ดึงข้อความ)
  • extract_links: true (ดึงลิงก์)
  • extract_images: true (ดึงรูปภาพ)

ใช้เมื่อ: หลังจากค้นหาเพื่อดึงเนื้อหาบทความเต็ม

3. tavily-map

ค้นพบโครงสร้างและหน้าต่างๆ ของเว็บไซต์

พารามิเตอร์:

  • url: URL หลักที่จะสำรวจ
  • max_depth: ความลึกในการสำรวจ (ค่าเริ่มต้น: 2)
  • max_pages: จำนวนหน้าสูงสุด (ค่าเริ่มต้น: 50)

ใช้เมื่อ: ต้องการสำรวจเว็บไซต์อย่างครอบคลุม

4. tavily-crawl

รวบรวมข้อมูลอย่างละเอียดพร้อมการค้นพบอัจฉริยะ

พารามิเตอร์:

  • url: URL หลักที่จะรวบรวมข้อมูล
  • max_depth: ความลึกในการรวบรวม (ค่าเริ่มต้น: 2)
  • max_pages: จำนวนหน้าสูงสุด (ค่าเริ่มต้น: 30)
  • extract: true (ดึงเนื้อหาขณะรวบรวม)
  • intelligent_discovery: true (การค้นพบด้วย AI)

ใช้เมื่อ: ต้องการข้อมูลทั้งหมดหรือการวิเคราะห์ที่ครบถ้วน

การปรับแต่ง

แก้ไขพฤติกรรมของ Agent

แก้ไขไฟล์ my_agent/agent.py:

root_agent = Agent(
    model="gemini-2.5-flash",  # เปลี่ยน model ที่นี่
    name="tavily_agent",
    instruction="...",  # แก้ไข instructions ที่นี่
    tools=[...]
)

เปลี่ยน Model

Model ที่ใช้ได้จาก Google ADK:

  • gemini-2.5-flash (ปัจจุบัน — เร็ว เสถียร เหมาะกับการใช้งานทั่วไป)
  • gemini-2.5-pro (คุณภาพสูงกว่าสำหรับงานวิเคราะห์หลายแหล่ง แต่ช้า/แพงกว่า)
  • gemini-2.0-flash

หมายเหตุ: หลีกเลี่ยง model ที่เป็น *-preview เพราะอาจถูกปลดระวาง (deprecated) และทำให้ใช้งานไม่ได้ (เช่น gemini-3-pro-preview เดิมที่คืน error 404 NOT_FOUND)

ปรับพารามิเตอร์การค้นหา

แก้ไข instructions ในไฟล์ agent.py เพื่อเปลี่ยน:

  • พารามิเตอร์การค้นหาเริ่มต้น
  • รูปแบบการตอบ
  • พฤติกรรมเฉพาะภาษา
  • กฎการกรองโดเมน

การแก้ปัญหา

ปัญหาที่พบบ่อย

1. ไม่พบ TAVILY_API_KEY

  • ตรวจสอบว่าไฟล์ .env มีอยู่และมี API key ที่ถูกต้อง
  • ตรวจสอบว่า virtual environment ถูก activate แล้ว

2. ไม่พบคำสั่ง npx

  • ติดตั้ง Node.js จาก https://nodejs.org
  • ตรวจสอบว่า npm อยู่ใน system PATH

3. Connection timeout

  • ตรวจสอบการเชื่อมต่ออินเทอร์เน็ต
  • ตรวจสอบว่า API key ถูกต้อง
  • ลองเพิ่ม timeout ในไฟล์ agent.py (ปัจจุบันคือ 30 วินาที)

4. Agent ไม่แสดงแหล่งอ้างอิง

  • Restart ADK web server
  • ตรวจสอบว่าไฟล์ agent.py ถูก update แล้ว
  • ตรวจสอบ console สำหรับข้อความ error

โหมด Debug

เปิดใช้งาน debug logging:

adk web --debug

ตัวอย่างการใช้งาน

ภาพตัวอย่างการทำงานของระบบ

ด้านล่างนี้เป็นภาพตัวอย่างการใช้งาน Agent ในการค้นหาและวิเคราะห์ข่าวจากหลายเว็บไซต์

ตัวอย่างการทำงาน 1

ตัวอย่างหน้าจอการเริ่มต้นใช้งานระบบ

ตัวอย่างการทำงาน 2

ตัวอย่างการค้นหาข่าวจากหลายเว็บไซต์

ตัวอย่างการทำงาน 3

แสดงการใช้งาน tavily-search และ tavily-extract

ตัวอย่างการทำงาน 4

ตัวอย่างการแสดงผลลัพธ์ที่จัดกลุ่มตามแหล่งที่มา

ตัวอย่างการทำงาน 5

ตัวอย่างการสรุปข้อมูลจากหลายแหล่งพร้อมรายละเอียดเต็ม

การพัฒนา

โครงสร้างโค้ด

  • agent.py: การกำหนดค่า agent หลักพร้อม instructions และ tools
  • MCPToolset: จัดการการเชื่อมต่อ MCP กับ Tavily server
  • StdioConnectionParams: กำหนดค่าการเชื่อมต่อ stdio สำหรับ MCP

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

ยินดีรับการมีส่วนร่วม กรุณาส่ง Pull Request

ขั้นตอนการพัฒนา

  1. Fork repository
  2. สร้าง feature branch (git checkout -b feature/amazing-feature)
  3. Commit การเปลี่ยนแปลง (git commit -m 'Add amazing feature')
  4. Push ไปยัง branch (git push origin feature/amazing-feature)
  5. เปิด Pull Request

แหล่งข้อมูล

ใบอนุญาต

MIT License

ข้อมูลเพิ่มเติม


หมายเหตุ: ระบบต้องการ API key ที่ถูกต้องสำหรับทั้ง Google Cloud (สำหรับ Gemini models) และ Tavily (สำหรับการค้นหา) กรุณาตรวจสอบ API quotas และการตั้งค่าการเรียกเก็บเงินสำหรับการใช้งานจริง

Collected info

  • 10 stars
  • 5 forks
  • Language: Python
  • Source updated: 5/28/2026