# Claude Code, Claude Desktop, Cursor ve diğer MCP istemcileri için web search MCP server

> Claude Code, Claude Desktop ve Cursor için web search MCP server: search_web ve read_urls araçları içeren kısa bir Python dosyası, tek komutla kaydedilir.

- URL: https://llmwebsearch.com/tr/docs/mcp/
- Son güncelleme: 2026-10-22
- Yayıncı: LLMWebSearch (https://llmwebsearch.com)

Herhangi bir MCP istemcisine iki araç verin: sıralı kaynakları en iyi sayfalar zaten okunmuş halde döndüren `search_web` ve modelin elinde zaten olan bağlantıları okuyan `read_urls`. Server, makinenizde çalışan ve anahtarınızı ortamında tutan tek bir Python dosyasıdır.

**Kısa yanıt — Claude Code veya Claude Desktop'a bir web search MCP server'ı nasıl eklerim?**

Bu sayfadaki kısa Python server'ı kaydedin; **LLMWebSearch** endpoint'ini çağıran `search_web` ve `read_urls` araçlarını sunar. Ardından onu `claude mcp add` ile ya da `claude_desktop_config.json` içinde, anahtarınız `env` içinde olacak şekilde kaydedin. Model bundan sonra canlı web'de arama yapabilir ve en iyi sayfaları Markdown olarak okuyabilir. Bir arama 1 kredi tutar; Ekim 2026 itibarıyla $1,20/1K arama itibarıyla. KYC yok; kripto ile ödeme yapın.

## MCP server'a kısa bir bakış

| Özellik | Değer |
| --- | --- |
| Dil | Python 3.10+, `mcp` ve `httpx` paketleriyle |
| Transport | stdio: istemci server'ı yerel bir süreç olarak başlatır |
| Araç 1 | `search_web(query, max_results=5, read=3)` → URL'ler ve sayfa metni içeren numaralı kaynaklar |
| Araç 2 | `read_urls(urls)` → bilinen 1 ile 20 sayfanın ana içeriği |
| Adlar | `web_search` veya `web_fetch` değil: Claude Code ve OpenClaw bu adlarla araçlar zaten sunuyor |
| Anahtar | `LLMWEBSEARCH_API_KEY` değişkeninden server'ın ortamında okuyun |
| Faturalama | Bir kredi bir aramayı karşılar: en fazla 20 sıralı sonuç, ilk 3'ün sayfaları okunur ve Markdown olarak döndürülür. 4 ile 10 arası sayfa okumak 2 kredi eder. Hata ile biten bir çağrı hiçbir ücrete tabi değildir. URL'sini zaten bildiğiniz sayfaları okumak, içerikle birlikte döndürülen her başlamış 3 sayfalık grup için 1 kredi eder, çağrı başına en fazla 20 URL; reddedilen veya başarısız olan URL'ler sayılmaz |

## Araçlar neden search_web ve read_urls olarak adlandırıldı?

Çünkü aynı ada sahip iki araç istemciyi ve modeli karıştırır. Claude Code ve OpenClaw'ın her biri `web_search` ve `web_fetch` adında yerleşik araç içerir. Farklı adlar ve açık açıklamalar, modelin bilerek bizimkini seçmesini sağlar ve kayıtlarda çağrıları ayırt etmenize olanak tanır.

Her iki araç da ham JSON değil metin döndürür. Her kaynak bir numara, bir başlık ve URL'si ile başlar; böylece model `[1]` veya `[2]` olarak kaynak gösterebilir ve okuyucu sayfayı kontrol edebilir.

*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()

```

## Server'ı nasıl kurar ve test ederim?

Bir sanal ortam oluşturun, `mcp` ve `httpx` paketlerini kurun ve yukarıdaki dosyayı kaydedin. `mcp`, Model Context Protocol'ün resmi Python SDK'sıdır; `FastMCP` sınıfı tiplenmiş Python fonksiyonlarını araçlara dönüştürür ve her docstring'i aracın açıklaması olarak kullanır.

Dosyayı anahtarınız ayarlıyken bir terminalden bir kez başlatın. Ardından istemciyi standart girdi üzerinden sessizce bekler; bu, çalıştığı anlamına gelir; Ctrl+C ile durdurun. API'den gelen hatalar, kodlarıyla birlikte araç hatası olarak yükseltilir; böylece model `rate_limited` veya `insufficient_credits` değerini düz kelimelerle görür.

*Kurulum ve bir kez başlatma*

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

## Claude Code'a nasıl eklerim?

`claude mcp add` kullanın. Claude Code'un dokümantasyonu `claude mcp add [options] <name> -- <command> [args...]` biçimini verir: önce kendi seçenekleri, sonra çift tire, ardından server'ı başlatan komut. Ortam değişkenleri `--env KEY=value` içine gider ve `--env` ile server adı arasında en az bir başka seçenek, örneğin `--transport stdio`, bulunmalıdır.

Server'ın tüm projelerinizde kullanılabilir olması için `--scope user` ekleyin; varsayılan kapsam olan `local` yalnızca mevcut projeyi kapsar. Sanal ortamınızın Python'u ve server dosyası için mutlak yollar kullanın.

*Server'ı Claude Code'a kaydetme*

```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'a ve diğer istemcilere nasıl eklerim?

Claude Desktop, sunucuları `mcpServers` altındaki `claude_desktop_config.json` dosyasından okur. Sunucuya bir ad, komut, argümanları ve anahtarı tutan bir `env` nesnesi verin, ardından uygulamayı yeniden başlatın; `search_web` ve `read_urls` araçlar listesinde görünür.

Cursor gibi diğer MCP istemcileri de kendi MCP ayarlarında aynı üç şeyi ister: bir komut, argümanları ve ortam değişkenleri. Anahtar hiçbir zaman bir araç argümanında veya konuşmada görünmez.

*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" }
    }
  }
}
```

## Aramaları nasıl ucuz ve kısa tutarım?

Modele talimatlarınızda nasıl arama yapacağını söyleyin: her soru için bir veya iki arama, ancak kaynaklar çelişirse daha fazlasını oku. Sunucu, her sayfayı `search_web` içinde 5.000 karakterle, `read_urls` içinde 12.000 karakterle zaten sınırlıyor; küçük modeller için bu sayıları düşürün.

`read` değeri 3'e kadar olan her `search_web` çağrısı bir kredidir. Günde 40 arama yapan bir asistan ayda yaklaşık 1.200 kredi kullanır, yani 5.000 arama ($9,25) yaklaşık dört ay dayanır. Arama kredilerinin son kullanma tarihi yoktur: bu ay kullanmadığınız krediler gelecek yıl da orada durur.

## Bir sayfa okunamadığında model ne görür?

Kaynak yine de numarası, başlığı ve URL'siyle birlikte, ardından köşeli parantez içinde nedeni ve arama snippet'i ile görünür. Okuyucumuz robots.txt'ye uyar: kendini LLMWebSearch olarak tanıtır, bir sitenin onun için ya da tüm robotlar için yazdığı kurallara uyar ve okumasına izin verilmeyen her sayfanın içeriğini dışarıda bırakır. Bir site okuyucumuzu geri çevirdiğinde sonuç, içerik olmadan ve sitenin durumuyla döner: CAPTCHA'ları asla çözmeyiz, hesaplara giriş yapmayız veya bir engeli ya da ödeme duvarını aşmaya çalışmayız. Model daha sonra diğer kaynaklara güvenebilir veya bir sayfanın kullanılamadığını söyleyebilir.

## MCP sunucusu: sık sorulan sorular

### Resmi bir LLMWebSearch MCP paketi veya barındırılan endpoint var mı?

Hayır. Bu sayfadaki dosya entegrasyonun kendisidir: okuyup değiştirebileceğiniz yaklaşık 50 satır. Makinenizde çalışır ve anahtarınız yalnızca API'mize gider.

### Claude Code'un yerleşik web aramasını kapatmalı mıyım?

Gerek yok. İkisi de açık kalabilir; açıklamalar modele her birinin ne yaptığını söyler. Sonuçlarda sayfa metni, arama başına sabit fiyat veya arama günlükleriniz için tek bir yer istediğinizde bizimkini açık tutun.

### OpenClaw ile kullanabilir miyim?

Evet, `openclaw mcp add` ile kaydedilen bir MCP sunucusu olarak. [OpenClaw sayfası](https://llmwebsearch.com/tr/docs/openclaw/) komutu verir ve OpenClaw'un yerleşik arama sağlayıcılarının yanında nasıl durduğunu açıklar.

### Sunucu aramalarımı saklıyor mu?

Hayır. Çağrılar arasında hiçbir şey tutmaz. Bizim tarafımızda, Sorgularınız veya API'nin döndürdükleri üzerinde hiçbir model eğitmeyiz ve sonuçları saklamaya karşı kendi kurallarımızı eklemeyiz; sayfalarını okuduğunuz sitelerin hakları hâlâ geçerlidir.

## Kaynaklar

1. [Claude Code'u MCP ile araçlara bağlama](https://code.claude.com/docs/en/mcp) — Claude Code docs (read 2026-10-22)

---

LLMWebSearch: LLMWebSearch, AI ajanları için bir web arama API'sidir; sıralanmış sonuçları en iyi sayfaların Markdown içeriğiyle birlikte döndürür ve kripto ile ödenir, kimlik yüklemesi gerekmez. $1,20/1K arama kredilik ön ödemeli krediler hiç süresi dolmaz. KYC yok — kimlik yok, selfie yok, belge yok. Kripto ile ödeme.
