fayna-rag-mcp
Officialfayna-rag-mcp — локальная база знаний с RAG и MCP
Разработано Fayna Digital Автор: Volodymyr Shevchenko
Проблема: команда накапливает документацию (политики, руководства, заметки) в файлах и быстро теряет доступ к ней на естественном языке — поиск по названию файла или Ctrl+F не масштабируется, а отправка внутренних документов в облачный LLM-сервис не всегда приемлема с точки зрения конфиденциальности.
Решение: локальный пайплайн RAG (FAISS + мультиязычные эмбеддинги) на базе локального LLM (Ollama) — а тот же поисковик/Q&A предоставляется как сервер MCP, чтобы им мог воспользоваться любой MCP-клиент (Claude Desktop/Code и т. п.) или внешний автоматизированный workflow через простые REST-маршруты. Никакие данные не покидают машину, на которой это работает.
Результат: пять инструментов MCP и четыре REST-маршрута для семантического поиска, RAG Q&A с источниками, чтения документов и офлайн-каталогизации — готовые к подключению к Claude или n8n за несколько минут, без облачных зависимостей.
Возможности
Инструмент (MCP) | Назначение |
| чтение полного файла из базы (с защитой от path-traversal в пределах |
| список всех документов ( |
| семантический поиск FAISS → топ-релевантные чанки |
| ответ RAG: FAISS-retrieve + Ollama LLM, с источниками |
| read-only каталог тегов документов (тема/тип/язык/аудитория) |
REST-маршрут | Body | Что делает |
|
| FAISS-поиск → |
|
| ответ RAG → |
|
| точный поиск подстроки по |
|
| гибрид: транслитерация кириллица↔латиница + token-match, отбор по семантике |
Related MCP server: OpenLMlib
Стек
Python 3.10+ · FAISS (faiss-cpu) · sentence-transformers · tiktoken ·
Ollama · FastMCP · Tesseract/poppler/Whisper для мультиформатного ингеста ·
Docker.
Пайплайн RAG
docs/ → load (.txt/.md/.pdf/.docx) → chunk (tiktoken) → embed (mpnet) → FAISS → retrieve → Ollama → answer + sourcesЧанкинг — по токенам
tiktoken(cl100k_base), не по символам. По умолчаниюCHUNK_SIZE=700токенов,CHUNK_OVERLAP=100токенов.Эмбеддинги:
paraphrase-multilingual-mpnet-base-v2— мультиязычная модель (UA/PL/EN/RU и другие), чтобы поиск работал независимо от языка запроса.LLM: любая модель Ollama, по умолчанию
qwen2.5:7b.Индекс: FAISS
IndexFlatIP(косинусная близость),TOP_K=5.
Быстрый старт
pip install -r src/requirements.txt
# Przykład: demo-korpus na kilka dokumentów (sample-docs/)
export DOCUMENTS_DIR=./sample-docs
python -m src.main build-index # → src/index/index.faiss + chunks.pkl
# Interaktywne Q&A (CLI)
python -m src.main
# Serwer MCP (transport z env MCP_TRANSPORT: stdio|http)
python -m src.mcp.serverТесты:
pip install -r tests/requirements-dev.txt
pytest -qDocker
docker compose up -dЗначения по умолчанию в docker-compose.yml/Dockerfile рассчитаны на Ollama,
работающую на хосте (через host.docker.internal); настройте OLLAMA_URL под
свою сеть (bridge-адрес на Linux, отдельный контейнер Ollama и т.п.).
Конфигурация (src/config.py, всё через env)
Env | По умолчанию | Описание |
|
| корень базы знаний |
|
| модель эмбеддингов |
|
| LLM для ответов RAG |
|
| конечная точка Ollama |
|
| токены ( |
|
| сколько чанков возвращает retrieve |
|
|
|
|
| адрес при |
Подключение к MCP-клиенту (например, Claude Desktop) — через его конфигурацию MCP-серверов,
командой python -m src.mcp.server (stdio) или URL контейнера (http).
Структура
src/
├── config.py # wszystkie env-zmienne + domyślne
├── main.py # CLI: build-index | interaktywne Q&A
├── assistant.py # CompanyKBAssistant (LLM decyduje czy wołać MCP-toolki)
├── catalog.py # offline-klasyfikacja dokumentów przez Ollama → JSON+HTML
├── ingest.py # multi-formatowy ingest: OCR skanów, vision-opis diagramów, Whisper-transkrypcja
├── rag/
│ ├── ingest.py # load_document (.txt/.md/.pdf/.docx)
│ ├── chunk.py # chunk_text (tiktoken cl100k_base, overlap)
│ ├── embed.py # embed_chunks (sentence-transformers)
│ ├── build_index.py # build_index → FAISS + pickle
│ └── query.py # retrieve / build_prompt / ask
└── mcp/
├── server.py # FastMCP: 5 MCP-toolków + 4 trasy REST
└── client.py # MCPClient (JSON-RPC przez subprocess)Мультиформатный ингест (OCR сканов через Tesseract, описание рисунков/схем через vision-модель, транскрипция аудио/видео через Whisper) — отдельный, более тяжёлый по зависимостям путь, который не требуется для базового текстового корпуса выше.
Лицензия
MIT — см. LICENSE. © Fayna Digital.
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
- AlicenseNot gradedqualityAmaintenanceA headless local knowledge library and RAG substrate that enables LLM clients to search, retrieve chunks, and list documentation packs through read-only MCP tools.MIT
- AlicenseNot gradedqualityAmaintenanceProvides AI assistants with a local knowledge base and research library, enabling semantic and full-text retrieval, memory persistence, and multi-agent collaboration via 58 MCP tools.2MIT
- AlicenseNot gradedqualityDmaintenanceA knowledge base MCP server backed by Qdrant vector database with local embeddings for semantic search and document management.51ISC
- FlicenseNot gradedqualityCmaintenanceEnables users to build and query a private knowledge base by uploading documents, which are embedded and stored locally, then accessible via MCP for semantic search and retrieval.
Related MCP Connectors
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
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/fayna-digital/fayna-rag-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server