Personal Knowledge-Base MCP Server
Personal Knowledge-Base MCP Server
Ein Personal Knowledge-Base MCP Server, der semantische Suche über eine studenteneigene Dokumentsammlung unter Verwendung von Model Context Protocol (MCP), Gemini-Embeddings und Qdrant bietet.
Projektübersicht
Dieses Projekt stellt eine persönliche Wissensdatenbank als aufrufbare MCP-Tools bereit.
Anstatt auf Schlüsselwortabgleich zu setzen, konvertiert das System Benutzeranfragen in Vektor-Embeddings und ruft semantisch relevante Dokumentabschnitte aus Qdrant ab.
Related MCP server: genai-lab
Architektur
User / MCP Client
|
v
MCP Server (FastMCP)
|
+----------------------+
| |
v v
search_notes() get_document()
|
v
Gemini Embedding API
|
v
Qdrant Vector Database
|
v
Ranked Chunks
|
v
Source + Page + Score + Text
## Features
* PDF document ingestion
* Page-by-page text extraction
* Recursive text chunking
* Gemini `gemini-embedding-001` embeddings
* Qdrant vector storage
* Semantic similarity search
* Source and page citations
* Confidence threshold for low-relevance queries
* Full-document retrieval
* Indexed-source listing
* MCP Inspector support
## MCP Tools
### `search_notes`
Searches the knowledge base using semantic similarity.
Arguments:
* `query`: search question or topic
* `top_k`: maximum number of results
Returns:
* similarity score
* source filename
* page number
* relevant text chunk
### `get_document`
Returns the complete text of an indexed PDF document.
Argument:
* `doc_id`: document filename
Example:
```text
Complex_Variables_Project_Report.pdflist_source_documents
Listet alle indizierten Quelldokumente auf.
Beispielausgabe:
1. Complex_Variables_Project_Report.pdfProjektstruktur
Personal-Knowledge-MCP/
├── documents/
│ └── Complex_Variables_Project_Report.pdf
├── services/
│ ├── chunking.py
│ ├── embedding.py
│ ├── pdf_reader.py
│ └── qdrant_service.py
├── .env
├── .gitignore
├── evaluation.py
├── ingest.py
├── requirements.txt
└── server.pyEinrichtung
1. Virtuelle Umgebung erstellen und aktivieren
python -m venv .venv
.venv\Scripts\Activate.ps12. Abhängigkeiten installieren
pip install -r requirements.txt3. Gemini-API-Schlüssel konfigurieren
Erstelle eine .env-Datei im Projektstammverzeichnis:
GEMINI_API_KEY=your_api_key_here.env darf niemals in Git committet werden.
4. Qdrant starten
Das Projekt verwendet lokales Qdrant unter:
http://localhost:6333Beispiel-Docker-Befehl:
docker run -d --name qdrant -p 6333:6333 -p 6334:6334 qdrant/qdrantDokumentenaufnahme
Lege das PDF in den folgenden Ordner:
documents/Führe aus:
python ingest.pyDie Aufnahmepipeline führt Folgendes aus:
PDF
↓
Page extraction
↓
Chunking
↓
Gemini embeddings
↓
Qdrant storageJeder gespeicherte Abschnitt enthält:
text
page
sourceDen MCP-Server ausführen
Starte den MCP Inspector:
mcp dev server.pyDer MCP-Server verwendet STDIO-Transport.
Verfügbare Tools:
search_notes
get_document
list_source_documentsRetrieval-Bewertung
Ein kleiner Evaluierungssatz von fünf Abfragen wurde verwendet, um zu prüfen, ob mindestens eine erwartete relevante Seite unter den drei besten abgerufenen Ergebnissen erschien.
Evaluierungsergebnis:
Tests: 5
Successful hits: 5
Hit@3: 100%Beispiel-Evaluierungsabfragen waren:
Was ist eine komplexe Variable?
Was sind die Cauchy-Riemann-Gleichungen?
Wie hilft die Laplace-Transformation bei technischen Systemen?
Was ist der Unterschied zwischen Laplace- und Fourier-Transformationen?
Wie wird FFT zur Rauschunterdrückung bei Audio verwendet?
Konfidenzfilterung
Das Suchwerkzeug verwendet einen anfänglichen Ähnlichkeitsschwellenwert von:
0.60Beispielsweise erzeugten relevante Abfragen Werte um:
0.79
0.76
0.75während eine nicht verwandte Abfrage Werte um:
0.52Daher werden Ergebnisse mit niedriger Punktzahl herausgefiltert und das Tool gibt Folgendes zurück:
No confident match found.Technologien
Python
FastMCP
Model Context Protocol (MCP)
Google Gemini Embeddings
Qdrant
PyMuPDF
LangChain Text Splitters
Docker
MCP Inspector
Aktuelle Wissensquelle
Das aktuelle Demonstrationskorpus ist:
Complex_Variables_Project_Report.pdfDas Dokument enthält 7 Seiten und wurde in 30 Abschnitte für die indizierte Sammlung personal_knowledge aufgeteilt.
Sicherheit
API-Schlüssel werden in
.envgespeichert.envwird über.gitignoreausgeschlossenGeheimnisse sollten niemals in die Versionskontrolle committet werden
Zukünftige Verbesserungen
Unterstützung für Markdown- und TXT-Dokumente
Hinzufügen persistenter IDs auf Dokumentebene
Verbesserung der Behandlung doppelter Abschnitte
Erweitern des Evaluierungsdatensatzes
Hinzufügen weiterer Retrieval-Metriken
Unterstützung mehrerer Dokumentsammlungen
Hinzufügen optionaler Qdrant-Cloud-Bereitstellung
This server cannot be deployed
Maintenance
Related MCP Connectors
Personal knowledge base MCP server with semantic search, auto-categorization, metadata extraction
The Needle MCP server enables semantic search on documents stored in files like PDFs, DOCX, and XLSX by connecting AI applications to external data sources. It provides capabilities to create and manage document collections, perform natural language searches on stored content, and retrieve relevant information without requiring exact keyword matches.
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMCP server that indexes a knowledge base into Chroma and provides search tools for retrieving document fragments via vector embeddings.-
- FlicenseNot gradedqualityCmaintenanceMCP server providing RAG tools (search_notes, answer_from_notes) and resources for grounded answers over a local knowledge base.-
- AlicenseNot gradedqualityAmaintenanceA local knowledge base MCP server that enables retrieval and evidence-based Q&A over Obsidian Markdown notes, with high-recall embedding search, chunked indexing, hybrid retrieval, and three STDIO MCP tools for agent-driven recollection and quality-gated recall.Academic Free v1.1
- FlicenseNot gradedqualityBmaintenanceMCP server for a shared Postgres-backed knowledge base with hybrid retrieval and agentic RAG, enabling coding agents to upload, search, and ask questions over documents with cited answers.-