fayna-rag-mcp
Officialfayna-rag-mcp — base de conocimiento local con RAG y MCP
Desarrollado por Fayna Digital Autor: Volodymyr Shevchenko
Problema: el equipo acumula documentación (políticas, manuales, notas) en archivos y pierde rápidamente el acceso a ella en lenguaje natural — la búsqueda por nombre de archivo o Ctrl+F no escala, y enviar documentos internos a un servicio LLM en la nube no siempre es aceptable por privacidad.
Solución: un pipeline RAG local (FAISS + embeddings multilingües) sobre un LLM local (Ollama) — y ese mismo buscador/Q&A expuesto como servidor MCP, para que pueda usarlo cualquier cliente MCP (Claude Desktop/Code, etc.) o un flujo de trabajo externo automatizado mediante rutas REST simples. Ningún dato sale de la máquina donde se ejecuta.
Resultado: cinco herramientas MCP y cuatro rutas REST para búsqueda semántica, Q&A RAG con fuentes, lectura de documentos y catalogación offline — listas para conectar a Claude o n8n en minutos, sin dependencias en la nube.
Capacidades
Herramienta (MCP) | Propósito |
| lectura del archivo completo desde la base (con protección contra path-traversal dentro de |
| lista de todos los documentos ( |
| búsqueda semántica FAISS → fragmentos más relevantes |
| respuesta RAG: recuperación FAISS + LLM Ollama, con fuentes |
| catálogo de solo lectura de etiquetas de documentos (tema/tipo/idioma/audiencia) |
Ruta REST | Body | Qué hace |
|
| recuperación FAISS → |
|
| respuesta RAG → |
|
| búsqueda exacta de subcadena en |
|
| híbrido: transliteración cirílico↔latino + coincidencia de tokens, selección por semántica |
Related MCP server: OpenLMlib
Stack
Python 3.10+ · FAISS (faiss-cpu) · sentence-transformers · tiktoken ·
Ollama · FastMCP · Tesseract/poppler/Whisper para ingesta multi-formato ·
Docker.
Pipeline RAG
docs/ → load (.txt/.md/.pdf/.docx) → chunk (tiktoken) → embed (mpnet) → FAISS → retrieve → Ollama → answer + sourcesFragmentación — por tokens
tiktoken(cl100k_base), no por caracteres. Por defectoCHUNK_SIZE=700tokens,CHUNK_OVERLAP=100tokens.Embeddings:
paraphrase-multilingual-mpnet-base-v2— modelo multilingüe (UA/PL/EN/RU y otros), para que la búsqueda funcione independientemente del idioma de la consulta.LLM: cualquier modelo de Ollama, por defecto
qwen2.5:7b.Índice: FAISS
IndexFlatIP(similitud coseno),TOP_K=5.
Inicio rápido
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.serverPruebas:
pip install -r tests/requirements-dev.txt
pytest -qDocker
docker compose up -dLos valores por defecto en docker-compose.yml/Dockerfile están diseñados para Ollama
ejecutándose en el host (a través de host.docker.internal); ajusta OLLAMA_URL a
tu propia red (dirección bridge en Linux, contenedor Ollama separado, etc.).
Configuración (src/config.py, todo mediante env)
Env | Por defecto | Descripción |
|
| raíz de la base de conocimiento |
|
| modelo de embeddings |
|
| LLM para respuestas RAG |
|
| endpoint de Ollama |
|
| tokens ( |
|
| cuántos fragmentos devuelve la recuperación |
|
|
|
|
| dirección con |
Conexión a un cliente MCP (p. ej. Claude Code) — mediante su configuración de servidores MCP,
con el comando python -m src.mcp.server (stdio) o la URL del contenedor (http).
Estructura
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)Ingesta multi-formato (OCR de escaneos con Tesseract, descripción de dibujos/esquemas con modelo de visión, transcripción de audio/vídeo con Whisper) — una ruta separada, más pesada en dependencias, innecesaria para el corpus de texto básico anterior.
Licencia
MIT — ver 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