Jawaban singkat
Bagaimana cara menambahkan web search MCP server ke Claude Code atau Claude Desktop?
Simpan server Python singkat di halaman ini, yang mengekspos tool search_web dan read_urls yang memanggil LLMWebSearch, lalu daftarkan dengan claude mcp add atau di claude_desktop_config.json, dengan API key Anda di env. Model kemudian dapat mencari di web langsung dan membaca halaman teratas sebagai Markdown. Satu pencarian berbiaya 1 kredit, mulai dari US$1,20/1K pencarian per Oktober 2026. Tanpa KYC; bayar dengan kripto.
MCP server secara sekilas
| Bahasa | Python 3.10+, dengan paket mcp dan httpx |
|---|---|
| Transport | stdio: klien menjalankan server sebagai proses lokal |
| Tool 1 | search_web(query, max_results=5, read=3) → sumber bernomor dengan URL dan teks halaman |
| Tool 2 | read_urls(urls) → konten utama dari 1 hingga 20 halaman yang diketahui |
| Nama | Bukan web_search atau web_fetch: Claude Code dan OpenClaw sudah menyertakan tool dengan nama tersebut |
| Key | Dibaca dari LLMWEBSEARCH_API_KEY di environment server |
| Penagihan | Satu kredit membayar satu pencarian: hingga 20 hasil berperingkat, dengan halaman dari 3 hasil teratas dibaca dan dikembalikan sebagai Markdown. Membaca 4 hingga 10 halaman menjadi 2 kredit. Panggilan yang berakhir dengan error tidak dikenakan biaya. Membaca halaman yang URL-nya sudah Anda miliki dikenakan 1 kredit untuk setiap grup 3 halaman yang mulai dikembalikan beserta kontennya, hingga 20 URL per panggilan; URL yang ditolak atau gagal tidak dihitung |
Mengapa tool-nya bernama search_web dan read_urls?
Karena dua tool dengan nama sama membingungkan klien dan model. Claude Code dan OpenClaw masing-masing menyertakan tool bawaan bernama web_search dan web_fetch. Nama yang berbeda, dengan deskripsi yang jelas, memungkinkan model memilih tool kami dengan sengaja dan memungkinkan Anda membedakan panggilannya di log.
Kedua tool mengembalikan teks, bukan JSON mentah. Setiap sumber diawali dengan nomor, judul, dan URL-nya, sehingga model dapat mengutip [1] atau [2] dan pembaca dapat memeriksa halamannya.
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()
Bagaimana cara menginstal dan menguji server-nya?
Buat virtual environment, instal mcp dan httpx, lalu simpan file di atas. mcp adalah SDK Python resmi Model Context Protocol; kelas FastMCP-nya mengubah fungsi Python bertipe menjadi tool dan menggunakan setiap docstring sebagai deskripsi tool.
Jalankan file tersebut sekali dari terminal dengan API key yang sudah disetel. File itu lalu menunggu dengan tenang untuk klien di standard input, yang berarti berfungsi; hentikan dengan Ctrl+C. Error dari API dimunculkan sebagai tool error beserta kodenya, sehingga model melihat rate_limited atau insufficient_credits dalam kata-kata biasa.
python -m venv .venv
. .venv/bin/activate
pip install "mcp[cli]" httpx
LLMWEBSEARCH_API_KEY="your-key" python llmwebsearch_mcp.pyBagaimana cara menambahkannya ke Claude Code?
Gunakan claude mcp add. Dokumentasi Claude Code memberikan bentuk claude mcp add [options] <name> -- <command> [args...]: opsi miliknya sendiri lebih dulu, lalu tanda dash ganda, lalu perintah yang menjalankan server. Environment variable diletakkan di --env KEY=value, dan setidaknya satu opsi lain, seperti --transport stdio, harus berada di antara --env dan nama server.
Tambahkan --scope user agar server tersedia di semua proyek Anda; scope default, local, hanya mencakup proyek saat ini. Gunakan path absolut untuk Python dari virtual environment Anda dan untuk file server.
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.pyBagaimana cara menambahkannya ke Claude Desktop dan klien lain?
Claude Desktop membaca server dari claude_desktop_config.json, di bawah mcpServers. Beri server sebuah nama, perintahnya, argumennya, dan objek env yang berisi key, lalu mulai ulang aplikasinya; search_web dan read_urls muncul di daftar tools.
Klien MCP lain, seperti Cursor, meminta tiga hal yang sama di pengaturan MCP mereka sendiri: sebuah perintah, argumennya, dan environment variable. Key tidak pernah muncul di argumen tool atau di percakapan.
{
"mcpServers": {
"llmwebsearch": {
"command": "/home/you/llmwebsearch/.venv/bin/python",
"args": ["/home/you/llmwebsearch/llmwebsearch_mcp.py"],
"env": { "LLMWEBSEARCH_API_KEY": "your-key" }
}
}
}Bagaimana cara menjaga pencarian tetap murah dan singkat?
Beri tahu model cara mencari dalam instruksi Anda: satu atau dua pencarian per pertanyaan, lalu baca lebih lanjut hanya jika sumber-sumbernya berbeda pendapat. Server sudah membatasi setiap halaman pada 5.000 karakter di search_web dan 12.000 di read_urls; turunkan angka tersebut untuk model kecil.
Setiap panggilan search_web dengan read hingga 3 adalah satu kredit. Asisten yang menjalankan 40 pencarian sehari memakai sekitar 1.200 kredit sebulan, jadi 5.000 pencarian (US$9,25) bertahan sekitar empat bulan. Kredit pencarian tidak memiliki tanggal kedaluwarsa: yang tidak Anda pakai bulan ini masih ada tahun depan.
Apa yang dilihat model ketika sebuah halaman tidak dapat dibaca?
Sumbernya tetap muncul, dengan nomor, judul, dan URL-nya, diikuti alasan dalam tanda kurung dan snippet pencarian. Pembaca kami mematuhi robots.txt: ia memperkenalkan diri sebagai LLMWebSearch, mengikuti aturan yang ditulis situs untuknya atau untuk semua robot, dan mengabaikan konten halaman apa pun yang tidak diizinkan untuk dibaca. Saat situs menolak pembaca kami, hasil kembali tanpa konten dan dengan status dari situs tersebut: kami tidak pernah memecahkan CAPTCHA, masuk ke akun, atau mengakali blokir atau paywall. Model kemudian dapat mengandalkan sumber lain atau menyatakan bahwa satu halaman tidak tersedia.
MCP server: pertanyaan umum
Apakah ada paket MCP LLMWebSearch resmi atau endpoint yang di-host?
Tidak. File di halaman ini adalah integrasinya: sekitar 50 baris yang dapat Anda baca dan ubah. File ini berjalan di mesin Anda, dan key Anda hanya dikirim ke API kami.
Apakah saya harus mematikan web search bawaan Claude Code?
Tidak perlu. Keduanya bisa tetap aktif; deskripsinya memberi tahu model apa fungsi masing-masing. Pertahankan milik kami jika Anda ingin teks halaman dalam hasil, harga tetap per pencarian, atau satu tempat untuk log pencarian Anda.
Bisakah saya memakainya dengan OpenClaw?
Bisa, sebagai MCP server yang didaftarkan dengan openclaw mcp add. Halaman OpenClaw memberikan perintahnya dan menjelaskan bagaimana ia berdampingan dengan penyedia pencarian bawaan OpenClaw.
Apakah server menyimpan pencarian saya?
Tidak. Server tidak menyimpan apa pun di antara panggilan. Di sisi kami, Kami tidak melatih model apa pun dengan kueri Anda atau dengan apa yang dikembalikan API, dan kami tidak menambahkan aturan kami sendiri yang melarang penyimpanan hasil; hak situs yang halaman-halamannya Anda baca tetap berlaku.
Sumber (1)
- Menghubungkan Claude Code ke alat melalui MCP — Claude Code docs (read 2026-10-22)