Beyhan Oğur 9630a33ec1 first commit
2026-04-26 22:00:50 +03:00
2026-04-26 22:00:50 +03:00
2026-04-26 22:00:50 +03:00
2026-04-26 22:00:50 +03:00
2026-04-26 22:00:50 +03:00
2026-04-26 22:00:50 +03:00
2026-04-26 22:00:50 +03:00
2026-04-26 22:00:50 +03:00
2026-04-26 22:00:50 +03:00
2026-04-26 22:00:50 +03:00
2026-04-26 22:00:50 +03:00
2026-04-26 22:00:50 +03:00
2026-04-26 22:00:50 +03:00

🕷️ 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: requests ve BeautifulSoup kullanarak statik ve çok hızlı veri çekmek içindir.
  • scraper/dynamic_scraper.py: Playwright kullanarak 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ın data/*.csv formatı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ı markdownify kü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_documentation adı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 .env dosyası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.
Description
No description provided
Readme 33 MiB
Languages
Python 100%