Easy RAG
FreeNot checkedAn MCP server for RAG using Qdrant that automatically indexes documents from directories and generates search tools for each collection.
About
An MCP server for RAG using Qdrant that automatically indexes documents from directories and generates search tools for each collection.
README
A high-performance Model Context Protocol (MCP) server for RAG using Qdrant. Built for UV/UVX with CPU/GPU support and HTTP transport.
✨ Features
- 🔍 Automatic Document Indexing - Scan directories and index all documents
- 📁 Smart Organization - Each subdirectory becomes its own searchable dataset
- 🛠️ Dynamic MCP Tools - Auto-generated tools for each collection
- 📄 Multi-Format Support - PDF, DOCX, CSV, XLSX, TXT, Markdown, and more
- ⚡ GPU Acceleration - Optional CUDA/MPS support for faster embeddings
- 🌐 HTTP Transport - Run as HTTP server or stdio
- 📦 UV/UVX Ready - Install and run with a single command
- 📊 Verbose Logging - Detailed query tracking and monitoring
🚀 Quick Start
Install with UVX (Recommended)
Run directly from GitHub without installation:
uvx --from git+https://github.com/yourusername/easy_mcp_rag.git easy_mcp_rag --data-dir ./documents
Install with UV
# Install from GitHub
uv pip install git+https://github.com/yourusername/easy_mcp_rag.git
# Or clone and install locally
git clone https://github.com/yourusername/easy_mcp_rag.git
cd easy_mcp_rag
uv pip install -e .
📋 Prerequisites
- Start Qdrant (using Docker):
docker run -p 6333:6333 qdrant/qdrant
- Prepare your documents:
documents/
├── legal_docs/
│ ├── contract.pdf
│ └── terms.docx
├── research/
│ ├── paper1.pdf
│ └── notes.txt
└── data/
└── analysis.csv
💻 Usage
Basic Usage (stdio)
# With UVX
uvx --from git+https://github.com/yourusername/easy_mcp_rag.git easy_mcp_rag --data-dir ./documents
# With UV
uv run easy_mcp_rag --data-dir ./documents
# After installation
easy_mcp_rag --data-dir ./documents
HTTP Mode
easy_mcp_rag --data-dir ./documents --transport http --http-port 8000
GPU Acceleration
# Auto-detect GPU
easy_mcp_rag --data-dir ./documents --device auto
# Force CUDA (NVIDIA GPU)
easy_mcp_rag --data-dir ./documents --device cuda
# Force MPS (Apple Silicon)
easy_mcp_rag --data-dir ./documents --device mps
# Force CPU
easy_mcp_rag --data-dir ./documents --device cpu
Advanced Configuration
easy_mcp_rag \
--data-dir ./documents \
--qdrant-host localhost \
--qdrant-port 6333 \
--device cuda \
--embedding-model all-mpnet-base-v2 \
--chunk-size 1024 \
--chunk-overlap 100 \
--top-k 10 \
--batch-size 64 \
--verbose \
--force-reindex
🔧 Configuration Options
| Flag | Description | Default |
|---|---|---|
--data-dir |
Directory with document subdirectories | Required |
--qdrant-host |
Qdrant server host | localhost |
--qdrant-port |
Qdrant server port | 6333 |
--device |
Device: auto, cpu, cuda, mps | auto |
--transport |
Transport type: stdio, http | stdio |
--http-host |
HTTP server host | 0.0.0.0 |
--http-port |
HTTP server port | 8000 |
--embedding-model |
Sentence transformer model | all-MiniLM-L6-v2 |
--chunk-size |
Text chunk size (chars) | 512 |
--chunk-overlap |
Chunk overlap (chars) | 50 |
--top-k |
Results per search | 5 |
--batch-size |
Embedding batch size | 32 |
--verbose |
Enable verbose logging | False |
--log-level |
Log level | INFO |
--force-reindex |
Force reindex all docs | False |
🎯 MCP Client Configuration
Claude Desktop / Cline / Other MCP Clients
Add to your MCP client config:
{
"mcpServers": {
"rag-server": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/yourusername/easy_mcp_rag.git",
"easy_mcp_rag",
"--data-dir",
"/path/to/your/documents",
"--device",
"auto",
"--verbose"
]
}
}
}
With HTTP Transport
{
"mcpServers": {
"rag-server": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/yourusername/easy_mcp_rag.git",
"easy_mcp_rag",
"--data-dir",
"/path/to/your/documents",
"--transport",
"http",
"--http-port",
"8000"
]
}
}
}
🛠️ How It Works
- Scan - Discovers all subdirectories in your data directory
- Load - Extracts text from all supported file types
- Chunk - Splits documents into overlapping chunks
- Embed - Generates vector embeddings (CPU or GPU)
- Index - Stores in Qdrant (one collection per subdirectory)
- Serve - Creates MCP tools for each collection
Example
documents/
├── legal_docs/ → Creates "legal_docs_search" tool
├── research/ → Creates "research_search" tool
└── data/ → Creates "data_search" tool
📄 Supported File Types
| Category | Extensions |
|---|---|
| Text | .txt, .md, .py, .js, .json, .xml, .html, .css |
.pdf |
|
| Word | .docx, .doc |
| Spreadsheet | .csv, .xlsx, .xls |
🎨 Embedding Models
Choose based on your needs:
| Model | Dimensions | Speed | Quality | Use Case |
|---|---|---|---|---|
all-MiniLM-L6-v2 |
384 | ⚡⚡⚡ | Good | Default, fast |
all-MiniLM-L12-v2 |
384 | ⚡⚡ | Better | Balanced |
all-mpnet-base-v2 |
768 | ⚡ | Best | Quality |
🐛 Troubleshooting
Qdrant Connection Failed
# Check if Qdrant is running
curl http://localhost:6333
# Start Qdrant
docker run -p 6333:6333 qdrant/qdrant
GPU Not Detected
# Check PyTorch GPU support
python -c "import torch; print(torch.cuda.is_available())"
# Install with GPU support
uv pip install -e ".[gpu]"
Out of Memory
# Use smaller model
--embedding-model all-MiniLM-L6-v2
# Reduce batch size
--batch-size 16
# Use CPU
--device cpu
📊 Logging
Enable verbose logging to see detailed information:
easy_mcp_rag --data-dir ./documents --verbose
Output includes:
- ✅ Tool access events
- 🔍 Query details
- 📈 Result counts
- 🎯 Relevance scores
- 📁 Source files
Example:
2024-01-20 10:30:15 - easy_mcp_rag.server - INFO - Tool accessed: legal_docs_search
2024-01-20 10:30:15 - easy_mcp_rag.server - INFO - Query: contract terms
2024-01-20 10:30:15 - easy_mcp_rag.server - INFO - Results returned: 5
2024-01-20 10:30:15 - easy_mcp_rag.server - DEBUG - Result 1: score=0.8542
🔐 Security Notes
- HTTP mode exposes the server on the network
- Use
--http-host 127.0.0.1for local-only access - Consider authentication for production deployments
📝 Development
# Clone repository
git clone https://github.com/yourusername/easy_mcp_rag.git
cd easy_mcp_rag
# Install with dev dependencies
uv pip install -e ".[dev]"
# Run tests
pytest
# Format code
black src/
# Lint
ruff src/
🤝 Contributing
Contributions welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
📜 License
MIT License - see LICENSE file
🙏 Credits
Built with:
- MCP - Model Context Protocol
- Qdrant - Vector database
- Sentence Transformers - Embeddings
- UV - Package manager
Install Easy RAG in Claude Desktop, Claude Code & Cursor
unyly install easy-mcp-ragInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add easy-mcp-rag -- uvx --from git+https://github.com/justinlime/easy_mcp_rag easy_mcp_ragFAQ
Is Easy RAG MCP free?
Yes, Easy RAG MCP is free — one-click install via Unyly at no cost.
Does Easy RAG need an API key?
No, Easy RAG runs without API keys or environment variables.
Is Easy RAG hosted or self-hosted?
A hosted option is available: Unyly runs the server in the cloud, no local setup required.
How do I install Easy RAG in Claude Desktop, Claude Code or Cursor?
Open Easy RAG on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Fetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
by modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
by xuzexin-hzCompare Easy RAG with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All ai MCPs
