Jawaban singkat
Bagaimana cara menambahkan pembaca halaman web ke Claude Desktop atau Cursor dengan MCP?
Jalankan MCP server kecil yang mengekspos tool read_url yang memanggil WebReaderAPI, lalu daftarkan di pengaturan MCP klien Anda dengan API key Anda di env. Model kemudian dapat membaca halaman publik mana pun sebagai Markdown bersih. Setiap pembacaan halaman dikenai biaya 1 kredit, 2 dengan browser, mulai dari US$0,07/1K halaman per Oktober 2026. Tanpa KYC; bayar dengan kripto.
MCP server sekilas
| Bahasa | Python 3.10+, dengan paket mcp dan httpx |
|---|---|
| Transport | stdio: klien memulai server sebagai proses lokal |
| Alat | read_url(url, max_chars) → judul, URL sumber, lalu Markdown halaman |
| Kenapa bukan web_fetch | Claude Code dan OpenClaw sudah menyertakan tool bawaan dengan nama tersebut |
| Key | Dibaca dari WEBREADER_API_KEY di environment server |
| Penagihan | 1 kredit = 1 halaman dibaca tanpa browser; 2 kredit jika halaman memerlukan browser untuk merender JavaScript. Permintaan yang gagal, atau yang ditolak oleh robots.txt suatu situs, tidak dikenai biaya |
Kenapa tool read_url dan bukan web_fetch?
Karena dua tool dengan nama yang sama membingungkan klien maupun model. Claude Code dan OpenClaw sudah menyertakan tool bernama web_fetch. Nama yang berbeda, read_url, dan deskripsi yang jelas membuat model memilih tool kami saat membutuhkan konten utama sebuah halaman, termasuk halaman JavaScript dan PDF.
Tool ini mengembalikan teks, bukan JSON. Model menangani header singkat dan Markdown lebih baik daripada field bersarang, dan header tersebut menjaga URL sumber tetap terlihat sehingga jawaban dapat mengutipnya.
import os
import httpx
from mcp.server.fastmcp import FastMCP
API = "https://webreaderapi.com/api/v1/read"
KEY = os.environ["WEBREADER_API_KEY"]
mcp = FastMCP("webreaderapi")
@mcp.tool()
def read_url(url: str, max_chars: int = 20000) -> str:
"""Read a public web page and return its main content as Markdown.
Use it when the user gives a link or when a page must be read to answer.
max_chars caps the length of the returned text (1,000 to 500,000).
"""
params = {"url": url, "max_chars": max(1000, min(int(max_chars), 500000))}
try:
resp = httpx.get(API, params=params, headers={"Authorization": "Bearer " + KEY}, timeout=75)
except httpx.HTTPError as exc:
return "Network error while reading the page: " + str(exc)
body = resp.json()
if resp.status_code != 200:
err = body.get("error", {})
return "Could not read the page: " + err.get("code", str(resp.status_code)) + ". " + err.get("message", "")
title = body.get("title") or url
return "# " + title + "\nSource: " + body.get("final_url", url) + "\n\n" + body.get("markdown", "")
if __name__ == "__main__":
mcp.run()
Bagaimana cara menginstal dan menguji server ini?
Buat virtual environment, instal mcp dan httpx, lalu simpan file di atas. Paket mcp adalah SDK Python resmi dari Model Context Protocol; FastMCP mengubah fungsi Python bertipe menjadi tool, menggunakan docstring sebagai deskripsinya.
Sebelum menghubungkannya ke klien, jalankan file tersebut sekali dari terminal dengan API key Anda sudah disetel. Server akan diam menunggu klien di stdin, yang berarti server berhasil dijalankan; hentikan dengan Ctrl+C.
python -m venv .venv
. .venv/bin/activate
pip install "mcp[cli]" httpx
WEBREADER_API_KEY="your-key" python webreader_mcp.pyBagaimana cara mendaftarkannya di Claude Desktop?
Buka pengaturan developer Claude Desktop, edit claude_desktop_config.json, dan tambahkan entri di bawah mcpServers. Gunakan path absolut: Python dari virtual environment Anda dan file server. Letakkan API key di env, agar tidak pernah muncul di argumen tool atau di percakapan. Mulai ulang Claude Desktop, dan read_url muncul di daftar tool.
Cursor membaca struktur mcpServers yang sama dari file konfigurasi MCP-nya sendiri, dan Claude Code dapat mendaftarkan perintah yang sama dengan perintah claude mcp add-nya. Untuk OpenClaw, lihat halaman OpenClaw.
{
"mcpServers": {
"webreaderapi": {
"command": "/home/you/webreader/.venv/bin/python",
"args": ["/home/you/webreader/webreader_mcp.py"],
"env": { "WEBREADER_API_KEY": "your-key" }
}
}
}Bagaimana cara menjaga halaman tetap dalam konteks model?
Turunkan max_chars. Nilai default 20.000 karakter cukup untuk sebagian besar artikel dan mencegah halaman panjang memenuhi konteks. Model yang membaca beberapa halaman dalam satu jawaban lebih baik dengan 8.000 hingga 12.000 per halaman.
Minta model membaca halaman yang dibutuhkannya, bukan setiap tautan yang dilihatnya. Satu kalimat singkat dalam instruksi proyek Anda, seperti "baca maksimal tiga halaman per pertanyaan", menjaga biaya dan konteks tetap terkendali.
Apa yang terjadi saat situs menolak pembacaan?
Tool mengembalikan pesan singkat beserta kode error, seperti blocked_by_robots atau target_refused, dan tidak ada yang ditagih. Kami menghormati robots.txt: crawler kami mengidentifikasi diri sebagai WebReaderAPI, mengikuti aturan yang ditulis untuknya atau untuk semua robot, dan tidak membaca halaman yang tidak diizinkan situs. Halaman yang ditolak tidak dikenai biaya. Jika suatu situs menolak permintaan kami, kami mengembalikan jawabannya: kami tidak pernah menyelesaikan CAPTCHA, masuk ke akun, atau mencoba mengatasi blokir atau paywall. Model kemudian dapat menyatakan bahwa halaman tidak tersedia untuk pembaca otomatis dan menggunakan sumber lain.
MCP server: pertanyaan umum
Apakah ada paket MCP resmi WebReaderAPI?
Tidak. File di halaman ini adalah integrasinya: 40 baris yang dapat Anda baca, ubah, dan jalankan sendiri. Tidak ada yang perlu diinstal dari kami, dan API key Anda tidak pernah meninggalkan mesin Anda kecuali dalam panggilan ke API kami.
Apakah model dapat mencari di web dengan server ini?
Tidak. read_url membaca halaman yang alamatnya sudah Anda atau model miliki. Pasangkan dengan tool pencarian apa pun yang ditawarkan klien Anda; model mencari, lalu membaca halaman yang penting.
Berapa biaya menjalankan asisten dengan tool ini?
Satu kredit per pembacaan halaman, dua saat browser diperlukan. Asisten yang membaca 50 halaman sehari menggunakan sekitar 1.500 kredit per bulan, dan 10.000 halaman (US$3,75) menutupinya untuk sekitar enam bulan.
Apakah server ini bekerja offline?
Tidak. Server ini memanggil https://webreaderapi.com/api/v1/read untuk setiap halaman, jadi membutuhkan akses internet dan API key yang valid.