local-rag-mcp
A privacy-preserving local RAG system integrated with MCP, enabling natural language queries over ingested documents and a SQLite database through vector search and local database tools.
README
š Privacy-Preserving Local RAG with MCP Integration
A production-grade, fully local Retrieval-Augmented Generation (RAG) system integrated with the Model Context Protocol (MCP). Zero data ever leaves your machine.
Architecture
User CLI ā Agent Orchestrator ā MCP Client (stdio)
ā
āāāāāāāāāāāāāāāāāāāāāāāā
ā MCP Server ā
ā āāāāāāāāāāāāāāāāāā ā
ā ā vector_search ā ā
ā ā local_db_query ā ā
ā āāāāāāāāāāāāāāāāāā ā
āāāāāāāāāāāāāāāāāāāāāāāā
ā ā
Qdrant DB SQLite DB
(Docker) (employees)
Tech Stack
| Component | Technology |
|---|---|
| LLM Inference | Ollama (Llama 3) |
| Embeddings | Ollama (nomic-embed-text, 768d) |
| Vector Store | Qdrant (Docker) |
| Re-ranking | Cross-Encoder (ms-marco-MiniLM-L-6-v2) |
| MCP Server | FastMCP (Python SDK v1.x) |
| Chunking | SemanticChunker (LangChain Experimental) |
| Config | Pydantic Settings |
| Logging | structlog (JSON structured) |
Prerequisites
- Python 3.11+
- Docker & Docker Compose
- Ollama installed and running
- At least 8GB RAM (16GB recommended)
Quick Start
1. Clone & Configure
git clone <repo-url>
cd local-rag-mcp
cp .env.example .env
2. Start Qdrant
docker compose up -d
# Verify: open http://localhost:6333/dashboard
3. Pull Ollama Models
# On Linux/macOS:
bash scripts/pull_models.sh
# On Windows (PowerShell):
ollama pull llama3
ollama pull nomic-embed-text
4. Create Python Environment
python -m venv .venv
# Linux/macOS:
source .venv/bin/activate
# Windows:
.venv\Scripts\activate
pip install -r requirements.txt
5. Seed the SQLite Database
python scripts/seed_database.py
6. Ingest Documents
python main.py
# Inside the REPL:
> /ingest data/documents
7. Run the Agent
python main.py
> What does our documentation say about authentication?
> List all employees in the Engineering department
> How many engineers earn above the department average?
Project Structure
local-rag-mcp/
āāā docker-compose.yml # Qdrant container
āāā .env.example # Config template
āāā requirements.txt # Pinned deps
āāā pyproject.toml # Project metadata & tool config
ā
āāā config/
ā āāā settings.py # Centralized Pydantic config
ā
āāā data/
ā āāā documents/ # Drop PDFs/Markdown here
ā āāā sqlite/
ā āāā employees.db # Auto-seeded SQLite DB
ā
āāā scripts/
ā āāā seed_database.py # Seeds employee DB
ā āāā pull_models.sh # Ollama model helper
ā
āāā src/
ā āāā ingestion/ # PDF/MD loader, semantic chunker, embedder
ā āāā mcp_server/ # FastMCP server + vector_search + local_db_query tools
ā āāā agent/ # Agent loop + HyDE
ā āāā utils/ # Structured logging
ā
āāā tests/ # Pytest test suite
āāā main.py # CLI REPL entry point
CLI Commands
| Command | Description |
|---|---|
/ingest <path> |
Ingest all PDFs/Markdown from directory |
/hyde on|off |
Toggle HyDE query enhancement |
/help |
Show available commands |
/quit |
Exit the application |
| Any other text | Ask the agent a question |
Configuration
All settings are controlled via .env. Key variables:
| Variable | Default | Description |
|---|---|---|
OLLAMA_LLM_MODEL |
llama3 |
LLM for generation & tool calling |
OLLAMA_EMBEDDING_MODEL |
nomic-embed-text |
Embedding model |
QDRANT_COLLECTION_NAME |
rag_documents |
Qdrant collection name |
HYDE_ENABLED |
true |
Enable HyDE query enhancement |
RERANKER_TOP_K |
5 |
Number of final results after re-ranking |
Running Tests
pytest tests/ -v
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.