Genellikle, hayır. Sözleşmeler, raporlar veya e-postalar içeren bir klasör için, tam metin arama aracına sahip bir AI ajanı doğru dosyaları bulur, yalnızca eşleşen pasajları okur ve alıntılar, ve indeks yerel olarak, gömme modeli ve vektör deposu olmadan çalışır. GroupDocs.Search.Mcp gives Claude Desktop, Claude Code, Cursor or Copilot that tool in one Docker command:

Sözleşmeler klasörünü indeksle, ardından hangi sözleşmelerin fesih cezası içerdiğini söyle ve maddeyi alıntıla.

The step-by-step version with config and troubleshooting is in the documentation: AI ajanlarıyla belgeleri arama: MCP kullanımı.

Neden herkes önce gömmelere yöneliyor?

Çünkü “retrieval-augmented generation” bir tarif olarak ortaya çıktı: belgeleri parçalara böl, her parçayı göm, vektörleri depola, soruyu göm, en yakın parçaları al ve bunları isteme yapıştır. Bu işe yarar ve sorular belgelerle hiç benzer bir şekilde ifade edilmediğinde doğru araçtır. Ancak bu, çağrılacak bir gömme modeline, çalıştırılacak bir depoya, ayarlanacak parçalama işlemine ve belgeler değiştiğinde her seferinde yeniden gömme işine sahip bir veri hattıdır. “300 sözleşmemden hangileri fesih cezası içeriyor” gibi bir soru için, bu mekanizma bir arama indeksinin doğrudan yanıtlayabileceği soruyu yanıtlar.

Kanıt, sezgiyle eşleşti. 2025’in sonlarında arXiv’de yayınlanan bir çalışma (Keyword search is all you need) bir ajana sadece klasör üzerinde anahtar kelime ve regex araması yaptı ve bunu standart bir RAG veri hattıyla karşılaştırdı: vektör veritabanı olmadan RAG puanlarının %90’ından fazlasını elde etti ve sık değişen koleksiyonlar için daha uygun oldu. Kodlama ajanları zaten bu modeli pratikte göstermişti: grep ile arama yapar, iyileştirir ve tekrar arar.

Ajan bunun yerine ne yapıyor?

Üç çağrı. GroupDocs.Search.Mcp sekiz araç sunar; döngü bunlardan üçüne ihtiyaç duyar:

user              agent                         Search MCP server
 |  "Which contracts mention a termination penalty?"           |
 |---------------->|                                           |
 |                 |-- add_to_index ------------------------->|  reads the
 |                 |   {"documentsPath":"contracts",           |  files once,
 |                 |    "indexName":"contracts"}               |  stores text
 |                 |<- "5 document(s) added, 5 in the index" --|
 |                 |-- search ------------------------------->|
 |                 |   {"query":"termination AND penalty"}     |
 |                 |<- {"documentsFound":3, "documents":[ ... |  which files
 |                 |-- get_text_fragments ------------------->|
 |                 |   {"query":"\"termination penalty\""}     |
 |                 |<- === contracts/acme-...-agreement.pdf ===|  the passages
 |<- "Two contracts carry one: Acme (3 monthly fees, 12.3),    |
 |    Globex (50% of the remaining fees). Initech excludes it."|

add_to_index dosyaları bir kez okur ve metni diskte adlandırılmış bir indeksde tutar. search eşleşen dosyaları oluşum sayılarıyla birlikte JSON olarak döndürür. get_text_fragments her eşleşmeyi birkaç kelimelik bağlamla birlikte döndürür, böylece ajan tüm sözleşmeyi yüklemek yerine maddeyi alıntılar.

İşte sunucunun testimizde beş sentetik sözleşmeye karşı gerçekte döndürdüğü sonuç:

-> search {"query":"termination AND penalty","indexName":"contracts"}
<- documentsFound 3: acme-master-services-agreement.pdf,
   globex-consulting-agreement.docx, initech-nda.docx

-> get_text_fragments {"query":"\"termination penalty\"",...}
<- === contracts/acme-master-services-agreement.pdf (1 occurrence(s)) ===
     …a termination penalty of three monthly fees applies, payable
     within 30…
   === contracts/globex-consulting-agreement.docx (1 occurrence(s)) ===
     …Early termination penalty: the Client pays 50 percent of the fees…

Üçüncü sözleşmeye dikkat edin. Initech NDA, “fesihle ilgili hiçbir ücret ve ceza yoktur” dediği için termination AND penalty ifadesiyle eşleşti. Pasaj, bir eşleşmeyi bir bahsedişten ayıran şeydir ve pasajları okuyan bir ajan bunu söyler. Bu, temellendirmedir: yanıt içindeki her iddia, açabileceğiniz bir dosya ve cümleye işaret eder.

Hangi yaklaşım nerede kazanır?

Gömme veri hattı                       Ajan tabanlı tam metin arama
-------------------------------------    -------------------------------------
parçala, göm, bir vektör deposunda sakla    add_to_index: yerel bir tam metin indeksi
soruyu göm, en iyi k parçayı al            ajan arar, iyileştirir, tekrar arar
parçaları isteme yapıştır                   get_text_fragments: alıntılanmış pasajlar
belgeler değiştiğinde yeniden göm           update_index değişenleri yeniden okur
bir gömme modeline ve depoya ihtiyaç duyar   çalışma zamanında model çağrısı yok, ağ yok
anlamı eşleştirir; sıralama belirsiz         kelimeleri eşleştirir; her sonuç açıklanabilir

Tam metin arama, soru ve belge hiçbir kelimeyi paylaşmadığında kaybeder: “hangi sözleşmeler bizim için riskli?” anahtar kelime içermez. Kelime hazinesi paylaşıldığında kazanır; bu, insanların kendi belgeleri hakkında sorduğu çoğu soruyu tanımlar: bir madde adı, bir ürün, bir müşteri, bir fatura numarası, bir tarih aralığı. Bir sorgu eksik olduğunda, ajan renewal OR renews gibi bir şey dener ya da bir bulanık eşleşme yapar, tıpkı bir kişinin yapacağı gibi. Sunucu yardımcı olur: tırnak içinde olmayan iki kelimelik bir sorgu GroupDocs.Search içinde hiçbir şeyle eşleşmez ve boş sonuç bir hint taşır; bu da ajana ifadeyi tırnak içine almasını söyler.

Hangi araç hangi soru için?

Kullanıcı sorar Ajan çağırır
“Bu klasörü indeksle” add_to_index
“Hangi dosyalar X’i içeriyor?” search
“X hakkında ne diyor?” get_text_fragments
“Dosyalar değişti, yenile” update_index
“Taslaklar klasörünü unut” remove_from_index
“İndekste ne var?” get_index_info
“Ayrı bir indeks başlat” create_index
“Neden sadece 10 sonuç?” get_license_status

İndeks, PDF, Office, OpenDocument, HTML ve e-posta arşivleri (PST, OST, MSG, EML) ve ekleri dahil olmak üzere 82 formatı anlar.

Nasıl çalıştırılır?

claude mcp add groupdocs-search -- docker run --rm -i \
  -v /path/to/documents:/data ghcr.io/groupdocs-search/search-net-mcp:latest

Cursor, Claude Desktop, GitHub Copilot ile VS Code ve diğer istemciler aynı konteyneri kendi yapılandırma dosyalarında kullanır: AI istemcilerinde kaydolun. Linux’ta --user "$(id -u):$(id -g)" ekleyin, böylece konteyner indeksini klasörünüze yazabilir. Sunucu, indeksleri daha küçük yapan ve bellek kullanımını yaklaşık yarıya düşüren yeni indeks formatına sahip GroupDocs.Search 26.10 motorunu çalıştırır (sürüm notları).

Dürüst sınırlamalar

  • Değerlendirme modunda bir indeks en fazla 100 belge tutar ve bir arama en fazla 10 sonuç döndürür; her yanıt bunu belirtir. Önce get_license_status çağırın.
  • Bu tam metin aramadır, anlamsal arama değildir: kelimeleri eşleştirir, anlamı değil.
  • OCR yok: metin katmanı olmayan taranmış PDF’ler yalnızca dosya özellikleriyle indekslenir.
  • Yalnızca bir Docker görüntüsü olarak sunulur (paketlenmiş araç NuGet’in boyut limitini aşıyor).

SSS

Claude yerel belgelerimi yüklemeden arayabilir mi?
Evet. Sunucu, makinenizde bir konteyner içinde çalışır ve bağladığınız klasörü okur; yalnızca ajan tarafından alıntılanan pasajlar modele ulaşır.

Bu RAG mı?
Bu retrieval-augmented (geri getirme destekli) bir yaklaşımdır, ancak ajan tabanlıdır: model neyi arayacağına ve ne zaman yeterli bilgiye sahip olduğuna karar verir, gömmeler yerine tam metin indeksi kullanır.

Belgelerim değiştiğinde ne olur?
Ajanı yenilemesi için isteyin. update_index yalnızca değişen, eklenen ve silinen dosyaları yeniden okur.

Daha derine in