Modular RAG MCP Server
Modular RAG MCP Server
Lokal priorisierter, plugbarer und beobachtbarer RAG-Infrastruktur für Wissensabfragen und Observability im Bewerbungsprozess – für interne Berater des DIY-Studienberatungsteams
Der Modular RAG MCP Server ist ein lokal priorisierter, plugbarer und beobachtbarer Retrieval-Augmented-Generation-Dienst (RAG). Das System stellt KI-Clients über das Model Context Protocol (MCP) Wissensabfragen bereit und verwaltet über ein Streamlit-Dashboard Dokumente, Ingestionsaufgaben, Abfrageketten und Bewertungsergebnisse.
Dieses Projekt entstand aus einem realen Kollaborationsszenario während des Studiums: Das DIY-Studienberatungsteam der Fakultät unterstützte Kommilitonen bei Bewerbungen an ausländischen Hochschulen. Das System löst das Problem, dass Berater wiederholt zwischen Hochschulanforderungen, Bewerbungsunterlagen, Prozessstandards und historischen Erfahrungen suchen mussten, ohne die Quellen nachvollziehen zu können. Das System ist derzeit intern im Team bereitgestellt; das öffentliche Repository enthält nur anonymisierte synthetische Beispieldaten, keine echten Studierendendaten, internen Dokumente oder Betriebsdaten.
Die Beispieldaten im Repository sollten ausschließlich anonymisierte synthetische Daten verwenden; die Systemausgabe dient als von Beratern zu prüfende Retrieval-Grundlage, ersetzt nicht die Beraterentscheidung und stellt keine Hochschul-, Visum- oder Rechtsberatung dar.
Inhaltsverzeichnis
Related MCP server: mcp-rag-assistant
Geschäftlicher Hintergrund
DIY-Studienberater müssen bei der Bearbeitung von Bewerbungen gleichzeitig auf offizielle Hochschulwebseiten, Projektbroschüren, Materialvorlagen, interne Arbeitslisten und historische Fallbeispiele zugreifen. Die Rohmaterialien sind in der Regel als PDFs verstreut gespeichert und weisen folgende Probleme auf:
Dieselbe Anforderung kann in mehreren Dokumenten mit unterschiedlichen Formulierungen auftreten; reine Stichwortsuche führt leicht zu unvollständigem Retrieval.
Fachbegriffe wie Hochschule, Studiengang, Abschluss und Bewerbungssemester müssen exakt übereinstimmen; reine Vektor-Retrieval führt leicht zu falschen Treffern.
Tabellen, Flussdiagramme und Screenshots in PDFs enthalten wichtige Informationen; reine Textanalyse verliert Kontext.
Berater müssen wissen, aus welchem Dokument und welchem Abschnitt eine Antwort stammt, und beurteilen können, ob das Dokument noch gültig ist.
Nach Dokumentaktualisierungen müssen Vektor-Datenbank, BM25-Index, Bildindex und Ingestionsprotokolle konsistent bleiben.
Die Retrieval-Qualität muss durch stabile Test-Sets regressiv überprüft werden, nicht durch subjektive Erfahrung.
Das System richtet sich an interne Berater des Teams. Typische Arbeitsabläufe umfassen:
Hochschulprojektmaterialien, interne Checklisten und anonymisierte Fallbeispiele in eine bestimmte Collection aufnehmen.
Über einen MCP-Client oder die Befehlszeile natürliche Sprachfragen stellen.
Das System führt Dense + BM25 Dual-Retrieval, RRF-Fusion und optionales Reranking durch.
Rückgabe von Textabschnitten mit Quellenangaben sowie multimodalen Inhaltsblöcken bei Bildtreffern.
Über das Dashboard Ingestionsprozess, Retrieval-Ergebnisse, Latenz und Bewertungsmetriken prüfen.
Systemgrenzen
Dieses Projekt ist für Wissensaufnahme, Retrieval, Zitierung, Bewertung und Beobachtung der Ablaufkette verantwortlich, nicht für:
Ersetzen der Beraterentscheidung bei Hochschulwahl, Zulassungswahrscheinlichkeit oder Visumfragen.
Automatisches Einreichen von Bewerbungen, Senden von E-Mails oder Ändern von Studierendenmaterialien.
Bereitstellung von Studierendenkonten, CRM, Zahlungs- oder Bewerbungsfortschrittsverwaltung.
Automatisches Abrufen und Behaupten aktueller Hochschulpolitik.
Generierung deterministischer Geschäftsschlussfolgerungen ohne Quellenbasis.
Kernfunktionen
Fähigkeitsbereich | Aktuelle Implementierung |
Datenaufnahme | PDF → Markdown → Chunk → Transform → Embedding → Upsert |
Hybrid-Retrieval | Dense Embedding + BM25 Dual-Retrieval, RRF-Fusion |
Reranking | Cross-Encoder oder LLM-Rerank, konfigurierbares Fallback |
Multimodal | PDF-Bildextraktion, Image Captioning, Bild-Text-Retrieval und MCP-multimodale Rückgabe |
Speicherkoordination | Chroma, BM25, SQLite-Ingestionshistorie, Bilddateien und Bildindex |
Inkrementelle Verarbeitung | SHA256-Deduplizierung, stabile Chunk-IDs, idempotentes Upsert, koordiniertes Löschen |
Protokollschnittstelle | MCP-Stdio-Server und drei Wissensdatenbank-Tools |
Verwaltungsplattform | Streamlit-Dashboard mit sechs Seiten |
Beobachtbarkeit | Strukturierte Traces für Ingestion- und Query-Kette |
Qualitätsbewertung | Custom Evaluator, Ragas, Golden Test Set |
Engineering-Struktur | Unit-, Integrations- und E2E-Tests in drei Ebenen |
Plugbare Schnittstellen | LLM, Embedding, Splitter, Reranker, Evaluator, VectorStore |
Systemarchitektur
flowchart LR
A["PDF 业务资料"] --> B["Ingestion Pipeline"]
B --> C["Chroma 向量库"]
B --> D["BM25 索引"]
B --> E["SQLite 摄取历史"]
B --> F["图片文件与索引"]
G["顾问 / MCP Client"] --> H["MCP Server"]
H --> I["Query Processor"]
I --> J["Dense Retrieval"]
I --> K["Sparse Retrieval"]
J --> L["RRF Fusion"]
K --> L
L --> M["Optional Rerank"]
M --> N["Response + Citations + Images"]
B --> O["Ingestion Trace"]
I --> P["Query Trace"]
O --> Q["Streamlit Dashboard"]
P --> QKernverzeichnisse:
src/
├── core/ # 数据契约、查询编排、响应构建、Trace、配置
├── ingestion/ # Chunk、Transform、Embedding、Storage 与 Pipeline
├── libs/ # LLM/Embedding/Loader/Reranker/Splitter/VectorStore 抽象
├── mcp_server/ # MCP 协议处理、Server 与 Tools
└── observability/ # Dashboard、评估与结构化日志
scripts/ # ingest、query、evaluate、Dashboard 启动入口
config/ # Provider、检索、重排、评估与摄取配置
tests/ # Unit、Integration、E2E 测试与固定样例Detaillierte Schnittstellen, Datenflüsse und Modulbeschränkungen finden Sie in DEV_SPEC.md.
Daten- und Speicherkonsistenz
Eine Ingestion koordiniert mehrere Speicher-Backends:
Speicher | Verantwortung |
Chroma | Chunk-Text, Dense-Vektor und Metadaten |
BM25 | Invertierter Index für spärliches Retrieval |
SQLite-Ingestionshistorie | SHA256, Verarbeitungsstatus, Collection und Zeitstempel |
Bildverzeichnis | Aus PDF extrahierte Originalbilder |
SQLite-Bildindex | Verknüpfung von Bild, Dokument, Seitenzahl und Collection |
Die Dateiintegritätsprüfung verwendet SHA256, um bereits erfolgreich verarbeitete und unveränderte Dateien zu überspringen. Chunk-IDs werden stabil aus Quelle, Position und Inhalt generiert; wiederholte Ingestion verwendet idempotentes Upsert. Der DocumentManager koordiniert das Löschen über Chroma, BM25, Ingestionshistorie und Bildindex und gibt Informationen zu Teilfehlern zurück.
MCP-Tools
Der aktuelle Server stellt vier Tools bereit. Die ersten drei allgemeinen Tools bleiben unverändert; das vierte ist eine Anpassungsschicht für das Studienberatungsgeschäft:
Tool | Zweck | Haupteingaben |
| Führt Hybrid-Retrieval, optionales Reranking und Rückgabe mit Quellenangaben durch |
|
| Listet abfragbare Collections und Statistiken auf |
|
| Ruft Zusammenfassung, Tags und Quelle eines bestimmten Dokuments ab |
|
| Nutzt die vollständige Hybrid-Retrieval-Kette und fügt Studien-Metadaten und Zeitfilter hinzu |
|
MCP verwendet den Stdio-Transport. stdout ist ausschließlich für JSON-RPC reserviert; Laufzeitprotokolle werden nach stderr geschrieben, um Protokollrahmen nicht zu beschädigen.
search_admissions_knowledge fragt standardmäßig admissions_knowledge ab und begrenzt immer auf business_domain=study_abroad_admissions. Es unterstützt präzise Filterung nach Land, Hochschule, Programm, Abschlussniveau, Bewerbungssemester, Bewerbungsrunde und Quellentyp; standardmäßig werden Dokumente ausgeschlossen, deren valid_until vor dem Geschäftsdatum der Abfrage liegt. Dokumente ohne oder mit nicht parsebarem Gültigkeitsdatum werden als needs_review markiert und nicht stillschweigend als aktuelle Regeln behandelt. Das Geschäftstool ist nur eine Parameter- und Antwortanpassungsschicht; die zugrunde liegende Ausführung umfasst weiterhin Dense + BM25, RRF, Cross-Encoder/LLM-Rerank, Zitierung und multimodale Rückgabe.
Dashboard
Das Dashboard behält die Struktur mit sechs Seiten bei:
Overview: Komponentenkonfiguration, Datenbestand, Betriebsstatus sowie Statistiken zu aktuellen, zu überprüfenden und abgelaufenen Studienmaterialien.
Data Browser: Dokumente, Chunks, Metadaten und zugehörige Bilder; unterstützt kombinierte Filterung nach Land, Hochschule, Programm, Abschluss, Bewerbungssemester, Bewerbungsrunde, Quellentyp und Gültigkeitsstatus.
Ingestion Manager: Ingestion auslösen, Fortschritt anzeigen und Dokumente koordiniert löschen.
Ingestion Traces: Ingestionsphasen, Verarbeitungsmethoden, Latenz und Ausnahmen.
Query Traces: Dense/Sparse-Retrieval, Fusion, Reranking und Endergebnisse.
Evaluation Panel: Bewertungen ausführen und Metriken sowie historische Ergebnisse anzeigen.
Schnellstart
1. Umgebungsvorbereitung
Erfordert Python 3.10–3.12.
git clone https://github.com/xiaoxinbuxingyeyuan/MODULAR-RAG-MCP-SERVER.git
cd MODULAR-RAG-MCP-SERVER
python -m venv .venvWindows PowerShell:
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"macOS / Linux:
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"
pyproject.tomlhat die direkt verwendeten Abhängigkeitsversionen für die aktuelle Verifizierung dieses Projekts festgelegt. Beim Upgrade von MCP, Ragas, LangChain oder Speicherkomponenten sollte separat aktualisiert und die Offline- und Online-Regression erneut ausgeführt werden.
2. Provider konfigurieren
Bearbeiten Sie config/settings.yaml, um LLM, Embedding, Vision-LLM, VectorStore, Reranker und Bewertungs-Backend zu konfigurieren. API-Schlüssel sollten über sichere Konfigurationsinjektion bereitgestellt und nicht in das Repository committet werden.
Wenn kein lokaler Modellservice verfügbar ist, können nicht notwendige LLM-Erweiterungen und Reranking deaktiviert werden, um die Basiskette ohne externe Dienste zu verifizieren.
3. Dokumente aufnehmen
python scripts/ingest.py \
--path tests/fixtures/sample_documents/simple.pdf \
--collection admissions_knowledgeVerzeichnisaufnahme:
python scripts/ingest.py \
--path tests/fixtures/sample_documents/ \
--collection admissions_knowledgeAufnahme mit Studien-Manifest:
python scripts/ingest.py \
--path examples/documents/synthetic/ \
--collection admissions_knowledge \
--manifest examples/admissions_manifest.example.jsonlDas Manifest verwendet UTF-8-JSONL, jede Zeile entspricht einem PDF. Relative document_path werden relativ zum Manifest-Verzeichnis aufgelöst; Pflichtfelder sind document_path, title, country und source_type. Optionale Felder umfassen institution, program, degree_level, intake, application_round, published_at, valid_until, language, tags und access_scope. Ein vollständiges Beispiel finden Sie in examples/admissions_manifest.example.jsonl.
Nach Übergabe eines Manifests muss jedes aufzunehmende PDF eine eindeutige Übereinstimmung haben. Unbekannte Felder, doppelte Pfade, ungültige Enumerationen und invertierte Daten führen vor dem Schreiben in den Speicher zu einem Fehler. Manifest-Metadaten werden vom Dokument auf Chunk- und Chroma-Einträge übertragen; LLM-Titel und -Tags auf Chunk-Ebene überschreiben nicht document_title und business_tags.
Die Inkrementelle Prüfung vergleicht sowohl den PDF-SHA256 als auch den SHA256 der normalisierten Geschäftsmetadaten: Nur wenn beide unverändert sind, wird übersprungen; eine reine Manifest-Änderung löst automatisch eine erneute Aufnahme aus und überschreibt die Metadaten der stabilen Chunk-IDs. Bei PDF-Inhaltsänderungen schreibt das System zuerst die neue Version und bereinigt dann Chroma-Chunks, Bilder und alte Ingestionsprotokolle anhand der alten doc_hash; BM25 ersetzt Postings über das stabile Quellenpfad-Präfix. Alte SQLite-Ingestionshistorien erhalten automatisch das Feld metadata_hash, ohne manuelle Migration. --force kann weiterhin für expliziten Wiederaufbau verwendet werden, ist aber nicht mehr erforderlich, um Manifest-Updates anzuwenden.
Das Repository enthält drei vollständig fiktive, personenbezogene Datenfreie Geschäftsbeispiele, die aktuelle Materialien, fehlende Gültigkeitsdaten und abgelaufene Materialien abdecken; der Kursleitfaden enthält ein Flussdiagramm zur Verifizierung der multimodalen Kette. Zum Neugenerieren der Beispiel-PDFs führen Sie aus:
python examples/generate_synthetic_admissions_pdfs.py4. Befehlszeilenabfrage
python scripts/query.py \
--query "申请材料需要包含哪些证明?" \
--collection admissions_knowledge \
--verbose5. Dashboard starten
python scripts/start_dashboard.pyStandardadresse ist http://localhost:8501.
6. MCP-Server starten
python -m src.mcp_server.serverDie Konfigurationsformate verschiedener MCP-Clients unterscheiden sich geringfügig; die Kernprozesskonfiguration lautet:
{
"command": "<project>/.venv/Scripts/python.exe",
"args": ["-m", "src.mcp_server.server"],
"cwd": "<project>"
}Unter macOS / Linux ersetzen Sie den Python-Pfad durch <project>/.venv/bin/python.
7. Bewertung ausführen
python scripts/evaluate.py \
--test-set examples/admissions_golden_test_set.json \
--collection admissions_knowledgeOhne externe Retrieval-Umgebung können Sie ausführen:
python scripts/evaluate.py --no-searchQualitätssicherung
Das Projekt verwendet eine dreistufige Teststruktur:
Unit: Datenverträge, Algorithmen, Factory, Tool-Handler und Speicheradapter.
Integration: Kombinationsverhalten von Ingestion, Hybrid-Retrieval, MCP, Provider und Trace.
E2E: CLI-Ingestion, MCP-Client, Dashboard-Smoke und Recall-Regression.
python -m pytest tests/unit
python -m pytest tests/integration
python -m pytest tests/e2e
python -m pytestDie obigen Befehle überspringen standardmäßig alle als online markierten Testfälle und rufen keine echten Provider auf. Wenn echte Azure-, OpenAI- oder Ollama-Dienste benötigt werden, führen Sie in einer Umgebung mit entsprechenden Anmeldeinformationen und Diensten explizit aus:
python -m pytest --run-online -m onlineOpenAI-kompatible Gateways können über OPENAI_API_KEY, OPENAI_BASE_URL und OPENAI_MODEL injiziert werden, ohne die Repository-Konfiguration zu ändern oder Anmeldeinformationen zu committen. Nicht konfigurierte Provider-Testfälle sollten übersprungen bleiben.
Um nur zu prüfen, ob Online-Testfälle korrekt klassifiziert sind, ohne Aufrufe auszulösen, führen Sie python -m pytest --collect-only -m online aus. Offline- und Online-Ergebnisse sollten getrennt aufgezeichnet werden; --run-online hebt nur die Überspringungseinschränkung auf und ersetzt nicht die Provider-Konfiguration.
Die Bewertungsebene unterstützt weiterhin Custom Evaluator und Ragas. Das geschäftliche Golden Test Set erfasst zusätzlich kombinierte Filter, Geschäftsdaten, Ablaufrichtlinien, erwartete Quellen und Referenzantworten; die Offline-Geschäftsabnahme prüft sowohl diese Felder als auch das Zeitverhalten des MCP-Geschäftsadapters. Die allgemeine Bewertungsschnittstelle und das ursprüngliche Golden Test Set wurden nicht geändert.
Sicherheits- und Betriebsbeschränkungen
Standardmäßig werden lokaler Stdio und lokaler Speicher verwendet; keine Netzwerkports werden geöffnet.
API-Schlüssel und persönliche Studierendendaten werden nicht in Protokollen, Traces, Test-Fixtures oder Git-Verlauf gespeichert.
Geschäftsmaterialien müssen vor der Aufnahme in die Wissensdatenbank autorisiert und datenschutzrechtlich anonymisiert werden.
Retrieval-Ergebnisse müssen Quellenangaben enthalten; wenn keine zuverlässige Grundlage gefunden wird, sollten leere Ergebnisse oder Hinweise auf manuelle Prüfung zurückgegeben werden.
Hochschulanforderungen sind zeitabhängig; das Geschäftstool schließt standardmäßig Dokumente aus, deren
valid_untilüberschritten ist, und weist explizit auf fehlende Gültigkeitsdaten hin, aber Berater müssen dennoch offizielle Quellen überprüfen.Die aktuelle Architektur ist ein Einzelbenutzer-Lokaldienst ohne Authentifizierung, Berechtigungsisolierung oder Mandantenfähigkeit.
Aktueller Stand und Entwicklungsplan
Der bestehende main-Zweig verfügt bereits über ein vollständiges allgemeines RAG-, MCP-, Dashboard-, Trace- und Bewertungsgerüst. Die Studienbereichsanpassung wird inkrementell vorangetrieben und darf bestehende technische Fähigkeiten nicht entfernen oder vereinfachen.
Phase | Status | Inhalt |
Allgemeine RAG-Basis | Vorhanden | Ingestion, Hybrid-Retrieval, Reranking, Multimodal, Mehrfachspeicher, Trace, Bewertung und dreistufige Tests |
Geschäftsdokumentation | Abgeschlossen | Öffentliche Erzählung, Systemgrenzen und technische Spezifikation auf internes Berater-Wissensabfrageszenario umgestellt |
Stabilisierung der Abhängigkeitsbasis | Abgeschlossen | Verifizierte direkte Abhängigkeitsversionen festgelegt, echte Provider-Tests standardmäßig übersprungen und expliziter Online-Einstieg bereitgestellt |
Studien-Dokumentenliste | Abgeschlossen | JSONL-Schema, strenge Validierung, Pfadabgleich, CLI-Ingestionseinstieg und Metadatenübertragung auf Chunk/Chroma |
Inkrementelle Metadatenaktualisierung | Abgeschlossen | PDF-SHA256 + normalisierte Metadaten-SHA256, SQLite-Automigration und koordinierter Ersatz bei Inhaltsversionen |
Geschäfts-MCP-Tool | Abgeschlossen | Originale drei Tools beibehalten, |
Dashboard-Geschäftsfelder | Abgeschlossen | Sechs-Seiten-Struktur beibehalten, nur in Overview und Data Browser Geschäftsmetadaten, kombinierte Filter und Zeitstatistiken hinzugefügt |
Synthetisches Geschäftsbewertungsset | Abgeschlossen | Drei fiktive PDFs, regenerierbares Skript, Manifest und sieben Arten von Golden-Testfällen |
Geschäftsregressionsabnahme | Abgeschlossen | Neue Offline-Fixtures, Zeit-, kombinierte Filter- und Bildextraktions-Smoke; Kern-Retrieval-Kette unverändert |
Jede Phase muss die vollständige PDF-Ingestion-Kette, Dense + BM25, RRF, Rerank, Multimodal, Mehrfachspeicher-Koordination, Inkrementelle und Löschung, die ursprünglichen drei MCP-Tools, das Sechs-Seiten-Dashboard, Dual-Ketten-Traces, Custom + Ragas, dreistufige Tests und alle plugbaren Schnittstellen beibehalten.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityAmaintenanceLocal end-to-end RAG system for agentic code editors, exposing retrieval-augmented generation via MCP to any compatible client.331MIT
- FlicenseNot gradedqualityCmaintenanceProvides RAG-based knowledge retrieval and document management as MCP tools, supporting hybrid search, reranking, and retrieval process visualization.
- FlicenseNot gradedqualityBmaintenanceA pluggable, observable modular RAG service framework that exposes tools via MCP protocol for AI assistants, supporting hybrid search, reranking, multi-modal processing, and evaluation.
- AlicenseNot gradedqualityAmaintenanceA local-first RAG engine that ingests documents (PDF, Markdown, images, etc.) and provides hybrid search, reranking, and LLM answer synthesis via MCP for AI agent integration.1MIT
Related MCP Connectors
Multi-engine search for AI agents. Trust scoring, local corpus, MCP-native. Self-hostable, BYOK.
Apple Developer Documentation with Semantic Search, RAG, and AI reranking for MCP clients
Search your knowledge bases from any AI assistant using hybrid RAG.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/xiaoxinbuxingyeyuan/MODULAR-RAG-MCP-SERVER'
If you have feedback or need assistance with the MCP directory API, please join our Discord server