# Web search MCP server สำหรับ Claude Code, Claude Desktop, Cursor และ MCP client อื่นๆ

> MCP server ค้นหาเว็บสำหรับ Claude Code, Claude Desktop และ Cursor: ไฟล์ Python สั้นๆ พร้อม tool search_web และ read_urls ลงทะเบียนด้วยคำสั่งเดียว ไม่ต้อง KYC

- URL: https://llmwebsearch.com/th/docs/mcp/
- อัปเดตล่าสุด: 2026-10-22
- ผู้เผยแพร่: LLMWebSearch (https://llmwebsearch.com)

ให้ tool สองตัวแก่ MCP client ใดก็ได้: `search_web` ซึ่งคืนแหล่งข้อมูลที่จัดอันดับแล้วพร้อมหน้าเว็บยอดนิยมที่อ่านมาให้แล้ว และ `read_urls` ซึ่งอ่านลิงก์ที่โมเดลมีอยู่แล้ว เซิร์ฟเวอร์เป็นไฟล์ Python ไฟล์เดียวที่รันบนเครื่องคุณ โดยมี key อยู่ใน environment

**คำตอบสั้น — ฉันจะเพิ่ม web search MCP server ให้ Claude Code หรือ Claude Desktop ได้อย่างไร?**

บันทึกเซิร์ฟเวอร์ Python สั้นๆ ในหน้านี้ ซึ่งเปิดให้ใช้ tool `search_web` และ `read_urls` ที่เรียก **LLMWebSearch** แล้วลงทะเบียนด้วย `claude mcp add` หรือใน `claude_desktop_config.json` โดยมี key ของคุณใน `env` จากนั้นโมเดลจะค้นเว็บสดและอ่านหน้าเว็บยอดนิยมเป็น Markdown ได้ การค้นหาหนึ่งครั้งใช้ 1 เครดิต เริ่มต้นที่ US$1.20/1K การค้นหา ณ ตุลาคม 2026 ไม่ต้อง KYC จ่ายด้วยคริปโต

## MCP server โดยสรุป

| คุณลักษณะ | ค่า |
| --- | --- |
| ภาษา | Python 3.10+ พร้อมแพ็กเกจ `mcp` และ `httpx` |
| Transport | stdio: client เริ่มเซิร์ฟเวอร์เป็นโปรเซสภายในเครื่อง |
| Tool 1 | `search_web(query, max_results=5, read=3)` → แหล่งข้อมูลแบบมีหมายเลขพร้อม URL และข้อความจากหน้าเว็บ |
| Tool 2 | `read_urls(urls)` → เนื้อหาหลักของหน้าเว็บที่รู้อยู่แล้ว 1 ถึง 20 หน้า |
| ชื่อ | ไม่ใช่ `web_search` หรือ `web_fetch`: Claude Code และ OpenClaw มี tool ชื่อเหล่านี้อยู่แล้ว |
| Key | อ่านจาก `LLMWEBSEARCH_API_KEY` ใน environment ของเซิร์ฟเวอร์ |
| การเรียกเก็บเงิน | หนึ่งเครดิตจ่ายสำหรับการค้นหาหนึ่งครั้ง: ผลลัพธ์แบบจัดอันดับสูงสุด 20 รายการ โดยอ่านหน้าเว็บของ 3 รายการแรกและส่งกลับเป็น Markdown การอ่าน 4 ถึง 10 หน้าใช้ 2 เครดิต การเรียกที่จบลงด้วยข้อผิดพลาดไม่มีค่าใช้จ่าย. การอ่านหน้าเว็บที่คุณมี URL อยู่แล้วใช้ 1 เครดิตต่อกลุ่ม 3 หน้าที่เริ่มอ่านและส่งกลับพร้อมเนื้อหา สูงสุด 20 URL ต่อการเรียก; URL ที่ถูกปฏิเสธหรือล้มเหลวไม่ถูกนับ |

## ทำไม tool ถึงชื่อ search_web และ read_urls?

เพราะ tool สองตัวที่ชื่อซ้ำกันจะทำให้ client และโมเดลสับสน Claude Code และ OpenClaw ต่างมี tool ในตัวชื่อ `web_search` และ `web_fetch` ชื่อที่แตกต่างกันพร้อมคำอธิบายที่ชัดเจน ทำให้โมเดลเลือกของเราได้อย่างตั้งใจ และให้คุณแยกแยะการเรียกใน log ได้

ทั้งสอง tool คืนข้อความ ไม่ใช่ JSON ดิบ แหล่งข้อมูลแต่ละแหล่งเริ่มด้วยหมายเลข ชื่อเรื่อง และ URL เพื่อให้โมเดลอ้างอิง `[1]` หรือ `[2]` ได้ และผู้อ่านตรวจสอบหน้าเว็บได้

*llmwebsearch_mcp.py*

```python
import os

import httpx
from mcp.server.fastmcp import FastMCP

BASE = "https://llmwebsearch.com/api/v1"
HEADERS = {"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]}
mcp = FastMCP("llmwebsearch")


def _call(path: str, body: dict) -> dict:
    resp = httpx.post(BASE + path, json=body, headers=HEADERS, timeout=90)
    data = resp.json()
    if resp.status_code != 200:
        err = data.get("error", {})
        raise RuntimeError(err.get("code", str(resp.status_code)) + ": " + err.get("message", ""))
    return data


def _page(n: int, item: dict) -> str:
    head = f"[{n}] {item.get('title') or item['url']}\n{item['url']}\n"
    if item.get("content_status") == "ok":
        return head + item["content"]
    return head + "(not read: " + item.get("content_status", "unknown") + ") " + item.get("snippet", "")


@mcp.tool()
def search_web(query: str, max_results: int = 5, read: int = 3) -> str:
    """Search the live web and return numbered sources; the first `read` pages include their text.

    Use it for current facts, documentation and news. Cite sources by their number.
    """
    body = {"q": query, "max_results": max(1, min(max_results, 20)), "read": max(0, min(read, 10)), "max_chars": 5000}
    data = _call("/search", body)
    return "\n\n".join(_page(i, r) for i, r in enumerate(data["results"], start=1))


@mcp.tool()
def read_urls(urls: list[str]) -> str:
    """Read 1 to 20 public web pages whose URLs you already have and return their main text."""
    data = _call("/extract", {"urls": urls[:20], "max_chars": 12000})
    return "\n\n".join(_page(i, r) for i, r in enumerate(data["results"], start=1))


if __name__ == "__main__":
    mcp.run()

```

## ฉันจะติดตั้งและทดสอบเซิร์ฟเวอร์ได้อย่างไร?

สร้าง virtual environment ติดตั้ง `mcp` และ `httpx` แล้วบันทึกไฟล์ด้านบน `mcp` คือ Python SDK อย่างเป็นทางการของ Model Context Protocol คลาส `FastMCP` ของมันเปลี่ยนฟังก์ชัน Python ที่มี type เป็น tool และใช้ docstring ของแต่ละฟังก์ชันเป็นคำอธิบายของ tool

เริ่มไฟล์หนึ่งครั้งจาก terminal โดยตั้งค่า key ไว้ จากนั้นมันจะรอ client เงียบๆ บน standard input ซึ่งหมายความว่ามันทำงานได้ หยุดด้วย Ctrl+C ข้อผิดพลาดจาก API จะถูกโยนเป็น tool error พร้อม code เพื่อให้โมเดลเห็น `rate_limited` หรือ `insufficient_credits` เป็นคำธรรมดา

*ติดตั้งและเริ่มหนึ่งครั้ง*

```bash
python -m venv .venv
. .venv/bin/activate
pip install "mcp[cli]" httpx
LLMWEBSEARCH_API_KEY="your-key" python llmwebsearch_mcp.py
```

## ฉันจะเพิ่มมันใน Claude Code ได้อย่างไร?

ใช้ `claude mcp add` เอกสารของ Claude Code ให้รูปแบบ `claude mcp add [options] <name> -- <command> [args...]`: option ของมันเองมาก่อน แล้วตามด้วย double dash แล้วตามด้วยคำสั่งที่เริ่มเซิร์ฟเวอร์ environment variable ใส่ใน `--env KEY=value` และต้องมี option อื่นอย่างน้อยหนึ่งตัว เช่น `--transport stdio` คั่นระหว่าง `--env` กับชื่อเซิร์ฟเวอร์

เพิ่ม `--scope user` เพื่อให้เซิร์ฟเวอร์ใช้ได้ในทุกโปรเจกต์ของคุณ scope default คือ `local` ครอบคลุมเฉพาะโปรเจกต์ปัจจุบัน ใช้ absolute path สำหรับ Python ของ virtual environment และสำหรับไฟล์เซิร์ฟเวอร์

*ลงทะเบียนเซิร์ฟเวอร์ใน Claude Code*

```bash
claude mcp add --env LLMWEBSEARCH_API_KEY=your-key --transport stdio --scope user llmwebsearch \
  -- /home/you/llmwebsearch/.venv/bin/python /home/you/llmwebsearch/llmwebsearch_mcp.py
```

## ฉันจะเพิ่มมันใน Claude Desktop และไคลเอนต์อื่นๆ ได้อย่างไร?

Claude Desktop อ่านเซิร์ฟเวอร์จาก `claude_desktop_config.json` ภายใต้ `mcpServers` ตั้งชื่อให้เซิร์ฟเวอร์ ระบุ command อาร์กิวเมนต์ และออบเจกต์ `env` ที่เก็บคีย์ไว้ จากนั้นรีสตาร์ทแอป `search_web` และ `read_urls` จะปรากฏในรายการเครื่องมือ

ไคลเอนต์ MCP อื่นๆ เช่น Cursor จะขอสามอย่างเดียวกันนี้ในการตั้งค่า MCP ของตัวเอง ได้แก่ command อาร์กิวเมนต์ และ environment variables โดยคีย์จะไม่ปรากฏในอาร์กิวเมนต์ของเครื่องมือหรือในบทสนทนาเลย

*claude_desktop_config.json*

```json
{
  "mcpServers": {
    "llmwebsearch": {
      "command": "/home/you/llmwebsearch/.venv/bin/python",
      "args": ["/home/you/llmwebsearch/llmwebsearch_mcp.py"],
      "env": { "LLMWEBSEARCH_API_KEY": "your-key" }
    }
  }
}
```

## ฉันจะให้การค้นหาประหยัดและสั้นได้อย่างไร?

บอกโมเดลในคำสั่งของคุณว่าต้องค้นหาอย่างไร: หนึ่งหรือสองครั้งต่อคำถาม แล้วอ่านเพิ่มเฉพาะเมื่อแหล่งข้อมูลขัดแย้งกัน เซิร์ฟเวอร์จำกัดแต่ละหน้าไว้ที่ 5,000 ตัวอักษรใน `search_web` และ 12,000 ใน `read_urls` อยู่แล้ว ลดตัวเลขเหล่านั้นลงสำหรับโมเดลขนาดเล็ก

การเรียก `search_web` แต่ละครั้งที่ `read` ไม่เกิน 3 ใช้ 1 เครดิต ผู้ช่วยที่รันการค้นหา 40 ครั้งต่อวันจะใช้ประมาณ 1,200 เครดิตต่อเดือน ดังนั้น 5,000 การค้นหา (US$9.25) จะอยู่ได้ราวสี่เดือน เครดิตการค้นหาไม่มีวันหมดอายุ: สิ่งที่คุณไม่ได้ใช้ในเดือนนี้ยังอยู่ให้ใช้ในปีหน้า

## โมเดลเห็นอะไรเมื่อไม่สามารถอ่านหน้าเว็บได้?

แหล่งข้อมูลยังคงปรากฏ พร้อมหมายเลข ชื่อเรื่อง และ URL ตามด้วยเหตุผลในวงเล็บและ snippet จากผลการค้นหา ตัวอ่านของเราเคารพ robots.txt: แนะนำตัวว่าเป็น LLMWebSearch ทำตามกฎที่เว็บไซต์เขียนไว้สำหรับมันหรือสำหรับ robots ทั้งหมด และละเว้นเนื้อหาของหน้าใดก็ตามที่มันไม่ได้รับอนุญาตให้อ่าน เมื่อเว็บไซต์ปิดกั้นตัวอ่านของเรา ผลลัพธ์จะกลับมาโดยไม่มีเนื้อหาและมีสถานะของเว็บไซต์: เราไม่แก้ CAPTCHA ไม่ลงชื่อเข้าใช้บัญชี และไม่หลบเลี่ยงการบล็อกหรือ paywall จากนั้นโมเดลสามารถพึ่งพาแหล่งข้อมูลอื่นหรือบอกว่าหน้าหนึ่งไม่พร้อมใช้งาน

## MCP server: คำถามที่พบบ่อย

### มีแพ็กเกจ LLMWebSearch MCP อย่างเป็นทางการหรือ hosted endpoint หรือไม่?

ไม่มี ไฟล์ในหน้านี้คือการผสานรวม: ประมาณ 50 บรรทัดที่คุณอ่านและแก้ไขได้ มันทำงานบนเครื่องของคุณ และคีย์ของคุณส่งไปยัง API ของเราเท่านั้น

### ฉันควรปิด web search ในตัวของ Claude Code หรือไม่?

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

### ฉันใช้มันกับ OpenClaw ได้ไหม?

ได้ ในฐานะ MCP server ที่ลงทะเบียนด้วย `openclaw mcp add` [หน้า OpenClaw](https://llmwebsearch.com/th/docs/openclaw/) ให้ command และอธิบายว่ามันวางอยู่ข้างผู้ให้บริการค้นหาในตัวของ OpenClaw อย่างไร

### เซิร์ฟเวอร์เก็บการค้นหาของฉันไว้หรือไม่?

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

## แหล่งที่มา

1. [เชื่อมต่อ Claude Code กับเครื่องมือผ่าน MCP](https://code.claude.com/docs/en/mcp) — Claude Code docs (read 2026-10-22)

---

LLMWebSearch: LLMWebSearch คือ web search API สำหรับ AI agents ที่คืนผลการค้นหาที่จัดอันดับแล้วพร้อมเนื้อหาของหน้าอันดับต้นๆ ในรูปแบบ Markdown จ่ายด้วยคริปโตโดยไม่ต้องอัปโหลดเอกสารยืนยันตัวตน เครดิตแบบเติมล่วงหน้าตั้งแต่ US$1.20/1K การค้นหา ไม่มีวันหมดอายุ ไม่ต้อง KYC — ไม่ต้องใช้บัตรประชาชน ไม่ต้องเซลฟี่ ไม่ต้องใช้เอกสาร จ่ายด้วยคริปโต
