Files
mdscrap/README.md
Beyhan Oğur 9630a33ec1 first commit
2026-04-26 22:00:50 +03:00

66 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🕷️ 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:
```bash
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:
```bash
# İ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:
```bash
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.