Gizliliği öncelik alan, tamamen yerel ortamda çalışan document arama sunucusu. PDF, DOCX, TXT ve Markdown dosyaları üzerinde LanceDB vector storage ve yerel embeddings kullanarak semantic search desteği sağlar - API key veya cloud servisi gerekli değildir.
Claude Desktop config.json'a ekle
{
"mcpServers": {
"shinpr-mcp-local-rag": {
"command": "node",
"args": [
"~/.mcp/mcp-local-rag/index.js"
]
}
}
} Kaynak kodu al ve yerel olarak çalıştır
git clone https://github.com/shinpr/mcp-local-rag.git ~/.mcp/mcp-local-rag
cd ~/.mcp/mcp-local-rag
Geliştiriciler için yerel RAG, MCP veya CLI aracılığıyla. Tam teknik terimler için anahtar kelime güçlendirmesi ile anlamsal arama — tamamen özel, kurulum sıfır.
Anahtar kelime güçlendirmesi ile anlamsal arama
Önce vektör araması, ardından anahtar kelime eşleşmesi tam eşleşmeleri artırır. useEffect, hata kodları ve sınıf adları gibi terimler — sadece anlamsal olarak tahmin edilmekten çok daha yüksek sıralanır.
Akıllı anlamsal bölümleme Belgeleri karakter sayısına göre değil, anlama göre parçalara böler. Doğal konu sınırlarını bulmak için gömme benzerliğini kullanır — ilgili içeriği bir arada tutar ve konular değiştiğinde böler.
Kalite odaklı sonuç filtreleme Sonuçları keyfi top-K cutoff'ları yerine uygunluk boşluklarına göre gruplandırır. Daha az ama daha güvenilir parçalar alın.
Tamamen yerel olarak çalışır API anahtarı, bulut veya makinenizden çıkan veriler yok. İlk model indirilmesinden sonra tamamen çevrimdışı çalışır.
Sıfır kurulum karmaşıklığı
Tek npx komutu. Docker, Python, yönetilecek sunucu yok.
MCP, CLI veya her ikisini kullanın. İsteğe bağlı Agent Skills, AI asistanlarının daha iyi sorgular oluşturmasına ve sonuçları yorumlamasına yardımcı olur.
BASE_DIR öğesini araştırmak istediğiniz klasöre ayarlayın (veya birden fazla kök için BASE_DIRS — bkz. Yapılandırma). Belgeler yapılandırılan köklerin biri altında yaşamalıdır.
MCP sunucusunu AI kodlama aracınıza ekleyin:
Cursor için — ~/.cursor/mcp.json dosyasına ekleyin:
{
"mcpServers": {
"local-rag": {
"command": "npx",
"args": ["-y", "mcp-local-rag"],
"env": {
"BASE_DIR": "/path/to/your/documents"
}
}
}
}
Codex için — ~/.codex/config.toml dosyasına ekleyin:
[mcp_servers.local-rag]
command = "npx"
args = ["-y", "mcp-local-rag"]
[mcp_servers.local-rag.env]
BASE_DIR = "/path/to/your/documents"
Claude Code için — bu komutu çalıştırın:
claude mcp add local-rag --scope user --env BASE_DIR=/path/to/your/documents -- npx -y mcp-local-rag
Aracınızı yeniden başlatın, ardından kullanmaya başlayın:
Siz: "Ingest api-spec.pdf"
Asistan: Successfully ingested api-spec.pdf (47 chunks created)
Siz: "API belgeleri kimlik doğrulama hakkında ne diyor?"
Asistan: Belgelendirmeye göre, kimlik doğrulama JWT belirteçleriyle OAuth 2.0 kullanır.
Akış bölüm 3.2'de açıklanmıştır...
Veya doğrudan CLI olarak kullanın — MCP sunucusu gerekmez:
npx mcp-local-rag ingest ./docs/
npx mcp-local-rag query "authentication API"
Bu kadar. Docker, Python, sunucu kurulumu yok.
AI'ın belgelerinizi aramasını istiyorsunuz — teknik spesifikasyonlar, araştırma makaleleri, iç belgeler. Ancak çoğu çözüm dosyalarınızı harici API'lere gönderir.
Gizlilik. Belgeleriniz hassas veriler içerebilir. Bu tamamen yerel olarak çalışır.
Maliyet. Harici gömme API'leri kullanım başına ücret alır. İlk model indirilmesinden sonra bu ücretsizdir.
Çevrimdışı. Kurulumdan sonra internet olmadan çalışır.
Kod araması. Saf anlamsal arama useEffect veya ERR_CONNECTION_REFUSED gibi kesin terimleri kaçırır. Anahtar kelime güçlendirmesi hem anlam hem de tam eşleşmeleri yakalar.
Agent gerçekliği. Uygulamada, birçok AI ortamı öncelikle araç çağrısını kullanır. CLI desteği ve Agent Skills, tam MCP entegrasyonu olmasa bile aynı iş akışlarını kullanılabilir hale getirir.
mcp-local-rag iki arayüz sağlar: AI kodlama araçları için bir MCP sunucusu ve terminalde doğrudan kullanım için bir CLI.
MCP sunucusu 7 araç sağlar: ingest_file, ingest_data, query_documents, read_chunk_neighbors, list_files, delete_file, status.
"Ingest the document at /Users/me/docs/api-spec.pdf"
PDF, DOCX, TXT ve Markdown'ı destekler. Sunucu metni çıkarır, parçalara böler, gömmeleri yerel olarak oluşturur ve her şeyi yerel bir vektör veritabanında depolar.
Aynı dosyayı yeniden içe aktarmak eski versiyonu otomatik olarak değiştirir.
Grafikler, tablolar veya diyagramlar içeren PDF'ler, isteğe bağlı olarak belge dizinine yerel VLM tarafından oluşturulan başlıklar ekleyebilir ve görsel içeriği aynı vektör + FTS işlem hattında aranabilir bir temsile verir. Başlıklar yardımcı metin — görüntü araması, OCR ve şekil dökümleme değildir.
MCP aracılığıyla:
"Ingest /Users/me/docs/api-spec.pdf with visual: true"
CLI aracılığıyla:
npx mcp-local-rag ingest ./docs/spec.pdf --visual
Her başlık, sayfa gövdesi parçalarının yanında [Visual content on page N: …] zarfı ile kendi parçası olarak yayınlanır. Mevcut gömmeci ve FTS dizininden geçer — şema farkı, ayrı dizin yoktur.
Görsel modu opt-in; normal içe aktarma VLM yüklemez. Sayfa başına VLM hataları tolere edilir — o sayfa yalnızca metinle ilerler.
Görsel modu iki profil sunar, her içe aktarma çağrısı başına seçilir:
| Profil | Model | Disk (önbellek) | Sayfa başına ılımlama | Uygun |
|---|---|---|---|---|
fast (varsayılan) |
HuggingFaceTB/SmolVLM-256M-Instruct |
~250 MB | temel | Hafif görsel dizinleme, hızlı ilk çalıştırma kurulumu. |
quality |
onnx-community/Qwen2.5-VL-3B-Instruct-ONNX |
~2,9 GB | ~2× fast |
Başlık sadakati önem taşıyan eksen etiketleri, panel alt-etiketleri, açıklamalar gibi görüntü içi metni olan şekiller. |
Yukarıdaki sayılar, proje sondası PDF'leri üzerinde geliştirme sırasında CPU'da ölçülür; model güncellemeleriyle değişebilir veya donanımınızda farklı olabilir.
MCP aracılığıyla — ingest_file isteğe bağlı bir visualQuality parametresini kabul eder (enum: 'fast' | 'quality', varsayılan 'fast'; visual yanlış olduğunda yoksayılır):
"Ingest /Users/me/docs/research-paper.pdf with visual: true and visualQuality: 'quality'"
CLI aracılığıyla — --visual-quality fast|quality (varsayılan fast; --visual olmadığında sessizce yoksayılır):
npx mcp-local-rag ingest ./docs/research-paper.pdf --visual --visual-quality quality
Profil modeli tanımlayıcıları ve nicemleme varyantları sürüm başına sabitlenir. Her iki profil aynı CACHE_DIR paylaşır (varsayılan: ./models/); her profildeki ilk çalıştırma modeli indirir.
v0.14.0 sürümünden davranış değişikliği: Başlıklar artık chunking öncesi sayfa metnine eklenmek yerine ayrılmış parçalar olarak yayınlanır. Yan etki olarak, görsel içe aktarımlar için
metadata.fileSizeartık başlık karakter sayısını içermez — yalnızca çıkarma sonrası gövde uzunluğunu ölçer. Temel alınan PDF değişmez; görsel içe aktarılan PDF'ler için bildirilenfileSizesürüm sınırında küçülebilir.
Güvenlik notu: Görsel başlıklar PDF içeriklerinden türetilir ve saldırgı tarafından kontrol edilen metni miras alabilir. Aşağı akış LLM tüketicileri alınan parçaları güvenilmez veriler olarak değerlendirilmelidir, talimatlar olarak değil.
[Visual content on page N: …]zarfı, tüketicilerin başlık metnini ayırt etmesine yardımcı olur.
AI asistanınız tarafından alınan HTML içeriğini (web getirme, curl, tarayıcı araçları vb. aracılığıyla) içe aktarmak için ingest_data kullanın:
"Fetch https://example.com/docs and ingest the HTML"
Sunucu, Readability kullanarak ana içeriği çıkarır (navigasyon, reklamlar vb. kaldırır), Markdown'a dönüştürür ve dizine ekler. Mükemmel:
HTML otomatik olarak temizlenir — boilerplate değil, makale içeriğini alırsınız.
Not: RAG sunucusu web içeriği getirmez — AI asistanınız bunu alır ve HTML'yi
ingest_dataöğesine iletir. Bu, sunucuyu tamamen yerel tutarken asistanınızın erişebileceği herhangi bir içeriği dizine ekleyebilmenizi sağlar. Harici içerik içe aktarırken web sitesi hizmet şartlarına ve telif hakkına saygı gösterin.
"API belgeleri kimlik doğrulama hakkında ne diyor?"
"Hız sınırlaması hakkında bilgi bulun"
"Hata işleme en iyi uygulamaları arayın"
Arama, anahtar kelime güçlendirmesi ile anlamsal benzerlik kullanır. Bu, useEffect tam eşleşmeleri bulur, sadece anlamsal olarak benzer React konseptleri değil.
Sonuçlar metin içeriği, kaynak dosya, belge başlığı ve uygunluk puanını içerir. Belge başlığı her parça için bağlam sağlar, bir sonucun hangi belgeye ait olduğunu tanımlamaya yardımcı olur. limit (1-20, varsayılan 10) ile sonuç sayısını ayarlayın.
Bir arama sonucu daha fazla çevre bağlamı gerektiğinde, çevresindeki parçaları okumak için read_chunk_neighbors kullanın:
"Bu kimlik doğrulama sonucu uygun görünüyor — tam açıklama için çevre parçalarını oku"
Arama sonucundan filePath ve chunkIndex iletişim kurun. Yanıt hedef parçayı (isTarget: true işaretli) ve komşularını, parça dizinine göre sıralanmış olarak içerir. Varsayılan olarak 2 parça öncesi ve 2 sonrası (her birine kadar 50'ye ayarlanabilir).
"Liste yapılandırılan temel dizinlerdeki tüm dosyalar ve içe aktarılan durumları" # Ne dizine alındığını gör
"RAG'den old-spec.pdf sil" # Bir dosya kaldır
"RAG sunucu durumunu göster" # Sistem durumunu kontrol et
Tüm MCP araçları aynı zamanda CLI komutları olarak da mevcuttur — MCP sunucusu gerekmez:
npx mcp-local-rag ingest ./docs/ # Toplu dosya içe aktarma
npx mcp-local-rag query "authentication API" # Belgeleri ara
npx mcp-local-rag read-neighbors --file-path /abs/path.md --chunk-index 5 # Bağlamı genişlet
npx mcp-local-rag list # İçe aktarma durumunu göster
npx mcp-local-rag status # Veritabanı istatistikleri
npx mcp-local-rag delete ./docs/old.pdf # İçeriği kaldır
npx mcp-local-rag delete --source "https://..." # Kaynak URL'ye göre kaldır
query, read-neighbors, list, status ve delete stdout'a JSON çıkarmak (ör. | jq). ingest stderr'e ilerleme çıkarmak. Genel seçenekler (--db-path, --cache-dir, --model-name) komuttan önce gelir. Ayrıntılar için npx mcp-local-rag --help çalıştırın.
⚠️ CLI, MCP istemci yapılandırmanızı (
mcp.json,config.tomlvb.) okumuyor. Aşağıda gösterildiği gibi CLI'yi bayraklar veya ortam değişkenleri aracılığıyla yapılandırın.
CLI bayrakları — genel seçenekler komuttan önce, komut seçenekleri sonra:
npx mcp-local-rag --db-path ./my-db query "auth" --base-dir ./docs
--base-dir bayrağı ingest ve list üzerinde tekrarlanabilir; kök başına bir kez iletişim kurun:
npx mcp-local-rag ingest --base-dir ./docs --base-dir ./specs ./docs/readme.md
npx mcp-local-rag list --base-dir ./docs --base-dir ./specs
ingest için konumsal yol yapılandırılan köklerden birinin içinde oturmalıdır. En az bir --base-dir sağlandığında, CLI kökleri herhangi bir ortam-var kökünü değiştirir (birleştirme yoktur).
Ortam değişkenleri — kabuğunuzda ayarlayın:
export DB_PATH=./my-db
export BASE_DIR=./docs
npx mcp-local-rag query "auth"
Birden fazla kök için, BASE_DIRS (JSON dizi boş olmayan yol dizelerinin):
export BASE_DIRS='["/Users/me/Documents/work","/Users/me/Projects/specs"]'
npx mcp-local-rag list
MCP ve CLI arasında yapılandırmayı paylaşma — MCP istemciniz kabuk ortam değişkenlerini miras alırsa, bunları kabuk profilinizde (ör. ~/.zshrc) ayarlayabilirsiniz, böylece her ikisi de aynı değerleri kullanır. Aksi takdirde, bunları MCP yapılandırmanızda da açıkça ayarlayın.
export BASE_DIR=/path/to/your/documents
export DB_PATH=/path/to/lancedb
Yapılandırma bu sırayla çözülür:
CLI bayraklarının, ortam değişkenlerinin ve varsayılanların tam listesi için bkz. Yapılandırma.
CLI'si yapılandırma (MCP sunucusu yok), AI asistanınızın daha iyi sorgular oluşturmasına ve sonuçları tutarlı bir şekilde yorumlamasına yardımcı olacak Agent Skills yükleyin.
⚠️ CLI
--model-name, MCP sunucusununMODEL_NAMEortam değişkeniyle eşleşmelidir. Mevcut bir veritabanına karşı farklı bir gömme modeli kullanmak uyumsuz vektörler oluşturur, arama kalitesini sessizce düşürür.
Kullanım durumunuz için bunları ayarlayın:
| Değişken | Varsayılan | Açıklama |
|---|---|---|
RAG_HYBRID_WEIGHT |
0.6 |
Anahtar kelime güçlendirme faktörü. 0 = yalnızca anlamsal, daha yüksek = daha güçlü anahtar kelime güçlendirmesi. |
RAG_GROUPING |
(ayarlanmamış) | En üst grup için similar, üst 2 grup için related. |
RAG_MAX_DISTANCE |
(ayarlanmamış) | Düşük ilgili sonuçları filtrele (ör. 0.5). |
RAG_MAX_FILES |
(ayarlanmamış) | Sonuçları en üst N dosya ile sınırla (ör. 1 en iyi dosya için). |
Kodlar ve API spesifikasyonları için, tam tanımlayıcıların (useEffect, ERR_*, sınıf adları) sıralamaya hakim olması için anahtar kelime güçlendirmesini artırın:
"env": {
"RAG_HYBRID_WEIGHT": "0.7",
"RAG_GROUPING": "similar"
}
0.7 — dengeli anlamsal + anahtar kelime1.0 — saldırgan; kesin eşleşmeler sonuçları güçlü bir şekilde yeniden sıralarAnahtar kelime güçlendirmesi anlamsal filtrelemeden sonra uygulanır, bu nedenle kesin olmayan eşleşmeleri ortaya çıkarmadan hassasiyeti artırır.
TL;DR:
Bir belgeyi içe aktardığınızda, ayrıştırıcı dosya türüne göre metni çıkarır (PDF mupdf aracılığıyla, DOCX mammoth aracılığıyla, metin dosyaları doğrudan).
Anlamsal chunker metni cümlelere böler, ardından bunları gömme benzerliğini kullanarak gruplandırır. Anlama kayması olduğu yerleri bulur — keyfi karakter sınırlarına kaymak yerine ilgili içeriği bir arada tutar. Bu, tipik olarak 500-1000 karakter olan anlam birimi olan parçalar üretir. Markdown kod blokları bozulmamış tutulur — hiç bir blok arasında bölünmez — arama sonuçlarında kopyalanabilir kodu korur.
Her parça, Transformers.js gömme modeli (varsayılan: all-MiniLM-L6-v2, MODEL_NAME aracılığıyla yapılandırılabilir) aracılığıyla geçer, metni vektörlere dönüştürür. Vektörler, hiçbir sunucu işlemi gerektirmeyen dosya tabanlı bir vektör veritabanı olan LanceDB'de depolanır.
Aradığınızda:
Anahtar kelime güçlendirmesi, useEffect veya hata kodları gibi kesin terimlerin eşleştiğinde daha yüksek sıralanmasını sağlar.
Agent Skills, AI asistanlarının RAG araçlarını daha etkili bir şekilde kullanmasına yardımcı olan optimize edilmiş istekler sağlar. Daha iyi sorgu formülasyonu, sonuç yorumu ve içe aktarma iş akışları için beceriler yükleyin:
# Claude Code (proje düzeyi)
npx mcp-local-rag skills install --claude-code
# Claude Code (kullanıcı düzeyi)
npx mcp-local-rag skills install --claude-code --global
# Codex
npx mcp-local-rag skills install --codex
Beceriler:
Beceriler çoğu durumda otomatik olarak yüklenir — AI asistanları beceri meta verilerini tarar ve gerektiğinde ilgili talimatları yükler. Tutarlı davranış için:
Seçenek 1: Açık istek (doğal dil) RAG işlemlerinden önce, doğal dilde isteyin:
Seçenek 2: Agent talimatları dosyasına ekle
AGENTS.md, CLAUDE.md veya diğer agent talimatları dosyasına ekleyin:
query_documents, ingest_file veya ingest_data araçlarını kullanırken,
daha iyi sorgu formülasyonu ve sonuç yorumu için mcp-local-rag becerisini uygula.
MCP sunucusu yalnızca ortam değişkenleri tarafından yapılandırılır — bunları MCP istemcinizin env bloğu aracılığıyla iletişim kurun. CLI aynı ortam değişkenlerini artı eşdeğer bayrakları kabul eder (öncelik: CLI bayrağı > ortam > varsayılan). CLI bayrakları çıplak mcp-local-rag (MCP sunucusu) başlatmada kabul edilmez.
| Ortam Değişkeni | CLI Bayrağı | Varsayılan | Açıklama |
|---|---|---|---|
BASE_DIR |
--base-dir (tekrarlanabilir) |
Geçerli dizin | Tekli belge kök dizini (güvenlik sınırı). Multi-kök kurulumu için Belge Kökleri bölümüne bakın. |
BASE_DIRS |
— | (ayarlanmamış) | Belge köklerinin JSON dizisi (güvenlik sınırı). BASE_DIR öğesinden önce gelir. Multi-kök kurulumu için Belge Kökleri bölümüne bakın. |
DB_PATH |
--db-path |
./lancedb/ |
Vektör veritabanı konumu |
CACHE_DIR |
--cache-dir |
./models/ |
Model önbellek dizini |
MODEL_NAME |
--model-name |
Xenova/all-MiniLM-L6-v2 |
HuggingFace modeli ID (mevcut modeller) |
MAX_FILE_SIZE |
--max-file-size |
104857600 (100MB) |
Maksimum dosya boyutu bayt cinsinden |
CHUNK_MIN_LENGTH |
--chunk-min-length |
50 |
Minimum parça uzunluğu karakterler (1–10000) |
RAG_DEVICE |
— | cpu |
Yürütme cihazı. ONNX Runtime'a doğrudan iletilir. Desteklenen arka uç adlarının canlı listesi için Transformers.js cihaz kaynak koduna bakın. Başlatma başarısız olursa, sunucu bir hata atar. |
Model seçim ipuçları:
onnx-community/embeddinggemma-300m-ONNX (100+ dil)sentence-transformers/allenai-specter (alıntı analizi)jinaai/jina-embeddings-v2-base-code)⚠️ MODEL_NAME değiştirmek gömme boyutlarını değiştirir. Modelleri değiştirdik
LLM'ler ve yapay zeka kod editörleri için güncel kod dokümantasyonu.
AI ajanlar için bağlam sıkıştırma katmanı. Tool çıktılarını, logları, RAG chunk'larını, dosyaları ve konuşma geçmişini LLM'ye ulaşmadan önce sıkıştırır ve MCP tool'ları aracılığıyla geri alınabilir şekilde depolar.
AI uygulamaları ve Ajanlar için bellek yöneticisi, çeşitli graph ve vector store'ları destekler ve 30+ veri kaynağından veri alımına olanak tanır.
Obsidian vault'larınız için evrensel bir AI köprüsü sunan MCP tabanlı araç. Notlarınıza güvenli okuma/yazma erişimi sağlar ve arama, toplu işlemler, etiket yönetimi ile frontmatter işleme gibi 11 kapsamlı işlem sunur. Claude, ChatGPT ve tüm MCP uyumlu AI asistanlarıyla çalışır.
Grafik RAG, vektör arama ve tam metin aramasını birleştiren, üretime hazır RAG platformu. Kendi Knowledge Graph'ınızı oluşturmak ve Context Engineering için en iyi seçim.
Mem0 için bir Model Context Protocol sunucusu; IDE'ler (Cursor, Windsurf gibi) içinde kodlama tercihlerini ve desenlerini yönetmeye, kod implementasyonlarını, best practices'leri ve teknik dokümantasyonu semantik olarak depolamaya ve erişmeye yarayan araçlar sunuyor.