🕷️ Web Scraping & RAG MCP Server Projesi
Bu proje, çeşitli web sitelerindeki (özellikle yazılım dokümantasyonlarındaki) verileri toplayan, temizleyerek Markdown formatına getiren ve ardından bu verileri lokal bir yapay zeka vektör veritabanına aktararak Model Context Protocol (MCP) üzerinden dışarıya bir araç (tool) olarak sunan kapsamlı bir sistemdir.
🌟 Sistemin Modülleri
Proje temel olarak 3 ana modülden oluşmaktadır:
1. Web Scraping Altyapısı (Kazıyıcılar)
scraper/static_scraper.py:requestsveBeautifulSoupkullanarak statik ve çok hızlı veri çekmek içindir.scraper/dynamic_scraper.py:Playwrightkullanarak JavaScript ile render olan (dinamik) sitelerden veri çekmek içindir.main.py: Bu temel kazıyıcıların örnek kullanımını ve sonuçlarındata/*.csvformatında kaydedilmesini içerir.
2. Docs to Markdown Crawler (Doküman Örümceği)
scraper/docs_crawler.py: Belirli bir dokümantasyon adresini (örneğin Next.js veya Nuxt) başlangıç kabul ederek o site içindeki tüm bağlantıları (linkleri) gezen sistemdir.- Nasıl Çalışır?: Girdiği sayfalardaki menü (
<nav>), altlık (<footer>) gibi kısımları temizler. Geriye kalan saf metni ve kod bloklarınımarkdownifykütüphanesi ile tertemiz bir .md formatına çevirir. - Çalıştırma Betikleri:
next.py(Next.js docs için)next_auth.py(NextAuth docs için)nuxt.py(Nuxt 4 docs için)
- Çıktılar otomatik olarak
data/md_docs/<domain_adi>klasörüne hiyerarşik bir şekilde yerleştirilir.
3. Lokal RAG ve MCP Server (Yapay Zeka Entegrasyonu)
Bu modül, indirilen saf Markdown dosyalarının Claude, ChatGPT gibi yapay zekalar tarafından aranabilmesini sağlar.
rag_local/ingest.py:data/md_docs/dizinindeki tüm markdown dosyalarını okur.- Metinleri yaklaşık 1000 karakterlik parçalara böler (chunking).
- Lokal yapay zeka modeli olan
all-MiniLM-L6-v2(sentence-transformers) ile bu metinleri vektörleştirir. - Vektörleri
chroma_db/isimli, tamamen lokal çalışan ve kurulum gerektirmeyen klasör tabanlı bir veritabanına yazar.
rag_local/mcp_server.py:- FastMCP kullanarak bir Model Context Protocol sunucusu başlatır.
- Dışarıya
search_documentationadında bir yetenek sunar. - Yapay zeka bu yeteneği kullanarak bir kavram sorduğunda (Örn: "Next.js routing"), veritabanında semantik (anlamsal) arama yapılır ve en iyi eşleşen dokümanlar saniyeler içinde asistana iletilir.
🚀 Kurulum ve Çalıştırma Rehberi
Adım 1: Yeni Doküman Kazımak (İsteğe Bağlı)
Eğer sisteme yeni dokümanlar eklemek isterseniz, örneğin nuxt.py dosyasını çalıştırın:
python nuxt.py
Adım 2: Vektör Veritabanını Güncellemek (Ingest)
Markdown dosyalarınız indikçe veya yenilendikçe bu dosyaları yapay zekanın anlayabileceği vektör formatına çevirmeniz gerekir:
# İlk çalıştırmada biraz sürebilir, çünkü parçaları tek tek vektöre çevirir.
python rag_local/ingest.py
Not: İşlem bittiğinde proje ana dizininde chroma_db isimli bir klasör oluşur. Bu sizin yapay zeka "hafızanızdır".
Adım 3: MCP Server'ı Ayağa Kaldırmak
Vektörleştirme bittikten sonra bu veriyi Claude Masaüstü (veya uyumlu MCP istemcileri) üzerinden kullanmak için sunucuyu başlatın:
python rag_local/mcp_server.py
Not: Claude Desktop içerisindeki mcp.json konfigürasyonuna bu sunucunun dosya yolunu ekleyerek, Claude'un direkt olarak bu dokümanlar üzerinde RAG (Arama) yapmasını sağlayabilirsiniz.
🛠️ Gelecek Geliştirmeler (Roadmap)
- Vektör aramasını lokal ChromaDB yerine
.envdosyasında yer alan Postgres (pgvector) sistemine taşıma. - Sorulan soruların anlık cevaplanması için Redis cache (önbellek) mekanizması ekleme.
- Yüksek performans için MCP Server uygulamasını Go (Golang) dili ile yeniden yazma.