Personal Knowledge-Base MCP Server
Personal Knowledge-Base MCP Server
Personal Knowledge-Base MCP Server, обеспечивающий семантический поиск по коллекции документов, принадлежащей студенту, с использованием Model Context Protocol (MCP), эмбеддингов Gemini и Qdrant.
Обзор проекта
Этот проект предоставляет личную базу знаний в виде вызываемых инструментов MCP.
Вместо поиска по ключевым словам система преобразует запросы пользователей в векторные эмбеддинги и извлекает семантически релевантные фрагменты документов из Qdrant.
Related MCP server: genai-lab
Архитектура
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
Перечисляет все индексированные исходные документы.
Пример вывода:
1. Complex_Variables_Project_Report.pdfСтруктура проекта
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.pyНастройка
1. Создайте и активируйте виртуальное окружение
python -m venv .venv
.venv\Scripts\Activate.ps12. Установите зависимости
pip install -r requirements.txt3. Настройте API-ключ Gemini
Создайте файл .env в корне проекта:
GEMINI_API_KEY=your_api_key_hereНикогда не коммитьте .env в Git.
4. Запустите Qdrant
Проект использует локальный Qdrant по адресу:
http://localhost:6333Пример команды Docker:
docker run -d --name qdrant -p 6333:6333 -p 6334:6334 qdrant/qdrantЗагрузка документов
Поместите PDF внутрь:
documents/Запустите:
python ingest.pyКонвейер загрузки выполняет:
PDF
↓
Page extraction
↓
Chunking
↓
Gemini embeddings
↓
Qdrant storageКаждый сохранённый фрагмент содержит:
text
page
sourceЗапуск MCP-сервера
Запустите MCP Inspector:
mcp dev server.pyMCP-сервер использует транспорт STDIO.
Доступные инструменты:
search_notes
get_document
list_source_documentsОценка поиска
Небольшой оценочный набор из пяти запросов использовался для проверки того, появилась ли хотя бы одна ожидаемая релевантная страница среди первых трёх полученных результатов.
Результат оценки:
Tests: 5
Successful hits: 5
Hit@3: 100%Примеры оценочных запросов:
Что такое комплексная переменная?
Что такое уравнения Коши-Римана?
Как преобразование Лапласа помогает инженерным системам?
В чём разница между преобразованиями Лапласа и Фурье?
Как БПФ используется для подавления шума в аудио?
Фильтрация по уверенности
Инструмент поиска использует начальный порог сходства:
0.60Например, релевантные запросы давали оценки около:
0.79
0.76
0.75в то время как несвязанный запрос давал оценки около:
0.52Поэтому результаты с низкими оценками отфильтровываются, и инструмент возвращает:
No confident match found.Технологии
Python
FastMCP
Model Context Protocol (MCP)
Google Gemini Embeddings
Qdrant
PyMuPDF
LangChain Text Splitters
Docker
MCP Inspector
Текущий источник знаний
Текущий демонстрационный корпус:
Complex_Variables_Project_Report.pdfДокумент содержит 7 страниц и был разбит на 30 фрагментов для индексированной коллекции personal_knowledge.
Безопасность
API-ключи хранятся в
.env.envисключён с помощью.gitignoreСекреты никогда не должны попадать в систему контроля версий
Будущие улучшения
Поддерживать документы Markdown и TXT
Добавить постоянные идентификаторы на уровне документов
Улучшить обработку дублирующихся фрагментов
Расширить набор оценочных данных
Добавить больше метрик поиска
Поддерживать несколько коллекций документов
Добавить опциональное развертывание Qdrant Cloud
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.-